Powershell - 不允许使用空管道元素

the*_*izy 4 csv powershell

每当我尝试将结果导出到csv文件时,我一直收到滚动错误消息 - "不允许空管元素".知道为什么会这样吗?

$apps = Import-CSV apps.csv
$computers = Import-CSV compobj.csv
foreach($computer in $computers) {    
    $computerLob = $computer.lob
    $lobApps = $apps | ? {$_.lob -eq $computerLob}
    foreach($app in $lobApps){
       $appLocation = $app.location
       $installed=Test-Path "\\$computerHostname\$appLocation"
       $computerHostname = $computer.hostname     
       $results = new-object psobject -property @{Computer=$computer.hostname;App=$app.appname;Installed=$installed} | select Computer,App,Installed 
       $results 
    } 
} | Export-csv "results.csv" -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

我试过这样做:

$results | Export-csv "results.csv" -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

在foreach循环中但它只返回最后一条记录.

mjo*_*nor 10

foreach循环不会输出到管道.您可以通过使循环成为子表达式来实现:

$apps = Import-CSV apps.csv
$computers = Import-CSV compobj.csv
$(foreach($computer in $computers) {    
    $computerLob = $computer.lob
    $lobApps = $apps | ? {$_.lob -eq $computerLob}
    foreach($app in $lobApps){
       $appLocation = $app.location
       $installed=Test-Path "\\$computerHostname\$appLocation"
       $computerHostname = $computer.hostname     
       $results = new-object psobject -property @{Computer=$computer.hostname;App=$app.appname;Installed=$installed} | select Computer,App,Installed 
       $results 
    } 
}) | Export-csv "results.csv" -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)


Dav*_*tin 7

我相信你遇到的问题是使用foreach和管道,你在foreach语句中处理你的项目,但仍然期望它们在管道上.

这是一个常见错误,并在文章Essential PowerShell:Understanding foreachEssential PowerShell:Understanding foreach(Addendum)中有更详细的解释.

你应该能够达到你想要的效果:

$apps = Import-CSV apps.csv
$computers = Import-CSV compobj.csv
$computers | foreach {
    $computer = $_
    $computerLob = $computer.lob
    $lobApps = $apps | ? {$_.lob -eq $computerLob}
    $lobApps | foreach {
       $app = $_
       $appLocation = $app.location
       $installed=Test-Path "\\$computerHostname\$appLocation"
       $computerHostname = $computer.hostname     
       new-object psobject -property @{Computer=$computer.hostname;App=$app.appname;Installed=$installed} 
    } 
} | Export-csv "results.csv" -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)


Sal*_*deh 6

一些流控制表达式不流式传输其输出。但它们可以分配给变量,但没有输出流。

您可以将表达式输出流放入子表达式中$(),然后使用另一个命令进行管道传输。