
Problem: Bestimmen Sie den Data Execution Prevention (DEP)-Status des Remotecomputers und leiten Sie die Ergebnisse zusammen mit dem Computernamen an eine TXT-Datei weiter.
Aktuelle Lösung:
BCDEdit /enum "{current}" | out-file \\FILESHARE\DEP\DEP.txt -Append
Ich übertrage das Skript über SCCM, sodass mein einziges Problem darin besteht, den Computernamen in die Ergebnisse aufzunehmen. Mit SCCM können Sie das Skript auf jedem Computer remote als System ausführen, sodass ich mir bei einer Liste von PCs keine Gedanken über „Get-Content“ machen muss. Zeigen Sie einfach auf eine Sammlung und führen Sie das Skript auf diesen Systemen aus.
Alternativ habe ich versucht, Powershell-Befehle außerhalb von SCCM auszuführen, wie etwa:
$XenServers = get-content -path 'C:\PC_List.txt'
$Results= ForEach ($XenServer in $XenServers)
{
BCDEdit /enum "{current}"
}
$Results | Out-File \\FILESHARE\DEP\DEP.txt
Antwort1
Ich würde empfehlen, eine reine PowerShell-Lösung zu verwenden. Laut dem unten stehenden Link enthält die Klasse Win32_OperationSystem den gesuchten Wert in der Eigenschaft DataExecutionPrevention_SupportPolicy. Die von WMI-Abfragen zurückgegebenen Objekte enthalten auch die Eigenschaft PSComputerName, sodass Sie die Ergebnisse auf einfache Weise verfolgen können. Ich bin kein Fan dieser Art der Formatierung, daher gebe ich eine weitere Empfehlung.
get-WmiObject Win32_OperatingSystem |
Select-Object PSComputerName, DataExecutionPrevention_SupportPolicy |
Export-Csv -Path \\FILESHARE\DEP\DEP.csv -Append -NoTypeInformation