在我的组织中,我们花费大量时间根据用户更改角色等更改用户主文件夹路径。我编写了一个非常简单的PowerShell脚本,用于设置来自csv的homedir路径:
Import-Csv C:\Dir\homedir.csv | ForEach-Object {
Set-ADUser $_.SamAccountName –HomeDirectory $_.HomeDirectory
}
我想要做的是检查用户是否存在-profilepath(漫游配置文件)并将其(如果存在)更改为"$_.HomeDirectory"\Profile
(所有漫游配置文件都遵循此构造) 。如果不存在,它将简单地跳到下一个用户并按要求执行工作。
我玩过if
语句,真的弊大于利。任何人都有生命线他们可以扔我?
答案 0 :(得分:1)
如果希望-Properties ProfilePath
命令返回配置文件路径,则需要指定Get-ADUser
。
$user = Get-ADUser $_.SamAccountName -Properties ProfilePath
If ($user.ProfilePath -ne $null) {
Set-ADUser $_.SamAccountName -ProfilePath "$($_.HomeDirectory)\Profile"
}
答案 1 :(得分:1)
很难说你被困在哪里,但我认为它在'属性'位。发出命令Get-ADUser
时,默认情况下不会提取ProfilePath。这样的事情可以解决问题:
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
}