Powershell コマンド | Out-File

Powershell コマンド | Out-File

問題: リモート コンピューターのデータ実行防止 (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

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

関連情報