PowerShell Active Directory IF语句

时间:2014-02-20 17:34:48

标签: powershell csv

在我的组织中,我们花费大量时间根据用户更改角色等更改用户主文件夹路径。我编写了一个非常简单的PowerShell脚本,用于设置来自csv的homedir路径:

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

我想要做的是检查用户是否存在-profilepath(漫游配置文件)并将其(如果存在)更改为"$_.HomeDirectory"\Profile(所有漫游配置文件都遵循此构造) 。如果不存在,它将简单地跳到下一个用户并按要求执行工作。

我玩过if语句,真的弊大于利。任何人都有生命线他们可以扔我?

2 个答案:

答案 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
}