Я новичок в PowerShell, и мне нужно выполнить разовую задачу, которую нужно выполнить с помощью PowerShell. Это касается и Active Directory. Мне нужно добавить новый компьютерный объект в нашу AD, и один из атрибутов, который я должен установить во время создания, — это 16-байтовое двоичное значение. Я получаю в качестве ввода строку, которая представляет собой шестнадцатеричное представление значения, которое я должен установить для атрибута.
Я попытался ввести значение asis, и это не сработало. Я пытался экранировать каждый байт обратной косой чертой, это тоже не работает.
Как мне отформатировать ввод, чтобы он работал с командой New-ADComputer? Я успешно устанавливаю кучу других атрибутов. Когда я удаляю эту двоичную запись из моей хеш-таблицы, переданной в параметр -OtherAttributes, она работает нормально. Итак, очевидно, проблема с форматом. Я ничего не нашел об ожидаемом формате для таких атрибутов.
Любые подсказки? ТИА.
РЕДАКТИРОВАТЬ 2018-06-05 19:44 ПО ВОСТОЧНОМУ ВРЕМЕНИ:
Я попытался преобразовать строку в массив байтов следующим образом:
Function Convert-Hex2ByteArray {
[cmdletbinding()]
param(
[parameter(Mandatory=$true)]
[String]
$HexString
)
[byte[]] $Bytes = @(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
For($i=0; $i -lt $HexString.Length; $i+=2) {
$Bytes[$i/2] = [convert]::ToByte($HexString.Substring($i, 2), 16)
}
$Bytes
}
(...)
$netbootGUID = Convert-Hex2ByteArray($args[$indiceArgs])
$otherAttributes.add( "netbootGUID", $netbootGUID )
(...)
New-ADComputer -Credential $cred -Server $ADhost -Path "CN=Computers,$baseDN" -SAMAccountName $sAMAccountName -Name $name-Instance 4 -OtherAttributes $otherAttributes
Это приводит к следующей ошибке (прошу прощения за собственный перевод, так как исходное сообщение показано на французском языке):
Было указано много значений для атрибута, который может иметь только один
Проблема решена:
$netbootGUID = New-Object Guid $args[$indiceArgs]
$otherAttributs.add( "netbootGUID", $netbootGUID )
Сделал трюк.