Я пытаюсь изменить путь корневого каталога к набору пользователей.
Я записал сценарий в 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"
}