【问题标题】:Search powershell by CSV for Computer name通过 CSV 搜索 powershell 以获取计算机名称
【发布时间】:2014-09-11 13:43:46
【问题描述】:

我的任务是搜索包含 1000 多个计算机名称的 CSV 文件。我想知道是否有办法通过 CSV 文件使用 Get-ADComputer 搜索 AD 以查找计算机名称,如果它们存在于活动目录中,则返回输出。到目前为止,除了手动操作之外,我还没有想出任何办法。

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

    您可以遍历 csv 中的计算机名称,但对于 1000 台计算机,这可能需要一段时间。

    另一种方法是从 csv 中的计算机名构建一个 LDAP 过滤器,并在一次操作中完成:

    $ComputerNames = Import-Csv c:\somedir\computers.csv |
     select -ExpandProperty ComputerName
    
    $NameFilters = $ComputerNames -replace '^','(Name=' -replace '$',')'
    $Filter = "'(|$NameFilters)'"
    
    Get-ADComputer -LDAPFilter $Filter
    

    【讨论】:

    • 导入模块 ActiveDirectory $ComputerNames = 导入 Csv c:\computers.csv | select -ExpandProperty ComputerName $NameFilters = $ComputerNames -replace '^','(' -replace '$',')' $Filter = "'(|$NameFilters)'" Get-ADComputer -LDAPFilter $Filter 这行得通吗?它似乎运行但不显示输出。
    • $ComputerNames 变量中有什么?应该是所有计算机名称的数组。
    • $ComputerNames 变量读取 CSV 文件并输出每个计算机名称。
    • 我在过滤器中有一组额外的单引号。尝试更新的脚本。
    【解决方案2】:
    Import-CSV MyCSV.CSV | Select-Object *,@{n='InAD';e={$n = $_.Name ; IF (Get-ADComputer -filter {Name -eq $n}) {$True} ELSE {$False}}} | Export-CSV MyNewCSV.CSV
    

    在巨型线路上。将“$_.Name”中的“Name”替换为包含计算机名称的列标题。

    (已编辑以添加说明和完整的 cmdlet 名称)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-01
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      相关资源
      最近更新 更多