Я пытаюсь изменить путь к домашнему каталогу для группы пользователей.
Я написал сценарий в 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"
}
Кто-нибудь может понять, почему это не работает?
Это связано с тем, как Powershell обрабатывает переменные в кавычках. По сути, вместо того, чтобы получать
$_.SamAccountName
Вы действительно получали
$_ + "SamAccountName"
Чтобы решить эту проблему, просто используйте следующий метод для инкапсуляции ваших переменных:
Set-ADUser $_.SamAccountName -HomeDrive "Z:" -HomeDirectory "\\serverName\shareName\$($_.SamAccountName)"
Обновление: @JScott сообщил мне, что этот метод называется "подвыражение"
$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"
}