Используя 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"
}

Кто-либо может видеть, почему это не работает?

4
задан 15 December 2014 в 12:16
2 ответа

Это связано с тем, как Powershell обрабатывает переменные в кавычках. По сути, вместо получения

$_.SamAccountName

Вы фактически получали

$_ + "SamAccountName"

. Чтобы решить эту проблему, просто используйте следующий метод для инкапсуляции ваших переменных:

Set-ADUser $_.SamAccountName -HomeDrive "Z:" -HomeDirectory "\\serverName\shareName\$($_.SamAccountName)"

Обновление: @JScott сообщил мне, что этот метод называется "подвыражением"

8
ответ дан 3 December 2019 в 02:57
$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"  
}
-1
ответ дан 3 December 2019 в 02:57

Теги

Похожие вопросы