use*_*879 5 scripting powershell active-directory
我创建了一个小脚本来将名为 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"}
Run Code Online (Sandbox Code Playgroud)
并且输出将很好地完成预期的工作..以这种方式..这是期望的结果..
但是,如果我不按照以下脚本使用类型转换 + 拆分--
$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"}
Run Code Online (Sandbox Code Playgroud)
输出在下面..这不是我想要的..
简而言之,如果我不使用类型转换 + 拆分输出将添加为 @{pSSFullLocation=C/BRU/B/0/ADM/1 但它只能添加为 C/BRU/B/0/ADM/1按照这个:
我觉得类型转换 + 拆分应该是一种解决方法,而不是正确的方法.. 任何其他 powershell 方法可以在不使用类型转换 + 拆分的情况下实现这一点?
不要这样做:
$my=Get-ADComputer -Identity $oldpc -Properties * | select pssfulllocation
Run Code Online (Sandbox Code Playgroud)
您不会Select-Object
访问属性的值。请注意cmdlet 名称中的-Object
,而不是-Attribute
。相反,收集返回的对象Get-AdComputer
然后直接使用该属性。
$my = Get-ADComputer -Identity $oldpc -Properties *
$psfl = $my.pSSFullLocation
Set-ADComputer -identity $newpc -Replace @{pSSFullLocation="$psfl"}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
400 次 |
最近记录: |