필자는 전문가 프로그래머가 아니기 때문에 어떤 논리를 이해하기 쉽지만 효율적인 스크립트로 사용해야합니까? 모든 AD 사용자를 검색하고 AD 속성 (예 : 사무실)을 기반으로하는 스크립트를 작성 중이므로 몇 가지 다른 속성 (도시, 우편 번호 등)에 문자열을 쓸 것입니다. 나는 Foreach를 가지고 놀았고 그 루프 내에서 replace 또는 where 절을 가진 set-ADUser를 사용했다. 또는 IF, IfElse 진술의 잔뜩 아주 지저분한 방법. 또한 Switch (Case) 문을 살펴보기 시작했습니다.루프에 사용할 논리. 가장 쉬운 가장 쉬운 대
제안 사항?
$Users = Get-ADUser -searchbase "OU=users,OU=testing,DC=blah,DC=company,DC=com" -filter {samaccountname -like "r*"} -properties * | Select samaccountname,streetaddress,l, postalcode,st,physicaldeliveryofficename
foreach ($user in $users) {
set-aduser $user -city "NoWhere" -Postalcode "B2B 2B2"| where {$_.physicaldeliveryofficename -eq "Head Office"}
}
또는 대신 스위치 : 복잡한 외부 리소스를 조회하는 것은 보통의 99 %를 필요하기 때문에
$Users = Get-ADUser -searchbase "OU=users,OU=testing,DC=blah,DC=company,DC=com" -filter {samaccountname -like "remot*"} -properties * | Select samaccountname,streetaddress,l, postalcode,st,physicaldeliveryofficename
foreach ($user in $users) {switch ($users.physicaldeliveryofficename){
"Nowhere town" { -city "NoWhere" -postalcode "A1A A1A"}
"Anywhereville" { -city "Anywhere" -postalcode "B1B B1B"}
}}
는 스크립트에 시간을 많이 달려있다. 보통 가독성은 원시 성능보다 훨씬 중요합니다. –
PowerShell이 SQL이 아니며,'Set-ADUser ... | Office = '본사'는 powershell에서 의미가 없습니다. – TessellatingHeckler