特定のユーザーの[〜#〜] ou [〜#〜]のみを取得したい。
コマンドが表示する例[〜#〜] ou [〜#〜] user [〜#〜] john [〜#〜]が属するもの
USERNAME = OU_NAME
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
を使用すると、任意の方法でフィルタリングできます。
Get-ADPathname.ps1 script は、文字列の解析を必要としない、このための1つの非常に単純な手法を提供します。
PS C:\> (Get-ADUser kendyer).DistinguishedName | Get-ADPathname -Format X500Parent
OU=Sales,DC=fabrikam,DC=com
(記事に記載されているように、文字列の解析は堅牢ではありません。)
これは私のために働きます:
$user = Get-ADUser -Identity [USERNAME] -Properties CanonicalName
$userOU = ($user.DistinguishedName -split ",",2)[1]
ソース: http://itknowledgeexchange.techtarget.com/powershell/discovering-a-users-ou/
Laageのスクリプトを使用しましたが、名前に「、」を使用しているため、少し変更しました。変更後は、「、」のない名前でも機能します。
$ user = Get-ADUser -Identity [USERNAME]
$ userOU =($ user.DistinguishedName -split "="、3)[-1]