トップ回答者
PowerShell ADユーザ新規作成時、連想配列にパラメータとして存在しない属性を設定したい

質問
-
いつもお世話になっております。
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;
}
回答
-
$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
すべての返信
-
$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
-
以下のコードでうまくいきました。
ありがとうございました。
$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;
}