使用 Powershell 更新用户主目录

使用 Powershell 更新用户主目录

我正在尝试将主目录路径更改为多个用户。

我在 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"  
}

相关内容