Usando o Powershell para atualizar o diretório inicial dos usuários

3

Estou tentando alterar o caminho do diretório inicial para um grupo de usuários.

Eu escrevi um script no Ppowershell que deveria mudar o caminho do nome de usuário assim:

\serverName\shareName\$_.SamAccountName

O problema é que eu obtenho o DistinguishedName em vez do SamAccountName assim:

\serverName\shareName\CN=UserName,OU=OuName,DC=domainName,dc=local

Este é o script que eu escrevi:

Get-ADUser -Filter * -SearchBase 'ou=XX,dc=domainName,dc=local' | ForEach-Object {
Set-ADUser $_.SamAccountName -HomeDrive "Z:" -HomeDirectory "\serverName\shareName\$_.SamAccountName"
}

Alguém pode ver por que isso não está funcionando?

    
por eliko 15.12.2014 / 11:06

2 respostas

7

Isso é devido ao modo como o Powershell lida com variáveis entre aspas. Basicamente, ao invés de ficar

$_.SamAccountName

Você estava realmente conseguindo

$_ + "SamAccountName"

Para resolver isso, basta usar o seguinte método para encapsular suas variáveis:

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

Atualização: @JScott informou que esse método é chamado de "subexpressão"

    
por 15.12.2014 / 11:24
-1
$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"  
}
    
por 25.06.2015 / 22:48