none
PowerShell ADユーザ新規作成時、連想配列にパラメータとして存在しない属性を設定したい RRS feed

  • 質問

  • いつもお世話になっております。

    ADユーザ作成をPowerShell&csv読み込みで行いたく、コード作成中です。

    連想配列に値を設定し、最後にNew-ADuserしています。

    パラメータとして存在しない属性(mailNicknameやmsDS-PhoneticDisplayNameなど)も連想配列内に記述したいのですが、

    どのように書けばよいのか分からず苦戦しています。

    ↓↓から、-OtherAttributes を使えばいけそう、というところまでは分かりました。

    https://social.technet.microsoft.com/Forums/ja-JP/9bc80f22-9100-4f87-939b-e5ee2d818704/activedirectory-info?forum=powershellja

    御存じの方がいらっしゃいましたら教えて頂きたく、よろしくお願いいたします。

    $domain=Get-ADDomain;
    import-csv -Encoding Default addusers.csv | Foreach-Object {
        $args = @{
            Path=$_."OU"
            SamAccountName=$_."ユーザID"
            UserPrincipalName=$_."ユーザID" + "@" + $domain.DNSRoot
            AccountPassword=ConvertTo-SecureString -AsPlainText $_."パスワード" -force
            Name=$_."名前"
            Surname=$_."姓"
            GivenName=$_."名"
            Description=$_."説明"
            DisplayName=$_."displayName"
            [otherattributes]@{mailNickname=@($_."mailNickname")};←エラー
            #OtherAttributes を使う、、、とこまで分かったけど、どう書けばいいのか分からない
            #-otherattributes @{"mailNickname"=$_."mailNickname" }
            #msDSPhoneticDisplayName=$_."msDS-PhoneticDisplayName"
            #msExchHideFromAddressLists=$_."msExchHideFromAddressLists"
            #proxyaddresses=$_."proxyaddresses"
            Enabled=$True
        };

       New-ADUser @args;

    }

    2018年3月14日 7:06

回答

  • $domain=Get-ADDomain;
    import-csv -Encoding Default addusers.csv | Foreach-Object {
        $args = @{
            Path=$_."OU"
            SamAccountName=$_."ユーザID"
            UserPrincipalName=$_."ユーザID" + "@" + $domain.DNSRoot
            AccountPassword=ConvertTo-SecureString -AsPlainText $_."パスワード" -force
            Name=$_."名前"
            Surname=$_."姓"
            GivenName=$_."名"
            Description=$_."説明"
            DisplayName=$_."displayName"
            OtherAttributes=@{
                mailNickname=$_."mailNickname"
                msDSPhoneticDisplayName=$_."msDS-PhoneticDisplayName"
                msExchHideFromAddressLists=$_."msExchHideFromAddressLists"
                proxyaddresses=$_."proxyaddresses"
            }
            Enabled=$True
        };
       New-ADUser @args;
    }
    ですかね。PowerShellの書式についての回答であり、ADユーザーとして項目名がこれで正しいかどうかは私は知りません。
    • 回答としてマーク mt8369 2018年3月14日 8:21
    2018年3月14日 8:05

すべての返信

  • $domain=Get-ADDomain;
    import-csv -Encoding Default addusers.csv | Foreach-Object {
        $args = @{
            Path=$_."OU"
            SamAccountName=$_."ユーザID"
            UserPrincipalName=$_."ユーザID" + "@" + $domain.DNSRoot
            AccountPassword=ConvertTo-SecureString -AsPlainText $_."パスワード" -force
            Name=$_."名前"
            Surname=$_."姓"
            GivenName=$_."名"
            Description=$_."説明"
            DisplayName=$_."displayName"
            OtherAttributes=@{
                mailNickname=$_."mailNickname"
                msDSPhoneticDisplayName=$_."msDS-PhoneticDisplayName"
                msExchHideFromAddressLists=$_."msExchHideFromAddressLists"
                proxyaddresses=$_."proxyaddresses"
            }
            Enabled=$True
        };
       New-ADUser @args;
    }
    ですかね。PowerShellの書式についての回答であり、ADユーザーとして項目名がこれで正しいかどうかは私は知りません。
    • 回答としてマーク mt8369 2018年3月14日 8:21
    2018年3月14日 8:05
  • 佐祐理さん

    連想配列の入れ子の書き方が分からなかったので、助かりました。

    msDS-PhoneticDisplayNameでエラーになりましたが、知りたかったことを教えて頂いたので、クローズします。

    (ハイフンが邪魔をしています。。)

    ありがとうございました!

    2018年3月14日 8:24
  • 以下のコードでうまくいきました。

    ありがとうございました。

    $domain=Get-ADDomain; import-csv -Encoding Default addusers.csv | Foreach-Object { $args = @{ Path=$_."OU" SamAccountName=$_."ユーザID" UserPrincipalName=$_."ユーザID" + "@" + $domain.DNSRoot AccountPassword=ConvertTo-SecureString -AsPlainText $_."パスワード" -force Name=$_."名前" Surname=$_."姓" GivenName=$_."名" Description=$_."説明" DisplayName=$_."displayName" OtherAttributes=@{ mailNickname=$_."mailNickname" "msDS-PhoneticDisplayName"=$_."msDS-PhoneticDisplayName" msExchHideFromAddressLists=$_."msExchHideFromAddressLists" proxyaddresses=$_."proxyaddresses" } Enabled=$True }; New-ADUser @args;

    }


    2018年3月14日 8:30