ホームディレクトリパスを多数のユーザーに変更しようとしています。
ユーザー名のパスを次のように変更するスクリプトをPpowershellで作成しました。
\\serverName\shareName\$_.SamAccountName
問題は、SamAccountNameではなくDistinguishedNameを取得することです。
\\serverName\shareName\CN=UserName,OU=OuName,DC=domainName,dc=local
これは私が書いたスクリプトです:
Get-ADUser -Filter * -SearchBase 'ou=XX,dc=domainName,dc=local' | ForEach-Object {
Set-ADUser $_.SamAccountName -HomeDrive "Z:" -HomeDirectory "\\serverName\shareName\$_.SamAccountName"
}
なぜこれが機能しないのか誰にも分かりますか?
これは、Powershellが引用符で囲まれた変数を処理する方法が原因です。基本的に、というより
$_.SamAccountName
あなたは実際に得ていました
$_ + "SamAccountName"
これを解決するには、次のメソッドを使用して変数をカプセル化します。
Set-ADUser $_.SamAccountName -HomeDrive "Z:" -HomeDirectory "\\serverName\shareName\$($_.SamAccountName)"
更新:@JScottから、このメソッドは "subexpression" と呼ばれることが通知されました