Я пытаюсь создать RSOP с нескольких наших серверов. Все, что мне нужно, это компьютер, а не результаты пользователя.
Это код PowerShell, который я использую:
$computers = (Get-ADComputer -Filter ... -SearchBase ...).Name
foreach ($computer in $computers)
{
Get-GPResultantSetOfPolicy -Computer $computer -ReportType xml -Path ...
}
Это вызовет исключение на некоторых серверах, которое в основном говорит о том, что я никогда не входил в систему, и поэтому профиль не существует.
Get-GPResultantSetOfPolicy: отчет о результирующем наборе политик (RSoP) не может быть создан для пользователя MyUser на компьютере MyComputer, поскольку на этом компьютере нет данных журнала RSoP для этого пользователя. Это может быть связано с тем, что пользователь никогда не входил на этот компьютер. Имя параметра: User В строке: 1 символ: 1 + Get-GPResultantSetOfPolicy -computer MyComputer -ReportType xml -path d: \ ... + ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidArgument: (Microsoft.Group ... OfPolicyCommand: GetGPResultantSetOfPolicyCommand) [Get-GPResultantSetOfPolicy], исключение ArgumentException + FullyQualifiedErrorId: NoLoggingData, Microsoft.GroupPolicyMfpolicy.Commands.GroupPolicyComf
По умолчанию этот командлет использует пользователя по умолчанию, то есть пользователя, выполняющего командлет.
Конечно, есть -User
Параметр, который позволяет мне выбрать пользователя, от которого я знаю, что вход в систему произошел на целевом сервере (и для этого существует профиль Windows). Но это становится громоздким, поскольку мне пришлось бы использовать, например, Get-WmiObject Win32_UserProfile -ComputerName MyComputer
сначала получить список доступных профилей пользователей, а затем выбрать один из них для выполнения Get-GPResultantSetOfPolicy
позже...
Обычный старый gpresult.exe
ведет себя точно так же странно ... Я не хочу, чтобы / не могу rdp на каждом сервере заранее сгенерировать профиль Windows.
На мой взгляд, есть две возможности:
Get-GPResultantSetOfPolicy
Вопросы: