powershell - 比较用户 AD 和 CSV 文件列 Powershell
问题描述
我在 Powershell 中并不是很擅长,我尝试编写一个脚本来将 CSV 中的“用户”列与我的所有用户 AD 进行比较。
我需要让所有用户都在 CSV 中,而不是在我们的 AD 中。
这是我写的:
$csvfile = Import-CSV USERAccountstocompare.csv
$alladusers = Get-ADUser -Filter * | Select sAMAccountName
foreach($user in $alladusers){
$userAD = $alladusers.SamAccountName
foreach($usercsv in $csvfile){
if ($usercsv | where {$_.user -ne "$userAD"}){ write "$usercsv"}
else{}
}
}
当我在 if 命令之前写一个 $usercsv 时;我得到了好的用户,但在 if 之后,它在之前用 @{User= 写入所有用户,比如“@{User=username}”,所以比较不起作用。
谢谢 :)
解决方案
为此,您不需要 foreach 循环;只需过滤Where-Object
.
假设User
CSV 中的列包含 SamAccountNames:
$csvUsers = Import-Csv -Path 'D:\Test\USERAccountstocompare.csv'
$allADUsers = Get-ADUser -Filter * | Select-Object -ExpandProperty sAMAccountName
$notADUsers = $csvUsers | Where-Object { $allADUsers -notcontains $_.User }
# output on screen
$notADUsers | Format-Table -AutoSize
# output to new CSV file
$notADUsers | Export-Csv -Path 'D:\Test\UsersNOTinAD.csv' -NoTypeInformation
推荐阅读
- unity3d - 放置对象的 Unity 按钮
- javascript - 来自 JavaScript 中 JSON 的 Protobuf 消息
- mysql - Gitlab Ci Pipeline 问题:Nodejs 无法连接到 Mysql 数据库
- regex - 正则表达式查找与特定模式匹配的行
- python - 如何改善此功能的 scipy 最小化结果?
- c - STM32 UART传输问题(阻塞和中断模式)
- javascript - 如何重用代码并使其更灵活?
- reactjs - 如何在两个设定日期之间使用 Material UI “进度指示器”?
- c++ - C++ 函数挂起与句柄恢复
- javascript - 动态数据库字段值(HTML 和实时 Firebase)