我想根据包含用户名列表的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时,我都会遇到语法错误,空管或错误的数据输出。
答案 0 :(得分:5)
您正在寻找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;
}