我正在尝试将主目录path更改为一群用户。
我在Ppowershell中写了一个脚本,它应该改变用户名的path:
\\serverName\shareName\$_.SamAccountName
问题是,我得到DistinguishedName而不是SamAccountName像这样:
\\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使用引号处理variables的方式。 基本上,而不是得到
$_.SamAccountName
你真的得到了
$_ + "SamAccountName"
要解决这个问题,只需使用下面的方法来封装你的variables:
Set-ADUser $_.SamAccountName -HomeDrive "Z:" -HomeDirectory "\\serverName\shareName\$($_.SamAccountName)"
更新:@JScott已经通知我这个方法被称为“子expression式”
$users = Get-Content C:\temp\homedir\test.txt foreach ($user in $users) { $h = Get-ADUser $user -Properties * | select-object -expandproperty cn Set-ADUser $H -HomeDrive "H:" -HomeDirectory "\\my.domain.com\myserver\homedirs\$H" }