如何更改代码生成的输出的演示文稿:
$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){
$computerHostname = $computer.hostname
$appLocation = $app.location
$installed=Test-Path "\\$computerHostname\$appLocation"
New-Object PSObject @{Computer=$computer.hostname;App=$app.appname;Installed=$installed}
}
}
我想要更改代码的演示文稿。这就是它的样子:
Name Value
---- -----
Installed True
App App1
Computer 171.159.192.10
Installed True
App App2
Computer 171.159.192.10
我希望它看起来像这样:
Computer App1 App2
----------- ------ -----
171.159.192.10 True True
答案 0 :(得分:2)
您将哈希表传递给New-Object
作为其ctor参数而不是属性集。将其更改为:
New-Object PSObject -Property @{
Computer=$computer.hostname
App=$app.appname
Installed=$installed
}
答案 1 :(得分:1)
如果您使用的是PowerShell V3,而不是使用new-object,则可以执行以下操作:
[pscustomobject]@{Computer=$computer.hostname;App=$app.appname;Installed=$installed}
在V2上,不要忘记使用-Property
参数,例如:
new-object psobject -property @{Computer=$computer.hostname;App=$app.appname;Installed=$installed}
要强制输出顺序,您可以使用Format-Table:
$obj = new-object psobject -property @{Computer=$computer.hostname;App=$app.appname;Installed=$installed}
$obj | Format-Table Computer,App,Installed
答案 2 :(得分:0)
这就是我的意思(在评论中提出的OP问题的后续行动,太大而不适合那里):
function MyFunction(){
$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){
$computerHostname = $computer.hostname
$appLocation = $app.location
$installed=Test-Path "\\$computerHostname\$appLocation"
New-Object PSObject @{Computer=$computer.hostname;App=$app.appname;Installed=$installed}
}
}
}
MyFunction | select Computer,App,Installed
用于证明上述内容的简化测试用例应该有效:
function MyFunction(){
New-Object PSObject -Property @{
Computer="computer"
App="app"
Installed="installed"
}
}
MyFunction | select Computer,App,Installed