使用PowerShell,为给定显示名称的用户设置AD主目录
我想根据包含用户名列表的csv文件设置主目录 我设想有一个get user、set user和foreach命令的组合来提供正确的更新。 下面是我正在使用的代码,但我无法进行逻辑跳转,将此输出传输到设置主目录的Set ADUser命令使用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
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))那么我如何使用foreach循环设置主目录呢?我有一个包含显示名称列表的csv文件。csv的内容是什么样子的?我不知道里面有什么字段。谢谢你,特雷弗。不幸的是,我的工作阻塞了imgur,所以我无法看到您的示例屏幕截图。我已经把你的答案标记为正确,因为这基本上就是我想要做的。