【问题标题】:Using PowerShell, set the AD home directory for a user, given the display name使用 PowerShell,为用户设置 AD 主目录,给定显示名称
【发布时间】:2014-01-09 20:07:22
【问题描述】:

我想根据包含用户名列表的 csv 文件设置主目录。

我想有一个 get-user、set-user 和 foreach 命令的组合可以提供正确的更新。 这是我正在使用的代码,但我无法进行逻辑跳转以将此输出传送到设置主目录的 Set-ADUser 命令。

function ConvertUser($user)
{
    $search = New-Object DirectoryServices.DirectorySearcher([ADSI]“”)
    $search.filter = “(&(objectClass=user)(displayName=$user))”
    $results = $search.Findall()

    foreach($result in $results){
         $userEntry = $result.GetDirectoryEntry()
         Write-Output($userEntry.sAMAccountName)
    }
 }

function ConvertUsers
{
     process{
        foreach($user In $_){
            ConvertUser($user)
        }
    }
}

Get-Content ".Users.txt" | ConvertUsers

我确定我错过了一些简单的东西,但可惜我是 Powershell 新手。

编辑:我希望 ConverUsers 的输出是用户名,然后通过管道将其传递给 set-aduser 命令。每当我尝试将其通过管道传递给 set-aduser 时,我都会遇到语法错误、空管道或错误的数据输出。

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

    您正在寻找Set-ADUser cmdlet。它有一个-HomeDirectory 参数,显然允许您设置用户的主目录,还有一个-Identity 参数,用于指定您正在编辑的用户。它还有一个-HomeDrive 参数,用于指定其主目录的驱动器号。

    # 1. Get the user, based on their "display name"
    $User = Get-ADUser -LDAPFilter '(&(displayname=Trevor Sullivan))';
    # 2. Change the user's home directory and home drive
    Set-ADUser -Identity $User.SamAccountName -HomeDirectory \\fileserver\users\trevor -HomeDrive U;
    

    鉴于以下 CSV 文件内容:

    以下脚本应设置主驱动器:

    # 1. Import the user data from CSV
    $UserList = Import-Csv -Path c:\test\Users.csv;
    
    # 2. For each user ...
    foreach ($User in $UserList) {
        # 2a. Get the user's AD account
        $Account = Get-ADUser -LDAPFilter ('(&(displayname={0}))' -f $User.DisplayName);
        # 2b. Dynamically declare their home directory path in a String
        $HomeDirectory = '\\fileserver\users\{0}' -f $Account.SamAccountName;
        # 2c. Set their home directory and home drive letter in Active Directory
        Set-ADUser -Identity $Account.SamAccountName -HomeDirectory $HomeDirectory -HomeDrive u;
    }
    

    【讨论】:

    • 同意。但是,我只有显示名称,这个命令需要用户名。
    • 您可以通过在displayname Active Directory 属性上使用 LDAP 过滤器运行 Get-ADUser 来获取用户的帐户信息:Get-ADUser -LDAPFilter '(&(displayname=Trevor Sullivan))';
    • 那么我将如何使用 foreach 循环设置主目录?我有一个包含显示名称列表的 csv 文件。
    • CSV 的内容是什么样的?我不知道里面有什么字段。
    • 谢谢特雷弗。不幸的是,我的工作阻止了 imgur,所以我无法看到您的示例屏幕截图。我已将您的答案标记为正确,因为这基本上是我想要做的。
    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 2019-10-22
    • 1970-01-01
    相关资源
    最近更新 更多