none
Powershell(net user $domeinuser /domain の結果のフルネームを取得したい) RRS feed

  • 質問

  • お世話になります

    ユーザー名                           XXXXX
    フル ネーム                          BBBBBB
    コメント
    ユーザーのコメント
    国/地域番号                          000 (システム既定)

    結果のBBBBBのみを変数に取り込みたい

    どうすれば実現できますでしょうか

    よろしくお願い致します。

    2019年4月23日 12:13

回答

  • チャブーンです。

    この件ですが、佐祐理さんからも出ていますが、PowerShellの「System.DirectoryServices.DirectoryEntry()」で得られるActive Directoryオブジェクトの「displayName」が、該当項目にあたると思います。

    Get-ADUserコマンドレットを使えば、上記のADオブジェクトは簡単に取得できます。ですがこのコマンドレットは「Active Directory管理ツール」をインストールしないと使えません。このツールをインストールしない場合、System.DirectoryServices.DirectorySearcher()」というAD検索の機能を使うことになります。

    $domeinuser = "<アカウント名>" #変数名に誤字があると思いますが。。
    
    $objDomain = New-Object System.DirectoryServices.DirectoryEntry
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
    $objSearcher.SearchRoot = $objDomain
    $objSearcher.SearchScope = "Subtree"
    
        $sAMAccountName = $domeinuser
        $strFilter = "(&(objectCategory=User)(sAMAccountName=$sAMAccountName))"
        $objSearcher.Filter = $strfilter
        $objUser = ($objSearcher.Findone()).GetDirectoryEntry()
        Write-Host $domeinuser " のフルネームは " $objUser.displayName " です。" 


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    2019年4月24日 1:57

すべての返信

  • Windows 8.1以降のGet-ADUserで得られるADUserオブジェクト、そのNameプロパティでしょうか。
    2019年4月23日 23:02
  • クライアントだとエラーになります。
    2019年4月24日 1:36
  • チャブーンです。

    この件ですが、佐祐理さんからも出ていますが、PowerShellの「System.DirectoryServices.DirectoryEntry()」で得られるActive Directoryオブジェクトの「displayName」が、該当項目にあたると思います。

    Get-ADUserコマンドレットを使えば、上記のADオブジェクトは簡単に取得できます。ですがこのコマンドレットは「Active Directory管理ツール」をインストールしないと使えません。このツールをインストールしない場合、System.DirectoryServices.DirectorySearcher()」というAD検索の機能を使うことになります。

    $domeinuser = "<アカウント名>" #変数名に誤字があると思いますが。。
    
    $objDomain = New-Object System.DirectoryServices.DirectoryEntry
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
    $objSearcher.SearchRoot = $objDomain
    $objSearcher.SearchScope = "Subtree"
    
        $sAMAccountName = $domeinuser
        $strFilter = "(&(objectCategory=User)(sAMAccountName=$sAMAccountName))"
        $objSearcher.Filter = $strfilter
        $objUser = ($objSearcher.Findone()).GetDirectoryEntry()
        Write-Host $domeinuser " のフルネームは " $objUser.displayName " です。" 


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    2019年4月24日 1:57
  • ADSIでもいいんじゃないですかね
    ([ADSI]LDAP://CN=~~~,DC=***:,DC=****").displayname

    ※CN=~~、DC=**の部分は実環境に合わせてください

    2019年4月25日 8:04
  • チャブーンです。

    ADSIでもいいんじゃないですかね

    なるほど。ワンライナーで行うにはそれが簡単ですね。ですが、LDAPによるADsPathには問題がありまして、「アカウント名」だけだとフルパスを構成できず、結局検索操作が必要になる点です。

    net userといっているので、ここはWinNTプロバイダーを使えば、かなり簡単にできますね。

    ([ADSI]"WinNT://<NetBIOSドメイン名>/$domeinuser").FullName


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    2019年4月25日 8:30