2017-08-10 78 views
0

私は、アクティブディレクトリにすべてのユーザーの一覧を表示するPowerShellスクリプトを作成しています。主なOU内にはサブOUがありますが、私が苦労している2つのことがあります。特定のOUからユーザーをエクスポートする

まず最初に、このレポートから特定のサブOUを除外する必要があります。これを行う方法がわかりません。

DisplayName CanonicalName 

Kanye West ad.test/All Users/People that have left/Kanye West 

が、私は「ad.testを除外するようにしたい:私が午前第二の問題は、私は、現時点では私はこのような出力を得る、彼らは報告書の中に含ま内にあるOUを持っているしたいです/すべてのユーザー "および"/Kanye west "だから私が出力したいのは、SUB OU名です。ここで

は、私がこれまでに書かれたものです:

Get-ADUser -Filter * -SearchBase "OU=All Users, DC=ad,DC=test" -Properties DisplayName, CanonicalName | select DisplayName, CanonicalName | Export-CSV c:\experiment.csv 
+0

編集ありがとうございます@Matt – Navee

+0

問題ありません。あなたが周りにいれば、私があなたが後で何をすることができるかという考えを得るためにしたことを見てください。私たちはすべてここにいます。 – Matt

+0

ちょっと見ましたが、これは私の次の投稿に役立つでしょう:) – Navee

答えて

0

あなたが唯一のOUからの出力が必要な場合は、私が最初にその場所に行くことをお勧めしたいです。

Import-Module activedirectory 
Set-Location 'AD:\OU=People that have left,OU=All Users,DC=ad,DC=test' 
Get-ADUser -Filter * -Properties DisplayName,CanonicalName | Select-Object DisplayName,CanonicalName | Where-Object CanonicalName -ne 'Kanye West' | Export-CSV C:\Experiment.csv 

追加:これはあなたが探しているが、私はあなたが配列の最初の検索したいすべてのOUの/コンテナのリストになるだろうし、正確に何である場合

Import-Module activedirectory 
Get-ADUser -Filter 'CanonicalName -ne "Kanye West"' -SearchBase 'OU=People that have left,OU=All Users,DC=ad,DC=test' -Properties DisplayName,CanonicalName | 
    Select-Object DisplayName,CanonicalName | 
    Export-CSV C:\Experiment.csv 
0

わかりませんオブジェクトのすべてを検索します。

# The OU you want to start searching from 
$baseOU = "OU=All Users, DC=ad,DC=test" 
# Any OUs that you do not want to be searched 
$ouOmits = "All users","Kanye West" 
# Get all sub OUs and OU of $baseOU minus any OU that is in the omission list 
$ousToSearch = Get-ADOrganizationalUnit -SearchBase $baseOU -Filter * | 
    Where-Object{$_.name -notin $ouOmits} | 
    Select -Expand DistinguishedName 

あなただけのPowerShell 2.0

$ousToSearch = Get-ADOrganizationalUnit -SearchBase $baseOU -Filter * | 
    Where-Object{$ouOmits -notcontains $_.name} | 
    Select -Expand DistinguishedName 

を持っている場合だから、OUの検索したいすべてを取得しますが。だから、今度はそれらをループさせて、実際に必要なすべてのオブジェクトを取得します。

$ousToSearch | ForEach-Object{ 
    Get-ADUser -Filter * -SearchBase $_ -SearchScope OneLevel -Properties DisplayName,CanonicalName 
} 

通常、検索は再帰的です。私たちの省略記号が意図どおりに機能することを確認するために、私たちが求めているOUだけに検索を限定します。

+0

これは残念です。 '-SearchBase'は' String [] '型を受け入れません。アドオンするには、左にフィルターをかけ、右に書式を設定します。 OPは特定のOUとユーザーを除外したい'-Filter 'DistinguishedName -notmatch「^ CN =。+、。*、OU = All \ sUsers」とCanonicalName -ne「Kanye West」「 – TheIncorrigible1

+0

本当に恥ずかしいです。私は自分のやり方がきれいであることを発見しました。そして、実際のユースケースがより多くのOUを持っているなら、このようにするのは簡単かもしれません。この情報を持つオブジェクトがある場合、私はregexを使ってDNを嫌っていました。 – Matt

+0

自分の環境のGet-ADUserが私に与えるものに基づいてフィルタの例をベースにしていました。私は頻繁に広告スーパーで動作しません。 – TheIncorrigible1

関連する問題