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' 替换为 ' | 选择名称',什么都没有返回。

我使用上述语法是因为下面的代码有效(它获取机器的 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

单独选择名称不起作用,因为它返回对象而不是字符串。在这种情况下,要将其用作列表框项,您需要字符串。

于 2012-05-19T18:01:21.060 回答