【发布时间】:2017-08-31 00:33:46
【问题描述】:
我当前项目的输出和导出存在几个问题。我正在使用 cmdlet Get-RemoteProgram 通过网络和注册表项获取已安装的软件。
这是我现在的代码:
function Get-RemoteProgram ....
$computername = Import-Csv "C:\data\test\test.csv" |
select -ExpandProperty PCName
$regex = @("Program1|Program2|Program3")
$items = @()
foreach ($computer in $computername) {
if (Test-Connection $computer -ErrorAction SilentlyContinue -Count 1) {
$query = Get-RemoteProgram -ComputerName $computer -Property DisplayVersion |
where {$_.ProgramName -match $regex}
$obj = New-Object -Type PSObject
$obj | Add-Member -Name ("Computername") -Value $computer -MemberType NoteProperty -Force
$maxcount = $query.ProgramName.Count
if ($maxcount -gt 1) {
for ($i=0; $i -lt $maxcount; $i++) {
$progandversion = $query.ProgramName[$i] + $query.DisplayVersion[$i]
$obj | Add-Member -Name ($progandversion) -Value "Available" -MemberType NoteProperty -Force
}
} elseif ($maxcount -eq 1) {
$progandversion = $query.ProgramName + $query.DisplayVersion
$obj | Add-Member -Name ($progandversion) -Value "Available" -MemberType NoteProperty -Force
}
$obj | Add-Member -Name ("ProgrammVersion$i") -Value $query.DisplayVersion[$i] -MemberType NoteProperty -Force
$items += $obj
}
$items | Export-Csv c:\daten\inventur\output_final.csv -Append -Force
Write-Host "$computer has been checked.."
}
我现在遇到的问题是我的脚本没有列出我正在寻找的所有不同的程序。它应该导出计算机名,然后 - 在同一行中 - 如果安装了软件,则输出一个可用的名称,如果未找到该程序,则保持它的清洁。
这就是我现在得到的输出:
#TYPE System.Management.Automation.PSCustomObject 计算机名,“程序 1”,“程序 2” 计算机1,"可用","可用" 计算机1,"可用","可用" 计算机2,, 计算机1,"可用","可用" 电脑3,, 计算机2,, 计算机1,"可用","可用"我不知道为什么计算机在输出中多次出现。
我想要这样:
计算机名称、程序 1、程序 2、程序 3、程序 4 计算机1,可用,,可用,, 计算机2,可用,,,, 计算机3,,,可用, 计算机4,,,,你能帮我吗?
【问题讨论】:
标签: powershell csv export output