Команда Powershell | Out-File

Команда Powershell | Out-File

Проблема: Определите статус предотвращения выполнения данных (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

https://support.microsoft.com/en-us/help/912923/how-to-determine-what-hardware-dep-is-available-and-configured-on-your

Связанный контент