2014-02-20 5 views
3

В моей организации мы тратим много времени на изменение пути к домашней папке пользователя на основе пользователей, меняющих роли и т. Д. Я написал очень простой скрипт powershell, который устанавливает путь homedir из csv. :Операторы PowerShell Active Directory IF

Import-Csv C:\Dir\homedir.csv | ForEach-Object { 
    Set-ADUser $_.SamAccountName –HomeDirectory $_.HomeDirectory 
} 

что я хотел бы, чтобы это также сделать, чтобы проверить пользователей на наличие в -profilepath (перемещаемый профиль) и изменить что (если таковой имеется) в "$_.HomeDirectory"\Profile (все перемещаемые профили следовать этой конструкции). Если нет, он просто перейдет к следующему пользователю и выполнит работу по мере необходимости.

Я играл с if заявлениями и действительно наносил больше вреда, чем пользы. Кто-нибудь получил спасательный круг, который они могут меня бросить?

ответ

1

Трудно сказать, где вы застреваете, но я предполагаю, что он находится в бит свойства. Профиль ProfilePath не потянут по умолчанию при выдаче команды Get-ADUser. Что-то вроде этого должно сделать трюк:

Import-Csv C:\Dir\homedir.csv | ForEach-Object { 

    $user = Get-ADUser $_.SamAccountName -Properties 'ProfilePath' 

    if($user.ProfilePath -ne $null) 
    { 
     $profilepath = $_.HomeDirectory + "\Profile" 
     Set-ADUser $user –ProfilePath $profilepath 
    } 
    Set-ADUser $_.SamAccountName –HomeDirectory $_.HomeDirectory 
} 
1

Необходимо указать -Properties ProfilePath, если вы хотите, чтобы команда Get-ADUser возвращала путь к профилю.

$user = Get-ADUser $_.SamAccountName -Properties ProfilePath 
If ($user.ProfilePath -ne $null) { 
    Set-ADUser $_.SamAccountName -ProfilePath "$($_.HomeDirectory)\Profile" 
} 
Смежные вопросы