【发布时间】:2020-04-14 03:21:21
【问题描述】:
我有这个工作脚本:
Import-CSV -Path "$home\desktop\Script\fi13.04.20.csv" | ForEach-Object {
Get-ADUser -Filter "employeeid -like '*$($_.employeeid)*'" -Properties employeeid | select employeeid,name,SamAccountName
} | Export-CSV "$home\desktop\Script\fi-san-out.csv" -Encoding UTF8 -NoTypeInformation
我给他一个带有employeeid 的CSV 文件,并有一个带有SamAccountName 的回文件... Я даю ему файл с employeeid и получаю обратно файл 带有某些参数。
这是一个改进的版本-
$csv = Import-CSV -Path "$home\desktop\Script\fi13.04.20.csv"
$csvOutput = "$home\desktop\Script\fi-san-out.csv"
$object = @()
foreach($employee in $csv){
$ADUserObject = Get-ADUser -Filter "employeeID -eq '$($employee.employeeID)'" -Properties samAccountName, displayName ,employeeID -ErrorAction SilentlyContinue
if($ADUserObject){
$object += New-Object psobject -Property @{
displayName = $ADUserObject.displayName
samAccountName = $ADUserObject.SamAccountName
employeeID = $ADUserObject.employeeID
}
}else{
Write-Host "No employee found for $($employee.employeeId)" -ForegroundColor Red
}
}
if($object){
$object | Select-Object displayName, samAccountName, employeeID | Export-Csv -Path $csvOutput -Delimiter "," -Encoding UTF8 -NoTypeInformation
}
第一个版本产生的结果要多得多,因为如果employeeID 包含错误“例如,CSV 12345 中的employeeID 和ActiveDirectory 123456 中的employeeID”,它会给出结果。 在改进的版本中,任何不准确的 ID 都会引发错误。 问题是如何更改改进的版本,以便即使出现错误也能产生结果(如示例中所示)? 我刚开始学习 PS,在帮助下写了一个改进版。
【问题讨论】:
-
是否有某些原因不能简单地将第二个代码示例中的
"employeeID -eq '$($employee.employeeID)'"测试与第一个代码示例中的"employeeid -like '*$($_.employeeid)*'"测试交换? -
我试试这个。但问题没有解决。
-
在第二个代码示例中的什么时候代码没有给出您期望的结果......以及实际结果与预期结果有何不同?
标签: powershell powershell-2.0 powershell-3.0 sysadmin