none
AD属性値の設定について RRS feed

  • 質問

  • こちらのサイトで色々勉強させていただきながらADの階層型アドレス帳のメンテナンスを簡素化できるように

    Powershellで設定できないかと考えているのですが、以下のコマンドで実行するとエラーになってしまうのですが属性名は、ADExplorer.exeを使って確認しているので間違えていないと思うのですが、間違えているところがあればご指摘いただけますと幸いです

    ###msDS-HABSeniorityIndex(役職順の並びを設定するための項目)
    $data = Import-Csv "D:\IDShare\adgroup_Jemie\sorts.csv"
    $data |ForEach {Set-ADUser -Identity(Get-aduser $_.UserPrincipalName) -Add @{'ms-DS-HAB-Seniority-Index' =$_.'msDS-HABSeniorityIndex'}}

    et-ADUser : 指定されたディレクトリ サービス属性または値が存在しません。
    パラメーター名:ms-DS-HAB-Seniority-Index
    発生場所 行:3 文字:17
    + $data |ForEach {Set-ADUser -Identity(Get-aduser $_.UserPrincipalName) -Add @{'ms ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (CN=t_yamagishi,...mco,DC=co,DC=jp:ADUser) [Set-ADUser]、ArgumentException
        + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.SetADUser
     というエラーになってしまいます。

    読み込んでいるファイルの内容は

    "UserPrincipalName","msDS-HABSeniorityIndex"
    "aaa","680000"
    "bbb","400000"

    2018年9月10日 4:42

回答

  • チャブーンです。

    この件ですが、Get-ADUserで属性の参照や書き込みをしたい場合、自動的に読み込まれる(基本的な)属性以外は、-propertiesオプションで明示指定する必要があります。したのように変更してみてはどうでしょうか?

    $data = Import-Csv "D:\IDShare\adgroup_Jemie\sorts.csv"
    # -Proreries で msDS-HABSeniorityIndex を指定すること、-ADD @{}の名前の属性名も msDS-HABSeniorityIndex とすること
    $data | ForEach {Set-ADUser -Identity(Get-ADUser $_.UserPrincipalName -properties msDS-HABSeniorityIndex) -Add @{'msDS-HABSeniorityIndex' =$_.'msDS-HABSeniorityIndex'}}
    追記:(今回は)-Propertiesの方はなくても大丈夫で、-ADD @{}の名前の属性名が間違っていたことが原因、のようですね。-Addによる「対象属性に(無条件に)値を設定」というところで、Get-ADUserで値を拾わなくても大丈夫、ということかと思います。


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



    2018年9月10日 5:33
  • 既に属性値が存在していて、その属性値を変更する場合ならば、-Addパラメータではなく-Replaceパラメータを用いてみてはいかがでしょうか?
    • 回答としてマーク まうりん 2018年9月17日 22:54
    • 回答としてマークされていない まうりん 2018年9月20日 22:49
    • 回答としてマーク まうりん 2018年9月20日 22:49
    2018年9月16日 1:59
    モデレータ

すべての返信

  • チャブーンです。

    この件ですが、Get-ADUserで属性の参照や書き込みをしたい場合、自動的に読み込まれる(基本的な)属性以外は、-propertiesオプションで明示指定する必要があります。したのように変更してみてはどうでしょうか?

    $data = Import-Csv "D:\IDShare\adgroup_Jemie\sorts.csv"
    # -Proreries で msDS-HABSeniorityIndex を指定すること、-ADD @{}の名前の属性名も msDS-HABSeniorityIndex とすること
    $data | ForEach {Set-ADUser -Identity(Get-ADUser $_.UserPrincipalName -properties msDS-HABSeniorityIndex) -Add @{'msDS-HABSeniorityIndex' =$_.'msDS-HABSeniorityIndex'}}
    追記:(今回は)-Propertiesの方はなくても大丈夫で、-ADD @{}の名前の属性名が間違っていたことが原因、のようですね。-Addによる「対象属性に(無条件に)値を設定」というところで、Get-ADUserで値を拾わなくても大丈夫、ということかと思います。


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



    2018年9月10日 5:33
  • チャープ―ン様

    勉強不足の私にご丁寧なご指導ありがとうございます。大変勉強になりました。精進いたします。m(__)m

    度々申し訳ございません。

    ご指導いただいたコマンド実行させていただいたところ 複数の値が指定されましたとなってしまいました。属性値が違うのでしょうか? 申し訳ございません。m(__)m

    $data = Import-Csv "D:\IDShare\adgroup_Jemie\sorts.csv"
    $data| ForEach {Set-ADUser -Identity $_.UserPrincipalName -Add @{'msDS-HABSeniorityIndex' =$_.'msDS-HABSeniorityIndex'}}

    Set-ADUser : 値を 1 つしか持つことができない属性に対して、複数の値が指定されました。
    発生場所 行:3 文字:17
    + $data| ForEach {Set-ADUser -Identity $_.UserPrincipalName -Add @{'msDS-HABSenior ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (t_yamagishi:ADUser) [Set-ADUser], ADException
        + FullyQualifiedErrorId : ActiveDirectoryServer:8321,Microsoft.ActiveDirectory.Management.Commands.SetADUser

    2018年9月14日 4:59
  • 既に属性値が存在していて、その属性値を変更する場合ならば、-Addパラメータではなく-Replaceパラメータを用いてみてはいかがでしょうか?
    • 回答としてマーク まうりん 2018年9月17日 22:54
    • 回答としてマークされていない まうりん 2018年9月20日 22:49
    • 回答としてマーク まうりん 2018年9月20日 22:49
    2018年9月16日 1:59
    モデレータ
  • 牟田口様 ご親切にありがとうございます。Replaceにしたところうまく行けました。ご支援ありがとうございました。
    2018年9月20日 22:50