У меня есть этот набор кода:
#Find the OU with the selected Canonical name and save it to this variable
$OUObject = Invoke-Command -Session $S -ScriptBlock {Get-ADOrganizationalUnit -filter * -Property CanonicalName | Where-Object {$_.CanonicalName -eq $using:listBox2.SelectedItem}}
Итак, после этого кода я получаю OU, хранящуюся в переменной $ OUObject. Теперь я хочу связать все GPO с этим ou. Итак, мой следующий шаг:
$test = $OUObject.LinkedGroupPolicyObjects
, и теперь $ test хранит все gpos, связанные с его ou. проблема в том, что я хочу получить их по имени. так что я могу сделать это:
invoke-command -session $s -scriptblock {get-gpo -guid $test}
, но я получу эту ошибку: PS C: \ WINDOWS \ system32> invoke-command -session $ s -scriptblock {get-gpo -guid $ test} Невозможно проверить аргумент в параметре Guid. Аргумент равен нулю или пуст. Укажите аргумент, который не может быть пустым или пустым, а затем повторите команду. + CategoryInfo: InvalidData: (:) [Get-GPO], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationError, Microsoft.GroupPolicy.Commands.GetGpoCommand + PSComputerName: DC01
, так что я посмотрю, что содержит тест:
PS C:\WINDOWS\system32> $test
cn={5873971D-F689-4E83-8AFA-389FDD7F34CD},cn=policies,cn=system,DC=bla,DC=local
cn={2B7F8931-038E-46BC-B1DB-FBFA86097C08},cn=policies,cn=system,DC=bla,DC=local
cn={C74CADA1-B609-44A3-8D3C-F733CF3112E2},cn=policies,cn=system,DC=bla,DC=local
так что мне действительно нужно передать в команду get-gpo только часть внутри cn {..}
, если я, например, жестко запрограммировал и сделаю следующее:
invoke-command -session $s -scriptblock {get-gpo -guid 5873971D-F689-4E83-8AFA-389FDD7F34CD}
Я получаю правильный результат. может кто-нибудь помочь мне достичь этого, пожалуйста?