我正在尝试将主目录路径更改为多个用户。
我在 Ppowershell 中编写了一个脚本,它可以像这样更改用户名的路径:
\\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"
}
有人知道为什么这不起作用吗?
答案1
这是因为 Powershell 处理引号中的变量的方式。基本上,而不是获取
$_.SamAccountName
你实际上得到了
$_ + "SamAccountName"
要解决这个问题,只需使用以下方法封装您的变量:
Set-ADUser $_.SamAccountName -HomeDrive "Z:" -HomeDirectory "\\serverName\shareName\$($_.SamAccountName)"
更新:@JScott 告诉我,这种方法被称为“子表达式”
答案2
$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"
}