0

インストールされているプログラムをpowershellで探して、結果をファイルに出力できるようにしたいです。これまでのところ、インストール プログラムを一覧表示し、プログラムの名前を含む文字列を選択するものがありますが、システムの一覧に使用するテキスト ファイルを指定する方法と、その方法がわかりません。きれいに出力します。

Get-WmiObject -Class Win32_Product -cn $computernamehere | Select-Object -Property Name | Sort-Object Name | Select-String Vmware | Out-File C:\Users\ajstepanik\Desktop\installed_programs.txt

次のような方法で出力したいと思います。

COMPUTER1 - VMware Horizon View Client
COMPUTER2 - VMware Horizon View Client
COMPUTER3 - VMware Horizon View Client

現在、それは出力します:

@{Name=VMware Horizon View Client}
@{Name=VMware Horizon View Client}
@{Name=VMware Horizon View Client}
4

2 に答える 2

1

あなたの場合、 についての以前の発言を撤回します-ExpandProperty。オブジェクト プロパティではなく文字列配列のみを返すという点で、私はまだ正しいです。ただし、オブジェクトのままにして、探しているプロパティ「コンピューター」を追加するだけで、より多くのオプションが得られると思います。つまり、それを素敵な CSV として使用できるということです。あなたが示していないいくつかのループ構造がここにあると仮定します。

$list = Get-Content C:\Users\ajstepanik\Desktop\computers.txt
$list | ForEach-Object{
    $computer = $_
    Get-WmiObject -Class Win32_Product -ComputerName $computer | 
            Select-Object -Property Name | 
            Sort-Object Name | 
            Where-Object{$_.Name -match "Citrix"} | 
            Add-Member -MemberType NoteProperty -Name "Computer" -Value $computer -passthru
} | Export-Csv -NoTypeINformation -Path C:\temp\path.csv

オブジェクトを保持していたselect-stringため、 をWherenに変更しました。のプロパティを追加するためにMatch使用します。今、私たちは使用することができますAdd-MemberComputerExport-CSV

foreach($x in $y)他の foreach のように出力が機能しないことを忘れていました。

于 2014-12-10T17:15:59.263 に答える