我的目标是按名称从我的打印服务器中获取打印机列表,并将它们作为单独的项目添加到组合框中,以供用户选择。这是我想出的,但是没有用:
$Hospital = Get-Printer -ComputerName servername | where{$_.Name -like “*Name*”} | format-list name
$ComboBox_Location.Add_Click{
switch ($ComboBox_Location.SelectedItem){
"Hospital"{
$ComboBox_Printer.Clear();
foreach($Name in $Hospital){
$ComboBox_Printer.Items.Add($Name.Name)
}
}
}
}
我认为它与“ foreach”有关,但是我不太理解。我见过类似的东西
foreach($Name in $Names)
,我不明白如何通过减去一个字母来在变量中进行搜索?我不知道。此列表中有40多台打印机,我希望它们中的每一个都作为单独的项出现在此组合框中。
答案 0 :(得分:0)
您的代码无法正常工作,因为您已将| format-list
放在$Hospital = ..
行的末尾。这正在将对象类型更改为格式化对象,除了显示以外对其他所有对象均无用。
删除| format-list
,在我看来您的代码应该可以正常工作。
您正确使用了ForEach
。 “魔术”就是在循环的每次迭代中填充您决定使用的任何变量。因此,如果您有$Names
的集合,那么ForEach ($Name in $Names) { .. }
将经历$Names
集合,并且一次将其包含的每个对象放入$ Name中,然后可以在$ Name中使用它。花括号以根据需要引用/操作/输出。因此,只要您在$Name
内始终使用ForEach
,就可以随意使用它。