【问题标题】:Get PowerShell to search extension attribute in AD获取 PowerShell 以在 AD 中搜索扩展属性
【发布时间】:2017-07-20 21:53:09
【问题描述】:

我正在尝试让 PowerShell 导入包含员工 ID 号列表的 CSV 文件,并在 AD 中搜索这些号码。如果我按照现在的方式运行它,我不会得到任何结果,我只会得到它在进程结束时创建的空白 CSV 文件。

如果我告诉 PowerShell 写入主机 $.ID,它将为我提供导入 CSV 中所有 ID 的列表。所以它似乎能够很好地读取文件。我也进行了测试,如果我将 Get-ADUser -Filter "extensionAttribute13 -like '$.ID'" 替换为实际 ID 号而不是 $_.ID,我会得到我正在寻找的结果。

我不能 100% 确定在传递员工编号以返回我需要的数据时缺少什么。

Import-Csv C:\temp\emplid.csv |

ForEach {
    Get-ADUser -Filter "extensionAttribute13 -like '$_.ID'" -Server "dc01" -Properties * | select extensionAttribute13, Name, Description


} | Export-Csv C:\temp\employees.csv -NoTypeInformation

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: powershell csv foreach


    【解决方案1】:

    您需要在 $_.ID 周围放置一个子表达式 $():

    Import-Csv C:\temp\emplid.csv |
    
    ForEach {
        Get-ADUser -Filter "extensionAttribute13 -like '$($_.ID)'" -Server "dc01" -Properties * | select extensionAttribute13, Name, Description
    
    
    } | Export-Csv C:\temp\employees.csv -NoTypeInformation
    

    【讨论】:

    • 非常感谢!那行得通!您能否解释一下子表达式的确切作用?我以前从未使用过它。
    • 子表达式是一种在字符串中包含一些 PowerShell 代码并确保完整代码执行的方法。默认情况下,在双引号 " " 括起来的字符串中,PowerShell 将自动将任何 $variables 替换为字符串内容(或等效于对该变量执行 .tostring() 方法)。这不会自动扩展到 .properties (在您的代码中,它只是假设 .ID 是字符串的预期部分)。通过将其包含在子表达式中,您可以将 .ID 解释为代码,而不是文本。
    • 谢谢你现在说得通了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    相关资源
    最近更新 更多