Listbox foreach循环

时间:2017-05-08 20:04:00

标签: powershell

问题:在Sapien Powershell Studio中使用以下代码时,计算机名称会正确返回,但计算机描述会返回为一行。换句话说,所有计算机描述都不是分开的,而是显示为一个长列表。

如果删除了Out-String,我只返回一个计算机描述。

我在输出到文本框之前使用了基本相同的代码并且没有问题。

$searchbutton_Click={
#TODO: Place custom script here

$computerlist.Items.clear()

$username = "*" + $searchbox.text + "*"

$computers = Get-ADComputer -Filter { Description -like $username } -
Properties description | select -expand name

foreach ($computer in $computers)
{
    $compdescription = (Get-ADComputer -Filter { Description -like $username 
    } -Properties description).description | out-string

    $results = New-Object System.Windows.Forms.listviewitem($computer)

    $results.subitems.add($compdescription)

    $computerlist.Items.Add($results)



}

}

1 个答案:

答案 0 :(得分:0)

有两件事是错的。

(1)您对Get-ADComputer使用了两次相同的查询。为什么?我认为第二个应该是下面的东西。如果没有,则存储所有计算机的描述的$ compdescription值。

(Get-ADComputer -Filter { name -like $computer 
    } -Properties description).description

(2)关于返回一个包含所有描述的大字符串的问题。来自文档:

  

默认情况下,Out-String会累积字符串并将其作为a返回   单个字符串,但您可以使用stream参数进行指导   Out-String一次返回一个字符串。

MSDN

了解详情