Я новичок в PowerShell, на самом деле очень, очень новичок.У меня есть задача, которую я не могу выполнить иначе, чем с помощью PowerShell (я не хочу объяснять, почему, доверяя мне на этом, я не хочу вступать в дискуссии о других путях).
Так вотмоя проблема.Мне нужно запросить Active Directory для сопоставления записи, ища равенство для 16-байтового двоичного поля (называемого netbootGUID в нашей установке).Цель состоит в том, чтобы убедиться, что не существует других записей с тем же netbootGUID перед добавлением новой записи (нет, они не могут применять политику на уровне базы данных, и я не могу контролировать это со своей стороны стены).
Что я делаю в качестве теста для перехода к окончательному решению, я получаю запись, выбираю ее netbootGUID и затем запрашиваю AD с netbootGUID, который я только что выбрал, чтобы проверить положительный ответ.
Вот фрагмент кода, предназначенный именно для этого:
$value = Get-ADComputer -Server $myADserver -SearchBase "CN=Computers,$baseDN" -Filter 'Name -eq "an_existing_computer"' -Credential $credentials -Properties netbootGUID
$guid = $value.netbootGUID
Get-ADComputer -Server $myADserver -SearchBase "CN=Computers,$baseDN" -Filter "netbootGUID -eq $guid" -Credential $credentials -Properties Name
Вместо получения значения при выполнении поиска по значению netbootGUID, полученного ранее, я получаю сообщение об ошибке:
Get-ADComputer : Erreur lors de l’analyse de la requête: «netbootGUID -eq 198 132 111 6 121 119 69 126 168 146 101 129 136 20 157 221» Message d’erreur: «syntax error» à la position: «21».
Au caractère C:\Users\Administrator\Documents\Tests PowerShell\netbootGUID_AD_Caisses.ps1:42 : 1
+ Get-ADComputer -Server $serveurAD -SearchBase "CN=Computers,$baseDN" -Filter "ne ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Get-ADComputer], ADFilterParsingException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingExeption,Microsoft.ActiveDirectory.Management.Commands.GetADComputer
Я прошу прощения за французское сообщение об ошибке. Я не знаю, как переключиться на английский.
Кажется, что 16-байтовое двоичное значение, переданное как $ guid, интерпретируется как строка вместо массиваили что-то типа того.Возможно, мне нужно что-то «привести» или сделать тип явным.
Кто-нибудь может мне помочь с этим?