첫 글자 w가 있고 'x'개의 숫자가 오는 이름을 필터링하려면 어떻게 필터합니까? 예를 들어Powershell에서 긴 목록 필터링하기
:
w34593 w44569a we5552 w01123 내가
$userIDs = Get-Aduser -filter {name -like "w3*" -or name -like "w4*"} -Properties * | Select name, SurName, DisplayName
문제와 그들이 W1로 시작하는 경우 일부는 긴 얻을 수있다 오프 시작했습니다
w85532, W2 , w3, w0과 나는 바보로 길게 각 하나 또는 코드를 필터링하고 싶지 않습니다.
제안 사항? 각 이름은 일반적으로 6 ~ 7 자 길이이므로 나에게 도움이되는 범위가 있습니까? 내가 .length 시도했지만이 PowerShell을 내 버전 작동하지 않는 것
업데이트 :
$userIDs = Get-Aduser -filter {(name -gt "w30000*" -and name -lt "w99999*") -or (name -gt "we0000*" -and name -lt "we9999*") `
-or (name -gt "cr0000*" -and name -lt "cr9999*") -or (name -gt "ac0000**" -and name -lt "ac9999*")`
-or (name -gt "cm0000*" -and name -lt "cm9999*") -or (name -gt "do0000*" -and name -lt "do9999*") `
-or (name -gt "ec0000*" -and name -lt "ec9999*") -or (name -gt "ev0000*" -and name -lt "ev9999*") `
-or (name -gt "fm0000*" -and name -lt "fm9999*") -or (name -gt "ia0000*" -and name -lt "ia9999*") `
-or (name -gt "in0000*" -and name -lt "in9999*") -or (name -gt "le0000*" -and name -lt "le9999*") `
-or (name -gt "md0000*" -and name -lt "md9999*") -or (name -gt "mk0000*" -and name -lt "mk9999*") `
-or (name -gt "np0000*" -and name -lt "np9999*") -or (name -gt "pb0000*" -and name -lt "pb9999*") `
-or (name -gt "ps0000*" -and name -lt "ps9999*") -or (name -gt "re0000*" -and name -lt "re9999*") `
-or (name -gt "sf0000*" -and name -lt "sf9999*") -or (name -gt "so0000*" -and name -lt "so9999*") `
-or (name -gt "tr0000*" -and name -lt "tr9999*") -or (name -gt "wn0000*" -and name -lt "wn9999*") } `
-Properties * | Select name, SurName, DisplayName, enabled
ERROR :
Get-ADUser : Error parsing query: '(name -gt "w30000*" -and name -lt "w99999*")
-or (name -gt "we0000*" -and name -lt "we9999*") `
-or (name -gt "cr0000*" -and name -lt "cr9999*") -or (name -gt "ac
0000**" -and name -lt "ac9999*")`
-or (name -gt "cm0000*" -and name -lt "cm9999*") -or (name -gt "do
0000*" -and name -lt "do9999*") `
-or (name -gt "ec0000*" -and name -lt "ec9999*") -or (name -gt "ev
0000*" -and name -lt "ev9999*") `
-or (name -gt "fm0000*" -and name -lt "fm9999*") -or (name -gt "ia
0000*" -and name -lt "ia9999*") `
-or (name -gt "in0000*" -and name -lt "in9999*") -or (name -gt "le
0000*" -and name -lt "le9999*") `
-or (name -gt "md0000*" -and name -lt "md9999*") -or (name -gt "mk
0000*" -and name -lt "mk9999*") `
-or (name -gt "np0000*" -and name -lt "np9999*") -or (name -gt "pb
0000*" -and name -lt "pb9999*") `
-or (name -gt "ps0000*" -and name -lt "ps9999*") -or (name -gt "re
0000*" -and name -lt "re9999*") `
-or (name -gt "sf0000*" -and name -lt "sf9999*") -or (name -gt "so
0000*" -and name -lt "so9999*") `
-or (name -gt "tr0000*" -and name -lt "tr9999*") -or (name -gt "wn
0000*" -and name -lt "wn9999*") ' Error Message: 'Operator Not supported: ' at
position: '95'.
At J:\DATA\IR\ITSecurity\Intern\AlyssaC 2014\Part-time 2014-2015 task\AD\AD cle
an-up\Daily Script\AD-User.MonitorOwnership.ps1:3 char:22
+ $userIDs = Get-Aduser <<<< -filter {(name -gt "w30000*" -and name -lt "w9999
9*") -or (name -gt "we0000*" -and name -lt "we9999*") `
+ CategoryInfo : ParserError: (:) [Get-ADUser], ADFilterParsingEx
ception
+ FullyQualifiedErrorId : Error parsing query: '(name -gt "w30000*" -and n
ame -lt "w99999*") -or (name -gt "we0000*" -and name -lt "we9999*") `
-or (name -gt "cr0000*" -and name -lt "cr9999*") -or (name -g
t "ac0000**" -and name -lt "ac9999*")`
-or (name -gt "cm0000*" -and name -lt "cm9999*") -or (name -g
t "do0000*" -and name -lt "do9999*") `
-or (name -gt "ec0000*" -and name -lt "ec9999*") -or (name -g
t "ev0000*" -and name -lt "ev9999*") `
-or (name -gt "fm0000*" -and name -lt "fm9999*") -or (name -g
t "ia0000*" -and name -lt "ia9999*") `
-or (name -gt "in0000*" -and name -lt "in9999*") -or (name -g
t "le0000*" -and name -lt "le9999*") `
-or (name -gt "md0000*" -and name -lt "md9999*") -or (name -g
t "mk0000*" -and name -lt "mk9999*") `
-or (name -gt "np0000*" -and name -lt "np9999*") -or (name -g
t "pb0000*" -and name -lt "pb9999*") `
-or (name -gt "ps0000*" -and name -lt "ps9999*") -or (name -g
t "re0000*" -and name -lt "re9999*") `
-or (name -gt "sf0000*" -and name -lt "sf9999*") -or (name -g
t "so0000*" -and name -lt "so9999*") `
-or (name -gt "tr0000*" -and name -lt "tr9999*") -or (name -g
t "wn0000*" -and name -lt "wn9999*") ' Error Message: 'Operator Not suppor
ted: ' at position: '95'.,Microsoft.ActiveDirectory.Management.Commands.Ge
tADUser
업데이트 2 : 내가 개별적으로 각각했던이 시간과 그들은 일 했어???? 그들은 개별적으로
그들 중 일부 필터링하지 않는 한 내 주요 필터가 작동하지 않는 이유를 이해가 안 : 오류없이 제대로
$wIDs = Get-Aduser -filter {(name -gt "w30000*" -and name -lt "w99999*")} -Properties * | Select name, SurName, DisplayName, enabled
$weIDs = Get-Aduser -filter {(name -gt "we0000*" -and name -lt "we9999*")} -Properties * | Select name, SurName, DisplayName, enabled
foreach ($user in $wIDs) {
if ($user.DisplayName -like "*-DISABLED"){
#$groups = get-Adgroup -properties managedby -filter {managedby -eq $user.name}
write-host "User ID: " $user.name
write-host "Last Name: " $user.SurName
write-host "Display Name: " $user.DisplayName
write-host $break1 "Next User:" $break1
}#end of if statement
}#end foreach
foreach ($user in $weIDs) {
if ($user.DisplayName -like "*-DISABLED"){
#$groups = get-Adgroup -properties managedby -filter {managedby -eq $user.name}
write-host "User ID: " $user.name
write-host "Last Name: " $user.SurName
write-host "Display Name: " $user.DisplayName
#write-host "Managed Groups: " $groups
write-host $break1 "Next User:" $break1
}#end of if statement
}#end foreach
이 인쇄 ????
w ID는 작동하지만 나머지는 표시되지 않습니다. 나는이 거대한 오류를 얻는다 – narue1992
나는 *을 삭제했다. 그리고 그 오류는 여전히있다. 나는 내 업데이트를 다시 보여줄 것이다. 이번에 나는 개별적으로 각각을 필터링했다. (매우 나쁘다. 내 스크립트는 매우 길지만, 나는 모두 작동한다. 개별적으로 내 주 필터의 내용이 잘못되어 있음) – narue1992