2016-05-26 10 views
0

学生IDが間違って作成されたCSVがあります。彼らは、上のファーストイニシャル、下のファーストイニシャル、上のファーストイニシャルを持っています。私は約4,500のユーザIDを含んでいるcsv内でこれらを見つけることができる必要があり、最終的にADにあるすべてのものが必要になります。名前を変更して修正する方法は分かっています。私はただ手動で各名前を個別に読んで、見つけることなくそれらを素早く探し出す必要があります。私はそれが配列[A-Z]^[a-z]^[A-Z]を見つけることと関係していると確信しています。
これに関する助力は非常に役に立ちます!Powershellを使用して、大文字と小文字の大文字と小文字を区別してユーザーIDを識別します。

Import-Module ac* 
# Student 
Get-AdUser -Filter * -SearchBase "OU=Student, OU=PPS, DC=ad, DC=ppsnet" -Properties GivenName, Surname, EmployeeNumber, SamAccountName, PhysicalDeliveryOfficeName, department | 

`Where {$_.department -like "*KG*" -and $_.SamAccountName -cmatch '(?:[A-Z][a-z][A-Z].*3)'} | Select GivenName, Surname, EmployeeNumber, SamAccountName, PhysicalDeliveryOfficeName, department | 

Export-csv .\Output\Student\Kinders.csv -NoTypeInformation 
+4

データセットのサンプルをそのままお持ちになりたいですか?また、これまでに試したことの概要と、それがうまくいかなかった理由(実際の出力)を提供できますか? [これらの](http://stackoverflow.com/help/how-to-ask)の詳細は非常に重要です[効果的に](http://stackoverflow.com/help/mcve)。 ;) – gravity

+0

データはそのままです - Susie Jones SuJones1234 これらのユーザーIDを検索して、名前をSJones1234に変更できるようにする必要があります –

答えて

1

述べたように、そこより詳細な回答を提供するために、まだ十分な情報はありませんが、ここでこの

$names = @' 
John jacob Jingleheimer 
elaine Hall Ramos 
James Morrison dixon 
Margie Lee Gonzales 
'@.Split("`n") 

$names | % { 
    if ($_.Split(' ') | ? {$_[0] -cmatch '^[a-z]'}) { 
     Write-Output $_ 
    } 
} 

のようなものを試してみてくださいは、別の方法

$names | ? {$_ -cnotmatch '(?:[A-Z].*){3}'} 
+0

私は学生のAD情報を取得するために使用した標準のスクリプトを持っています.csvに4,500の幼稚園のアカウントを細かく抽出します。それから私は "Where"に - とステートメントを追加しましたが、それはそれを好きではありません。 Where-Object:パラメータ名に一致するパラメータが見つかりませんでした。 'と' ここに私の変更されたスクリプトがあります。 - と {$ _。department-like "* KG *"} {$ _。SamAccountName -match "^ [^ AZ]^[az]^[AZ]" * 3} | GivenName、Surname、EmployeeNumber、SamAccountName、PhysicalDeliveryOfficeName、departmentを選択します。 Export-csv。\ Output –

+0

私は - と私のWhere-Objectで考えましたが、まだ大文字と小文字が混在したユーザーIDの –

+1

でSamAccountNameを特定/見つけていないのですが、あなたは '-match' 。大文字と小文字を区別するために '-cmatch'を使います。第2に、正規表現( '[]'の外側で使用される)の '^'は '文字列の先頭'を意味するので、先頭に最初の文字列以上の文字列を持つことは意味がありません。 '-cnotmatch'とその正規表現を使用できるかどうか確認するために私の編集をチェックしてください。 –

0

です{$ .deadment- "* KG *" -and $ .SamAccountName -cmatch '(?:[AZ] [az] [AZ]。* 3)'} これはユーザーアカウントのみをエクスポートしました大文字、小文字、大文字のユーザー名、つまりSuJonesがあり、SJonesが無視されました。

関連する問題