web-dev-qa-db-ja.com

Powershell / CLIを使用してActive DirectoryからユーザーOUのみを取得する

特定のユーザーの[〜#〜] ou [〜#〜]のみを取得したい。

コマンドが表示する例[〜#〜] ou [〜#〜] user [〜#〜] john [〜#〜]が属するもの

USERNAME = OU_NAME
1
Syed Jahanzaib

AD-Moduleがインストールされていない場合は、これも使用できます。 AD-Informationが必要なスクリプトを実行したが、AD-Moduleがインストールされていない場合、これは非常に便利であることがわかりました。 :

$strFilter = "(&(objectCategory=User)(samAccountName=$env:username))"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $strFilter
$objPath = $objSearcher.FindOne()
$objUser = $objPath.GetDirectoryEntry()
$DN = $objUser.distinguishedName
$ADVal = [ADSI]"LDAP://$DN"
$WorkOU = $ADVal.Parent
$WorkOU

$WorkOUは、このような文字列を返しますLDAP://OU=userou,OU=userou2,DC=internal,DC=domain,DC=comを使用すると、任意の方法でフィルタリングできます。

2
SimonS

Get-ADPathname.ps1 script は、文字列の解析を必要としない、このための1つの非常に単純な手法を提供します。

PS C:\> (Get-ADUser kendyer).DistinguishedName | Get-ADPathname -Format X500Parent
OU=Sales,DC=fabrikam,DC=com

(記事に記載されているように、文字列の解析は堅牢ではありません。)

1
Bill_Stewart

これは私のために働きます:

$user = Get-ADUser -Identity [USERNAME] -Properties CanonicalName

$userOU = ($user.DistinguishedName -split ",",2)[1]

ソース: http://itknowledgeexchange.techtarget.com/powershell/discovering-a-users-ou/

1
Laage

Laageのスクリプトを使用しましたが、名前に「、」を使用しているため、少し変更しました。変更後は、「、」のない名前でも機能します。

$ user = Get-ADUser -Identity [USERNAME]

$ userOU =($ user.DistinguishedName -split "="、3)[-1]

0
Zwier Dijkhuis