Мне нужно настроить политику аудита для набора удаленных серверов. Я пытаюсь использовать командлет Invoke-Command для запуска auditpol.exe на каждом сервере. Проблема в том, что я не могу захватить какой-либо вывод команды auditpol.
Я попробовал очевидное (присвоение результата Invoke-Command строке):
> $command = "Start-Process -FilePath `"auditpol.exe`" -ArgumentList `"/set`", `"/subcategory`", `"```"File System```"`", `"/success:enable`""
> $command
"auditpol.exe" -ArgumentList "/set", "/subcategory", "`"File System`"", "/success:enable"
> $out = Invoke-Command -ComputerName MyServer -ScriptBlock {$command}
> $out
>
Но $ out пуст.
Я также попробовал метод, описанный в этот блог MSDN с использованием Wait-Job и Receive-Job. Результаты несколько обнадеживают, но неубедительны:
> $command = "Start-Process -FilePath `"auditpol.exe`" -ArgumentList `"/set`", `"/subcategory`", `"```"File System```"`", `"/success:enable`""
> $command
"auditpol.exe" -ArgumentList "/set", "/subcategory", "`"File System`"", "/success:enable"
> $job = Invoke-Command -ComputerName MyServer -ScriptBlock {$command} -AsJob
> Wait-Job $job
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
3 Job3 Completed True MyServer $command
> $output = Receive-Job $job
> $output
>
Я надеялся, что смогу захватить фактический вывод auditpol.exe с помощью Receive-Job, но, как указано выше, похоже, что это не так.
Я получаю некоторую информацию от Wait-Job. Согласно Microsoft документация по Wait-Job State = Completed должна указывать, что операция прошла успешно, но я не совсем уверен, что она действительно дает представление о том, была ли операция auditpol успешной или нет . Любой совет будет очень признателен!