none
ADにログオンしているユーザのObjectGUIDを取得したいが、どのような方法があるでしょうか? RRS feed

  • 質問

  • 現在、ADサーバにログオンしているユーザのGUIDを直接取得するにはどのような方法がありますか?winapiメソッド、WMI、コマンドなど相当するものがあれば教えて下さい。やはりwhoami /userなどで、ユーザSIDを取得した後に、GUIDを検索するしか方法はないのでしょうか?よろしくお願いします。

    • 移動 佐伯玲 2015年3月6日 4:42 TechNet サブスクリプション から Active Directory へ
    2015年3月4日 10:41

回答

  • ObjectGUID 属性でいいでしょうか?
    以下のサンプルスクリプトが参考になりそうです。

    Hey, Scripting Guy! ユーザーのログオン名とドメインしかわからない場合に、ユーザー アカウントの GUID を取得する方法はありますか
    https://gallery.technet.microsoft.com/scriptcenter/f8574570-55a8-4554-a315-6a4de64318f5

    検証環境で試してみたら問題なく取得できました。

    2015年3月5日 2:23
  • チャブーンです。

    mu100さんの回答が正しいかと思います。

    どうせならPowerShellで、ということであれば、したのページに同じオブジェクト(NameTranslate)でのサンプルがありましたで、補足としてお知らせします。このオブジェクトはCOMオブジェクトなので、PowerShell上でもCOMObjectとして宣言する必要があります。

    http://windowsitpro.com/active-directory/translating-active-directory-object-names-between-formats

    で、うえをもとにして質問者さんの要件にあわせたサンプルが、したのものになります。一応動作します。

    $ADS_NAME_INITTYPE_GC = 3
    $ADS_NAME_TYPE_NT4 = 3
    $ADS_NAME_TYPE_GUID = 7
    
    $NameTranslate = New-Object -ComObject "NameTranslate"
    $NameTranslate.GetType().InvokeMember("Init", "InvokeMethod", $NULL, $NameTranslate, ($ADS_NAME_INITTYPE_GC, "")) | Out-Null
    $NT4Name = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
    $NameTranslate.GetType().InvokeMember("Set", "InvokeMethod", $NULL, $NameTranslate, ($ADS_NAME_TYPE_NT4, $NT4Name)) | Out-Null
    $NameTranslate.GetType().InvokeMember("Get", "InvokeMethod", $NULL, $NameTranslate, $ADS_NAME_TYPE_GUID)



    2015年3月5日 3:10
    モデレータ

すべての返信

  • ObjectGUID 属性でいいでしょうか?
    以下のサンプルスクリプトが参考になりそうです。

    Hey, Scripting Guy! ユーザーのログオン名とドメインしかわからない場合に、ユーザー アカウントの GUID を取得する方法はありますか
    https://gallery.technet.microsoft.com/scriptcenter/f8574570-55a8-4554-a315-6a4de64318f5

    検証環境で試してみたら問題なく取得できました。

    2015年3月5日 2:23
  • チャブーンです。

    mu100さんの回答が正しいかと思います。

    どうせならPowerShellで、ということであれば、したのページに同じオブジェクト(NameTranslate)でのサンプルがありましたで、補足としてお知らせします。このオブジェクトはCOMオブジェクトなので、PowerShell上でもCOMObjectとして宣言する必要があります。

    http://windowsitpro.com/active-directory/translating-active-directory-object-names-between-formats

    で、うえをもとにして質問者さんの要件にあわせたサンプルが、したのものになります。一応動作します。

    $ADS_NAME_INITTYPE_GC = 3
    $ADS_NAME_TYPE_NT4 = 3
    $ADS_NAME_TYPE_GUID = 7
    
    $NameTranslate = New-Object -ComObject "NameTranslate"
    $NameTranslate.GetType().InvokeMember("Init", "InvokeMethod", $NULL, $NameTranslate, ($ADS_NAME_INITTYPE_GC, "")) | Out-Null
    $NT4Name = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
    $NameTranslate.GetType().InvokeMember("Set", "InvokeMethod", $NULL, $NameTranslate, ($ADS_NAME_TYPE_NT4, $NT4Name)) | Out-Null
    $NameTranslate.GetType().InvokeMember("Get", "InvokeMethod", $NULL, $NameTranslate, $ADS_NAME_TYPE_GUID)



    2015年3月5日 3:10
    モデレータ
  • こんにちは、Makocchi さん
    フォーラムオペレータの佐伯 玲 です。

    こちらのフォーラムはTechNet サブスクリプションフォーラムなので
    ご質問に関連していそうなActive Directoryフォーラムへ移動させていただきますね。

    またすでにご参考になりそうな情報が寄せられているのでご確認いただきご参考になれば「回答としてマーク」をお願い致しますね。



    宜しくお願い致します。

    TechNet Community Support 佐伯 玲

    2015年3月6日 4:42