我创建了一个小脚本来将名为 pssfulllocation 的 Active Directory pc 属性的值从一台 pc 传输到另一台 pc。
为了实现这一点,我必须使用类型转换+拆分..
这是有效的脚本
$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 方法可以在不使用类型转换 + 拆分的情况下实现这一目标?
不要这样做:
您不要
Select-Object
访问属性的值。请注意cmdlet 名称中的-Object
,而不是。-Attribute
相反,收集返回的对象,Get-AdComputer
然后直接使用该属性。甚至这也可以完成“-expandproperty”的工作