como usar propriedades do objeto powershell diretamente sem typecasting e spliting?

5

Eu criei um pequeno script para transferir o valor do atributo do Active directory pc chamado pssfulllocation de um pc para o anoter pc ..

Para conseguir isso eu tenho que usar typecasting + splitting ..

Aqui está o script que funciona

$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"}

e a saída irá fazer bem o trabalho pretendido .. desta maneira .. e este é o resultado desejado ..

Masseeunãousartypecasting+splittingconformeoscriptabaixo-

$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"}

a saída está abaixo .. o que é não o que eu quero ..

Emsuma,seeunãousartypecasting+oresultadodadivisãoseráadicionadocomo@{pSSFullLocation=C/BRU/B/0/ADM/1,massódeveráseradicionadocomoC/BRU/B/0/ADM/1deacordocomisso:

Eu sinto typecasting + divisão deve ser uma solução e não o método adequado .. Qualquer outra maneira powershell para conseguir isso sem usar typecasting + divisão?

    
por user879 30.03.2017 / 14:16

2 respostas

5

Não faça isso:

$my=Get-ADComputer -Identity $oldpc -Properties * | select pssfulllocation 

Você não usa Select-Object para acessar o valor de um atributo. Observe o -Object , não -Attribute , no nome do cmdlet. Em vez disso, colete o objeto retornado por Get-AdComputer e use o atributo diretamente.

$my = Get-ADComputer -Identity $oldpc -Properties *
$psfl = $my.pSSFullLocation
Set-ADComputer -identity $newpc -Replace @{pSSFullLocation="$psfl"}
    
por 30.03.2017 / 14:29
1

Ou até mesmo isso poderia fazer o trabalho "- expandproperty"

$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"}
    
por 16.09.2017 / 21:26