0

そのため、ローカルにインストールされているすべてのアプリケーションを取得してリストボックスに入れようとしています。しかし、私はいくつかの問題を抱えています。以下のコードを使用するたびに:

$prog = (get-wmiobject win32_product -computer $current_hostname.text -property Name).Name
foreach($program in $prog)
 {
 $program_list_current.items.add($program)
 }

リストボックスに返されるのは、アプリケーションと各アプリの先頭にあるその他のテキスト/文字列です。「-property Name」が「 | 」に置き換えられる場合があります。name を選択しても、何も返されません。

以下のコードが機能するため、上記の構文を使用しています (マシンの AD グループを取得し、各グループをリストボックスに配置します)。

$processnames_t = (Get-ADComputer -Identity $current_hostname.text -Property MemberOf).MemberOf 
foreach ($processname in $processnames_t)
{
[void]$AD_list_current.Items.Add($processname)
}

ADグループでは機能するが、インストールされたアプリでは機能しない理由についてのアイデアはありますか? get-wmiobject の性質と何か関係があるのでしょうか。

ありがとう

4

1 に答える 1

1

あなたが見ている問題を実際に再現できませんでした。ただし、プログラム名については、置き換えることができます

$prog = (get-wmiobject win32_product -computer $current_hostname.text -property Name).Name

$prog = get-wmiobject win32_product -computer $current_hostname.text | Select -Exp Name

Select Name だけでは、文字列ではなくオブジェクトが返されるため、機能しません。この場合、リストボックス アイテムとして使用するには、文字列が必要です。

于 2012-05-19T18:01:21.060 に答える