Я создал небольшой скрипт для передачи значения атрибута ПК Active Directory, называемого pssfulllocation, с одного компьютера на другой компьютер.
Для этого мне нужно использовать приведение типов + разделение ..
Вот сценарий, который работает
$oldpc=read-host "Enter old pc name"
$newpc=read-host "Enter new pc name"
$my=Get-ADComputer -Identity $oldpc -Properties * | select pssfulllocation
$itemcast=[string]$my
$b = $itemcast.Split("=")[1]
$c=$b.Split("}")[0]
Set-ADComputer -identity $newpc -Replace @{pSSFullLocation="$c"}
и выход будет хорошо делать намеченную работу.. таким образом .. и это желаемый результат..
Но если я не использую приведение типов + разделение согласно приведенному ниже сценарию -
$oldpc=read-host "Enter old pc name"
$newpc=read-host "Enter new pc name"
$my=Get-ADComputer -Identity $oldpc -Properties * | select pssfulllocation
Set-ADComputer -identity $newpc -Replace @{pSSFullLocation="$my"}
выход находится ниже .. что не то, что я хотеть..
Вкратце, если я не использую приведение типов и разделение, вывод будет добавлен как @ {pSSFullLocation = C / BRU / B / 0 / ADM / 1, но его следует добавлять только как C / BRU / B / 0 / ADM / 1 согласно этому:
Я считаю, что приведение типов + разделение должно быть обходным решением, а не подходящим методом .. Любой другой способ PowerShell для достижения этого без использования преобразования типов + разделение?
Не делайте этого:
$my=Get-ADComputer -Identity $oldpc -Properties * | select pssfulllocation
Ты не Select-Object
для доступа к значению атрибута. Обратите внимание -Object
не -Attribute
в имени командлета. Вместо этого соберите объект, возвращенный Get-AdComputer
затем используйте атрибут напрямую.
$my = Get-ADComputer -Identity $oldpc -Properties *
$psfl = $my.pSSFullLocation
Set-ADComputer -identity $newpc -Replace @{pSSFullLocation="$psfl"}
Или даже это могло бы сработать "-расширить недвижимость"
$oldpc=read-host "Enter old pc name"
$newpc=read-host "Enter new pc name"
$my=Get-ADComputer -Identity $oldpc -Properties * | select -expandproperty pssfulllocation
Set-ADComputer -identity $newpc -Replace @{pSSFullLocation="$my"}