Я новичок в PowerShell, и у меня есть однозадачное задание, которое необходимо выполнить с помощью PowerShell.Это касается и Active Directory.Мне нужно добавить новый объект компьютера в нашу AD, и один из атрибутов, которые я должен установить во время создания, является 16-байтовым двоичным значением.В качестве входных данных я получаю строку, представляющую собой шестнадцатеричное представление значения, которое я должен установить для атрибута.
Я попытался ввести значение asis, но оно не работает.Я попытался экранировать каждый байт обратной косой чертой, он тоже не работает.
Как мне отформатировать ввод для этого, чтобы он работал с командой New-ADComputer?Я устанавливаю кучу других атрибутов успешно.Когда я удаляю эту двоичную запись из моей хеш-таблицы, переданной опции -OtherAttributes, она работает нормально.Итак, очевидно проблема формата.Я ничего не нашел об ожидаемом формате для таких атрибутов.
Есть какие-нибудь подсказки?TIA.
РЕДАКТИРОВАТЬ 2018-06-05 19:44 EDT:
Я попытался преобразовать строку в байтовый массив следующим образом:
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 )
Сделал трюк.