一个简单的域账户导出脚本小记(需配合正则)
前言:导出域账号的简单脚本,有论坛网友需要的话,直接拿去用吧。使用 @niansan 的 ADUserManagement 工具导出也行。
(https://www.52pojie.cn/forum.php?mod=viewthread&tid=1861896&highlight=%D3%F2%D3%C3%BB%A7)
需求:
公司每月需要对生产人员总数进行核对,域账户导出相关生产人员与人事进行核对,确认无误上报给领导。
实现:
导出指定的几个相关组织单元进行汇总统计,排除系统自带用户。
源码地址:https://github.com/hoochanlon/scripts/blob/main/d-pwsh-dc/%E5%9F%9F%E7%94%A8%E6%88%B7%E5%AF%BC%E5%87%BA.ps1
```
# 导出文件路径
$outputFile = "C:\Users\Administrator\Desktop\域用户清单.txt"
# 清空或创建导出文件
Out-File -FilePath $outputFile # -Encoding UTF8 -Force
# 导入 Active Directory 模块
Import-Module ActiveDirectory
# 设置组织单元的 DistinguishedName
$ous = @(
"OU=生产团队,DC=CSXZX,DC=com",
"OU=培训,DC=CSXZX,DC=com",
"OU=临时保存权限,DC=CSXZX,DC=com"
)
foreach ($ou in $ous) {
# 获取组织单元中的所有用户
$users = Get-ADUser -Filter * -SearchBase $ou -Properties Name
# 将用户名字写入文件
if ($users) {
$ouName = (Get-ADOrganizationalUnit -Identity $ou).Name# 获取 OU 名称
Add-Content -Path $outputFile -Value "组织单元:$ouName"
foreach ($user in $users) {
Add-Content -Path $outputFile -Value $user.Name# 只保留用户名称
}
Add-Content -Path $outputFile -Value "`r`n"# 添加换行分隔符
} else {
Write-Host "未找到任何用户在组织单元 $ouName 中。"
}
}
Write-Host "已导出所有指定组织单元中的用户名字到 $outputFile"
# 暂停 5 秒
Start-Sleep -Seconds 5
```
![ ](https://cdn.sa.net/2024/11/09/MTlqRW1XKI5VuSQ.png)
再打开 vscode 使用正则表达式
* 匹配 所有 组织单元 及后续字符所有的行:`^.*组织单元.*$`
* 匹配 所有 生产 及后续字符所有的行:`^.*生产.*$`
* 匹配 所有 测试 及后续字符所有的行:`^.*测试.*$`
* 删除所有空白行:`^\s*\n`
去除不必要的域控测试账户,以及相关公共账户,删除后再删除空白行即可。
![ ](https://cdn.sa.net/2024/11/09/xCmnw36g2H7TUPc.png)
![ ](https://cdn.sa.net/2024/11/09/D3mdk6BoLCTaGvN.png) 感谢分享!
页:
[1]