使用PowerShell,为给定显示名称的用户设置AD主目录

使用PowerShell,为给定显示名称的用户设置AD主目录,powershell,active-directory,Powershell,Active Directory,我想根据包含用户名列表的csv文件设置主目录 我设想有一个get user、set user和foreach命令的组合来提供正确的更新。 下面是我正在使用的代码,但我无法进行逻辑跳转,将此输出传输到设置主目录的Set ADUser命令 function ConvertUser($user) { $search = New-Object DirectoryServices.DirectorySearcher([ADSI]“”) $search.filter = “(&(ob

我想根据包含用户名列表的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
# 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;
我肯定我错过了一些简单的东西,但唉,我是一个Powershell新手


编辑:我想要ConverUsers的输出,即用户名,然后通过管道将其传输到SETADUSER命令。每当我尝试通过管道将其设置为set-aduser时,我都会收到语法错误、空管道或错误的数据输出。

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

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
# 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;
}

同意。但是,我只有显示名,此命令需要用户名。您可以通过在Active Directory属性上运行带有LDAP筛选器的
displayname
运行
get-ADUser
来获取用户的帐户信息:
get-ADUser-LDAPFilter'(&(displayname=Trevor-Sullivan))