
Проблема: Определите статус предотвращения выполнения данных (DEP) на удаленных компьютерах и сохраните результаты в текстовом файле, включая имя компьютера.
Текущее решение:
BCDEdit /enum "{current}" | out-file \\FILESHARE\DEP\DEP.txt -Append
Я отправляю скрипт через SCCM, поэтому моя единственная проблема — включить имя машины в результаты. SCCM позволяет запускать скрипт на каждой машине удаленно как System, поэтому мне не нужно беспокоиться о «get-content» со списком ПК, просто укажите коллекцию и запустите скрипт на этих системах.
В качестве альтернативы я попробовал запустить команду Powershell вне SCCM, например:
$XenServers = get-content -path 'C:\PC_List.txt'
$Results= ForEach ($XenServer in $XenServers)
{
BCDEdit /enum "{current}"
}
$Results | Out-File \\FILESHARE\DEP\DEP.txt
решение1
Я бы рекомендовал использовать решение полностью PowerShell. Согласно ссылке ниже, класс Win32_OperationSystem содержит значение, которое вы ищете в свойстве DataExecutionPrevention_SupportPolicy. Объекты, возвращаемые запросами WMI, также включают свойство PSComputerName, поэтому это простой способ отслеживать результаты. Я не поклонник такого форматирования, поэтому включаю еще одну рекомендацию.
get-WmiObject Win32_OperatingSystem |
Select-Object PSComputerName, DataExecutionPrevention_SupportPolicy |
Export-Csv -Path \\FILESHARE\DEP\DEP.csv -Append -NoTypeInformation