
問題: リモート コンピューターのデータ実行防止 (DEP) ステータスを判別し、その結果をマシン名を含む txt ファイルにパイプします。
現在のソリューション:
BCDEdit /enum "{current}" | out-file \\FILESHARE\DEP\DEP.txt -Append
私は SCCM を通じてスクリプトをプッシュしているので、唯一の問題は結果にマシン名が含まれるようにすることです。SCCM では、各マシンでスクリプトをシステムとしてリモートで実行できるため、PC のリストで「get-content」を心配する必要はなく、コレクションを指定してそれらのシステムでスクリプトを実行するだけです。
あるいは、次のような SCCM の外部で Powershell コマンドを実行してみました。
$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