PowerShell - 为-Filter使用对象变量

时间:2017-07-04 22:57:16

标签: powershell powershell-v5.0

我不知道为什么这不起作用,甚至搜索什么。

我有一个简单的函数Get-FileInput。它只是调用Import-CSV并在传递数据之前检查特定列。

我有$ filterType ="姓名"

我的测试TSV格式为

db stuff Name 1 2 spare40

然后我有了这个

$data = Get-FileInput
foreach ($computer in $data)
{
    Get-ADComputer -Filter {$filterType -eq "comp1"} | Format-Table
    Write-Host "$($computer.$filterType)"
    Get-ADComputer -Filter {$filterType -eq "$($computer.$filterType)"} | Format-Table
}

第一台Get-ADComputer工作正常并输出一张表。

写主机在终端中产生输出comp1。

第二个Get-ADComputer运行,但不输出任何内容。

1 个答案:

答案 0 :(得分:2)

不要将脚本块{...})用作-Filter参数 - 它可以在简单的情况下使用(例如{{1 }}但是在更复杂的({$filterType -eq "comp1"})中分崩离析。

{$filterType -eq "$($computer.$filterType)"}参数的类型为-Filter,您应该将其构造为

[string]

有关背景资料,请参阅我的this answer