web-dev-qa-db-ja.com

特定のユーザーグループをプルする-Powershell

そのため、現在、csvからsamaccountnamesをインポートし、Name、samaccountname、ユーザーグループ、およびグループの説明を取得するスクリプトがあります。それぞれを個別の行に出力します。以下のスクリプト:

```
Import-Csv -Path .\users.csv | ForEach-Object{

$user = get-aduser -Identity $_.samaccountname -Properties name, 
samaccountname, memberof

$(
if ($user.memberof.count -gt 1) {
    foreach ($group in $user.MemberOf) {
        $user | select name, samaccountname, @{n='group';e={$group -replace '^CN=(?<Name>.*?),(?:OU|CN).*$', '${Name}' -join ', '}}, @{n='GroupDescription';e={(Get-ADGroup $group -Properties description).description}}
    }
} elseif ($user.MemberOf.Count -eq 1) {
    $user | select name, samaccountname, @{n='group';e={$_.memberof  | select 
-f 1}}, @{n='GroupDescription';e={(Get-ADGroup $group -Properties 
 description).description}}
} else {
    $user | select name, samaccountname, @{n='group';e={$_.memberof }}, 
@{n='GroupDescription';e={''}}
}
)
  }| Export-Csv -path '' -NoTypeInformation

私が達成する必要がある1つのことは、各ユーザーが特定のグループのメンバーであるかどうか、およびCSVの独自の列にそれを引き出しているかどうかを確認することです。ワイルドカードにすることができます。たとえば、グループが「this- *」の場合、グループは独自の列に分割されます。

何か案は?

------------編集------編集------編集-------------------

これを追加しました

@{n='CertifyingGroup';e={($_.memberof -like “*org-*”)}}

これはCSVLDAP /グループの識別名に出力されますが、スクリプトですでに使用している置換関数を追加して、そのナンセンスを削除して読み取り可能にする場合、trueまたはfalseのみが返されます

1
Andrew Diaz

私があなたの要件を正しく理解していれば、これはあなたが必要とすることをするはずです。

$users = Import-Csv -Path .\users.csv
#CertifyingGroup Lookup
$certifyingGroupQuerty = "Domain*"
$groupReport = foreach ($user in $users) {
    $userAD = Get-ADUser -Identity $user.SamAccountName -Properties MemberOf
    foreach ($groupDN in $userAD.MemberOf) {
        $groupAD = Get-ADGroup -Identity $groupDN -Properties Description
        $certifyingGroup = if ($groupAD.Name -like $certifyingGroupQuerty) { $groupAD.Name }
        [PSCustomObject]@{
            "UserName"           = $userAD.Name
            "UserSamAccountName" = $userAD.SamAccountName
            "GroupName"          = $groupAD.Name
            "GroupDescription"   = $groupAD.Description
            "CertifyingGroup"    = $certifyingGroup
        }
    }
}
$groupReport | Export-Csv -Path C:\GroupReport.csv -NoTypeInformation

それが役に立てば幸い?

0
jfrmilner