Hallo Community,
Es ist zwar für uns noch etwas länger hin um global auf Windows 11 umzusteigen aber Anfragen gibts dennoch bereits.
Gibt es seitens Matrix42 Bestrebungen einen Filter zu bauen um mit Windows 11 kompatible Geräte zu identifizieren?
Ich dachte bevor ich mich selbst dran versuche, vielleicht ist das ja bereits geplant weil es das mal mit Windows 10 und 8 gab.
(wobei ich mich nicht dran erinnere sie benutzt zu haben...)
Oder auch anders gefragt, hat das jemand selbstversucht die notwendigen Werte für CPU, TPM, UEFI und co einzusammeln und kann sagen wie erfolgreich dieses Unterfangen war?
Vielleicht habt ihr auch ein tool benutzt (drittanbieter wie whynotwin11 oder das Windows eigene Integrationsprüfungsprogramm)?
Viele Grüße aus Heidelberg
Windows 11 ready Filter
Re: Windows 11 ready Filter
Moin,
auch ich hatte damals beim Support nachgefragt. Das Ganze ist wohl in der Entwicklung, allerdings nicht so "einfach" wie vorher, da gewisse Faktoren vom Inventory nicht erfasst werden, wie z.B. TPM Version.
Was vermutlich funktioniert, wäre ein Paket welches die Informationen ausliest und in die Registry schreibt, welches man wiederrum abfangen kann.
auch ich hatte damals beim Support nachgefragt. Das Ganze ist wohl in der Entwicklung, allerdings nicht so "einfach" wie vorher, da gewisse Faktoren vom Inventory nicht erfasst werden, wie z.B. TPM Version.
Was vermutlich funktioniert, wäre ein Paket welches die Informationen ausliest und in die Registry schreibt, welches man wiederrum abfangen kann.
Re: Windows 11 ready Filter
Hallo
ein solcher Filter interessiert mich auch
Klar könnte man das als Paket abfragen und dann einsammeln, auserten, etc.
Ich finde aber das MX42 hier am zuge ist und das Inventory und Co anpasst um dann einen Filter default bereitzustellen.
Oder gibts hier schon News ?
Gruß
ein solcher Filter interessiert mich auch
Klar könnte man das als Paket abfragen und dann einsammeln, auserten, etc.
Ich finde aber das MX42 hier am zuge ist und das Inventory und Co anpasst um dann einen Filter default bereitzustellen.
Oder gibts hier schon News ?
Gruß
Re: Windows 11 ready Filter
ich habe hier ein Script gefunden, welches ich von LOGINvntory heruntergeladen habe.
Bisschen umbauen, sollte es für Empirum nutzbar sein oder wie seht Ihr das ?
Bisschen umbauen, sollte es für Empirum nutzbar sein oder wie seht Ihr das ?
Code: Select all
######################################################################################
# Win11 Compatibility
# -------------------
# This script fetches relevant values for checking Win11 compatibility from the
# LOGINventory database to set the custom properties for each Windows client device,
# which can later be queried whether a client is compatible or not.
#
# Adjust your personal DB settings if you are not using the default configuration.
# To do this, edit lines 34 to 35.
#
# You can set the name of the category and the name of the custom properties yourself.
#
# The 3 files with compatible processors can be updated from the Git Hub project
# "WhyNotWin11" - just download and replace if there are newer versions.
# https://github.com/rcmaehl/WhyNotWin11/tree/main/includes
#
# If you renamed the default device node, please check the name below so that the
# cd command finds a valid device node
#
#
# !!!!!!! IMPORTANT !!!!!!!!
#
# Use this script only whith the LOGINventory Powershell Console (PSC.exe) - just start
# and execute the script by entering the full path
# PS LI:\> C:\Temp\W11Check\W11Check.ps1
#
#
#
# Schmidt's LOGIN, 2021
# Script version: 9.0.0
######################################################################################
########################## Configuration #############################################
$SQLServer = ".\LOGINventory"
$SQLDBName = "LOGINventory9"
$uid ="sa"
$pwd = "LOGINventory6"
$scriptPath = $MyInvocation.MyCommand.Path
$scriptPath = Split-Path $scriptPath -Parent
$category = "Windows11Check"
$cpuCheckName = "CPUCheck";
$ramCheckName = "RAMCheck";
$tpmCheckName = "TPMCheck";
$diskCheckName = "DiskCheck";
$bootMethodCheckName = "BootMethodCheck";
$architectureCheckName = "ArchitectureCheck";
$videoAdapterCheckName = "VideoAdapterCheck";
$secureBootCheckName = "SecureBootCheck";
$w11CompatibleName = "Windows11Compatible";
cd 'LI:\IT Inventory\Assets*'
######################################################################################
$intel = $scriptPath + '\SupportedProcessorsIntel.txt'
$amd = $scriptPath + '\SupportedProcessorsAMD.txt'
$qualcomm = $scriptPath + '\SupportedProcessorsQualcomm.txt'
$fileList = @($intel, $amd, $qualcomm);
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$DataSet = New-Object System.Data.DataSet
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = False; User ID = $uid; Password = $pwd;"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter.SelectCommand = $SqlCmd
$list = New-Object System.Collections.Generic.List[System.String];
$fileList | foreach {
(Get-Content $_ | Select -Skip 1 | Select @{name='entry';expression={'(''' + $_ + ''')'}}) | foreach {
if ($_.entry -ne '(''EOF'')'){
$list.Add($_.entry);
}
}
}
$cpulist = ($list -join ", ");
$SqlQuery = "
SELECT [A].[Name]
, [BiosInfo].[Mode]
, [BiosInfo].[SecureBoot]
, [CPU].[Name]
, [CpuInfo].[Cores]
, [CpuInfo].[Threads]
, [CpuInfo].[Speed]
, [OSI].[Architecture]
, [OSI].[DirectXVersion]
, [DI].[MemorySizeGB]
, [BootPartition].[FreeSpace] / 1024 AS [FreeSpace]
, [BootPartition].[DiskType]
, [TPM].[SpecVersionString]
, [TPM].[MaxSpecVersion]
, [VAI].[Mode] AS [VideoMode]
, [VAI].[DriverModel] AS [VideoDriverModel]
, CASE WHEN [CPUList].[Name] IS NOT NULL AND [CpuInfo].[Cores] >= 2 AND [CpuInfo].[Speed] >= 1000 THEN 1 ELSE 0 END AS [CPUCheck]
, CASE WHEN [DI].[MemorySizeGB] >= 4 THEN 1 ELSE 0 END AS [RAMCheck]
, CASE WHEN [TPM].[MaxSpecVersion] >= 2.0 THEN 1 ELSE 0 END AS [TPMCheck]
, CASE WHEN [BootPartition].[FreeSpace] / 1024 >= 64 AND [BootPartition].[DiskType] = 'GPT' THEN 1 ELSE 0 END AS [DiskCheck]
, CASE WHEN [BiosInfo].[Mode] = 'UEFI' THEN 1 ELSE 0 END AS [BootMethodCheck]
, CASE WHEN [BiosInfo].[SecureBoot] = 1 THEN 1 ELSE 0 END AS [SecureBootCheck]
, CASE WHEN [OSI].[Architecture] = 'AMD64' THEN 1 ELSE 0 END AS [ArchitectureCheck]
, CASE WHEN [VAI].[AssetId] IS NOT NULL THEN 1 ELSE 0 END AS [VideoAdapterCheck]
, CASE WHEN [OSI].[DirectXVersion] >= 12 AND [VAI].[DriverModel] >= 2 THEN 1 ELSE 0 END AS [DirectXCheck]
FROM [Device] AS [Device]
JOIN [Asset] AS [A] ON [Device].[Id] = [A].[Id]
LEFT JOIN [BiosInfo] AS [BiosInfo] ON [BiosInfo].[AssetId] = [A].[Id]
LEFT JOIN [CpuInfo] AS [CpuInfo] ON [CpuInfo].[AssetId] = [A].[Id]
LEFT JOIN [DeviceInfo] AS [DI] ON [DI].[AssetId] = [A].[Id]
LEFT JOIN (SELECT [AssetId], [DiskType], [FreeSpace] FROM [Partition] WHERE [BootVolume] = 1) AS [BootPartition] ON [BootPartition].[AssetId] = [A].[Id]
LEFT JOIN (SELECT [AssetId], [Activated] AS [Activated], MAX([SpecVersion]) AS [SpecVersionString], MAX(TRY_CAST(SPL.part AS decimal)) AS [MaxSpecVersion] FROM [TrustedPlatformModuleInfo] AS [TPM] CROSS APPLY LiSplitString([TPM].[SpecVersion], ',') as SPL GROUP BY [AssetId], [Activated]) AS [TPM] ON [TPM].[AssetId] = [A].[Id]
JOIN [CPU] AS [CPU] ON [CPU].[Id] = [CpuInfo].[ItemId]
LEFT JOIN (SELECT [CPUList].[Name] FROM (VALUES $cpulist) AS CPUList([Name])) AS [CPUList] ON [CPU].[Name] LIKE '%'+[CPUList].[Name]+'%'
LEFT JOIN (SELECT [AssetId], MAX([Mode]) AS [Mode], MAX(TRY_CAST(SUBSTRING([DriverModel], CHARINDEX(' ', [DriverModel])+1, 1) AS int)) AS [DriverModel] FROM [VideoAdapterInfo] WHERE CAST(SUBSTRING(SUBSTRING([Mode], CHARINDEX('*', [Mode])+1, LEN([Mode])), 0, CHARINDEX('*', SUBSTRING([Mode], CHARINDEX('*', [Mode])+1, LEN([Mode])))) AS int) > 720 GROUP BY [AssetId]) AS [VAI] ON [VAI].[AssetId] = [A].[Id]
JOIN (SELECT [AssetId], [ItemId], [Architecture], CAST(REPLACE(SUBSTRING([DirectXVersion], CHARINDEX(' ', [DirectXVersion])+1, 2), '.', '') AS int) AS [DirectXVersion] FROM [OperatingSystemInfo]) AS [OSI] ON [OSI].[AssetId] = [A].[Id]
JOIN [OperatingSystem] AS [OS] ON [OS].[Id] = [OSI].[ItemId]
JOIN [LastInventory] AS [LastInventory] ON [LastInventory].[AssetId] = [A].[Id]
WHERE [A].[Archived] IS NULL AND [OS].[Platform] = 'Windows' AND [OS].[Name] NOT LIKE '%Server%' AND [LastInventory].[Method] <> 'EAS'
"
$SqlCmd.CommandText = $SqlQuery
$SqlAdapter.Fill($DataSet)
#$DataSet.Tables[0] | out-file "C:\Temp\W11Check\output.csv"
$DataSet.Tables[0] | foreach {
$assetName = $_['Name']
$cpuCheckValue = [boolean]$_['CPUCheck']
$ramCheckValue = [boolean]$_['RAMCheck']
$tpmCheckValue = [boolean]$_['TPMCheck']
$diskCheckValue = [boolean]$_['DiskCheck']
$bootMethodCheckValue = [boolean]$_['BootMethodCheck']
$architectureCheckValue = [boolean]$_['ArchitectureCheck']
$videoCheckValue = [boolean]$_['VideoAdapterCheck'] -and [boolean]$_['DirectXCheck']
$secureBootCheckValue = [boolean]$_['SecureBootCheck']
if (($cpuCheckValue -eq $true) -and ($ramCheckValue -eq $true) -and ($tpmCheckValue -eq $true) -and ($diskCheckValue -eq $true) -and ($bootMethodCheckValue -eq $true) -and ($architectureCheckValue -eq $true) -and ($videoCheckValue -eq $true) -and ($secureBootCheckValue -eq $true)) {
$w11CompatibleValue = $true;
} else {
$w11CompatibleValue = $false;
};
Write-Host "Patching Asset: '$assetName'"
Set-LiCustomProperty -Name $cpuCheckName -Value $cpuCheckValue -Category $category -AssetName $assetName
Set-LiCustomProperty -Name $ramCheckName -Value $ramCheckValue -Category $category -AssetName $assetName
Set-LiCustomProperty -Name $tpmCheckName -Value $tpmCheckValue -Category $category -AssetName $assetName
Set-LiCustomProperty -Name $diskCheckName -Value $diskCheckValue -Category $category -AssetName $assetName
Set-LiCustomProperty -Name $bootMethodCheckName -Value $bootMethodCheckValue -Category $category -AssetName $assetName
Set-LiCustomProperty -Name $architectureCheckName -Value $architectureCheckValue -Category $category -AssetName $assetName
Set-LiCustomProperty -Name $videoAdapterCheckName -Value $videoCheckValue -Category $category -AssetName $assetName
Set-LiCustomProperty -Name $secureBootCheckName -Value $secureBootCheckValue -Category $category -AssetName $assetName
Set-LiCustomProperty -Name $w11CompatibleName -Value $w11CompatibleValue -Category $category -AssetName $assetName
}
Re: Windows 11 ready Filter
Hallo
nach Rückmeldung vom Support wurde ich auf das Hardware REadiness.ps1 Skript von Microsoft verwiesen.
Das Anpassen des Inventory ist nicht auf der Roadmap. Auszug aus der Mail anbei:
Ich werde das Ganze jetzt über das Microsoft-Skript lösen und dann als Paket lösen. Die Abfrage dann über einen Empirum-Filter bauen.
Auch wenn es keine 100%ige Sicherheit ist, dass ein Client dann wirklich Win11 tauglich sein wird, aber dennoch kann ich es so etwas besser eingrenzen.
nach Rückmeldung vom Support wurde ich auf das Hardware REadiness.ps1 Skript von Microsoft verwiesen.
Das Anpassen des Inventory ist nicht auf der Roadmap. Auszug aus der Mail anbei:
Code: Select all
wie schon geschrieben ist das Problem, dass das Inventory keine Rubrik für TPM Modul Information in der Konsole hergibt.
Eine eigene Rubrik müsste es ja auch irgendwie geben, wenn man den von Ihnen genannten Registry Key ausliest und dann darstellt.
Dies aufzunehmen ist auch bisher nicht in unserer Roadmap.
Auch wenn es keine 100%ige Sicherheit ist, dass ein Client dann wirklich Win11 tauglich sein wird, aber dennoch kann ich es so etwas besser eingrenzen.
Re: Windows 11 ready Filter
Hallo KW-MF,
dank deinem Beitrag haben wir ebenfalls das Microsoft Powershell Script in ein Empirum Paket verbaut und mittels regkeys und Filter die Werte eingesammelt. Was wir bisher noch nicht herausgefunden haben, ist ob die Ausgabe ob Valid oder eben nicht, auch mit dem übereinstimmt was Microsoft selbst für würdig erachtet. Wir können nur annehmen, dass die Wahrscheinlichkeit sehr hoch ist. Die in Win10 eingebaute PC Integrationsprüfung ist bei uns (wahrscheinlich weil es eine Komponente von windows 11 ist) blockiert.
Seid ihr da schon weiter gekommen?
Viele Grüße
dank deinem Beitrag haben wir ebenfalls das Microsoft Powershell Script in ein Empirum Paket verbaut und mittels regkeys und Filter die Werte eingesammelt. Was wir bisher noch nicht herausgefunden haben, ist ob die Ausgabe ob Valid oder eben nicht, auch mit dem übereinstimmt was Microsoft selbst für würdig erachtet. Wir können nur annehmen, dass die Wahrscheinlichkeit sehr hoch ist. Die in Win10 eingebaute PC Integrationsprüfung ist bei uns (wahrscheinlich weil es eine Komponente von windows 11 ist) blockiert.
Seid ihr da schon weiter gekommen?
Viele Grüße
Re: Windows 11 ready Filter
Hallo in die Runde,
habt ihr schon etwas neues zu berichten oder Erfahrungen gesammelt?
habt ihr schon etwas neues zu berichten oder Erfahrungen gesammelt?
Who is online
Users browsing this forum: No registered users and 2 guests