必须是一个更清洁的方式

问题描述

在脚本中,我有一个我要去的部分 - get-aduser 并将其通过管道传递给 set-aduser, 我需要替换 3 个字段,我做了 3 次:

     get-aduser -filter 'Name -like $name' | % {Set-aduser $_ -state $pcname }
     get-aduser -filter 'Name -like $name' | % {Set-aduser $_ -POBox $bios }
     get-aduser -filter 'Name -like $name' | % {Set-aduser $_ -Description $ip }
     

问这个我真的很不好意思,但我找不到如何使它成为单衬里?

解决方法

这里不需要 ForEach-Object,也可以使用哈希表:

$hash=@{
    State=$pcname
    POBox=$bios
    Description=$ip
}

Get-ADuser -Filter "Name -like '$name'"|Set-ADuser @hash
,

-like 将与通配符一起使用;如果名称完全匹配:

Set-aduser -identity $name -state $pcname -POBox $bios -Description $ip