powershell - Powershell Active Directory 脚本 - 通过更改显示名称批量禁用
问题描述
我正在寻求帮助来创建/完成一个 Powershell 脚本,该脚本从 .csv 文件中获取用户的 samAccountName,在特定域中禁用该用户,例如“foo.bar”,然后在其 AD 显示名称前添加一个字符。这是一个批量禁用脚本,它必须将该单个字符添加到其显示名称的前面/开头。
到目前为止,我所拥有的是:
Import-Module ActiveDirectory
$Server = read-host "Enter Domain to query/domain controller"
Import-Csv "C:\Temp\samAccountNames.csv" | ForEach-Object {
$samAccountName = $_."samAccountName"
Get-ADUser -Server $Server -Identity $samAccountName | Disable-ADAccount
}
现在,我需要做的是在显示名称前面加上“#”字符。
(例如“Doe, John”变成“#Doe, John”)
解决方案
您需要先检查是否可以找到该用户,然后更新显示名称并禁用该帐户
Import-Module ActiveDirectory
$characterToPrepend = '#' # the character you want to prepend the DisplayName with
$Server = Read-Host "Enter Domain to query/domain controller"
Import-Csv "C:\Temp\samAccountNames.csv" | ForEach-Object {
$ADUser = Get-ADUser -Server $Server -Filter "SamAccountName -eq '$($_.samAccountName)'" -Properties DisplayName -ErrorAction SilentlyContinue
if ($ADUser) {
# test if the user is not already disabled
if (!$ADUser.Enabled) {
Write-Host "User '$($_.samAccountName)' is already disabled"
}
else {
$newDisplayName = $characterToPrepend + $ADUser.DisplayName
# set the new displayname and disable the user
$ADUser | Set-ADUser -DisplayName $newDisplayName -Enabled $false
}
}
else {
Write-Warning "User '$($_.samAccountName)' does not exist"
}
}
我-Filter
用来获取用户而不是-Identity
参数,因为后者会在找不到具有该 SamAccountName 的用户时引发异常
推荐阅读
- sql - 使用同一 ID 下的多个相关行插入新行的 SQL 脚本
- python - Python3 - ModuleNotFoundError:没有名为“numpy”的模块
- ruby-on-rails - 创建 Stripe 客户时没有附加付款来源错误
- spring-cloud-config - Spring Config Cloud 和可变属性
- python - Python中的OOP纸牌
- python-3.x - Python/Panda:如何生成二维记录
- c++ - DirectX 9 在重置调用中保留状态
- hazelcast-jet - Hazelcast Jet 只为定制水槽提供一次保证
- android - 扩展类时出现 ClassNotFoundException
- javascript - 通量存储变量不在范围内