0

PowerShell「白帯」はこちら、初回ポスター。私がここにいる間、このような有益なコミュニティの集合的 IQ を下げないようにします! :) QuestがインストールされたPowerShell 3.0を実行しています。

私の組織には、VPN アクセスをすべて制御するいくつかのセキュリティ グループを持つ Active Directory OU があります。これらは、命名規則が確立される前に作成されたものです (うーん!)

「X と Y と Z のメンバーを取得する」という名前に頼るのではなく、代わりに「OU XXX 内の任意のメンバーを取得する」と言います。

理想的には、最後にもカウントが必要です。これは、最終的には「VPN アクセスを持っているユーザーの数」を監査するためです (複雑すぎる場合は、結果を .CSV などにバーフすることもできます)。

だから私はこれの一部を行ういくつかの部分を持っていますが、それらをすべて組み合わせる方法を完全に視覚化することはできません. どんな助けでも大歓迎です。ここに私の可動部分があります:

1 つの特定のグループのユーザーを返します。

get-adgroupmember "group_of_coolness" -recursive | Select name

「検索ベース」を使用して、ユーザーが入力した OU から結果を返します。

Get-ADUser -Filter * -SearchBase 'ou=XXX,ou=XXX,dc=XXX,dc=XXX,dc=org' -Properties GivenName, Surname, EmailAddress, Office, Company, Title, distinguishedname | 
select GivenName, Surname, EmailAddress, Office, Company, Title, distinguishedname | Out-GridView 

いくつかの特定のグループからの結果を返しますが、カウントも提供します (これまでで最も高度なパッチワーク ^^):

    $GroupMembers=(get-ADGroup -filter {(Name -eq "XXXX") -or (Name -eq "YYYY")} |
     get-adgroupmember -Recursive | select distinguishedname -Unique)

    $Users=foreach ($user in $GroupMembers.distinguishedname) {
    Get-ADUser $user
    }

    $Users | Sort-Object DistinguishedName |
    select name, DistinguishedName

    Write-Host
    Write-Host "Total Users = " $Users.count

最後のコード スニペットは、「name -eq XXXX または YYYY」を「-searchbase "ou=XXX..." に置き換えることができれば、私に最も近いと思われます。

賢い人はどう思いますか?私は答えに近づいていますか?繰り返しになりますが、アドバイスをありがとうございます。私が馬鹿で、これがすでに回答されているスレッドを見落としているかどうかを教えてください(私はいくつかの緊密な電話を見つけましたが、まったくお金に見合ったものはありませんでした)。

私はここで何が欠けているかを見ることに興奮しています:)

4

2 に答える 2

1

これはかなり簡単に簡略化できます。

$Users = Get-ADGroup -SearchBase 'ou=XXX,ou=XXX,dc=XXX,dc=XXX,dc=org' -Filter * `
    | Get-ADGroupMember -Recursive `
    | Select-Object -Unique `
    | Sort-Object DistinguishedName;
$Users | Select-Object Name, DistinguishedName;
Write-Output ("Total Users = {0}" -f $Users.Count);

グループ名で検索したい場合は、最初の行をGet-ADGroup -Filter {(Name -eq "Group A") -or (Name -eq "Group B")}使用していたように変更できます。

この例では名前と識別名以外は使用していないため、Get-ADUser をもう一度実行してサーバーから同じデータをフェッチする理由はありません。DC の時間を無駄にする理由はありません。

名前と識別名以外の追加のプロパティを取得する必要がある場合は、それを行う必要があります。次のように実行できます。

$Users = Get-ADGroup -SearchBase 'ou=XXX,ou=XXX,dc=XXX,dc=XXX,dc=org' -Filter * `
    | Get-ADGroupMember -Recursive `
    | Select-Object -Unique `
    | ForEach-Object { Get-ADUser $_ -Properties GivenName, Surname, EmailAddress, Office, Company, Title, distinguishedname; } `
    | Sort-Object DistinguishedName;
于 2015-05-19T18:32:30.457 に答える