为什么我不能将 cmdlet [CimInstance] 的 return 值存储在数组列表中?
Why can't I store the return value of a cmdlet [CimInstance] inside an arraylist?
我目前正在编写一个脚本,我在其中检索主机上的以下数据:
- 已安装的打印机列表
- 已安装的打印机驱动程序列表
- 已用打印机驱动程序列表
目前我只是这样实现的:
$installedPrinters = Get-Printer
$installedDrivers = Get-PrinterDriver | Sort-Object -Property Name
$usedDrivers = $printerList | Sort-Object -Property DriverName | Select-Object DriverName | Get-Unique -AsString
出于方便的原因,我现在尝试使用数组列表而不是 3 个不同的变量来存储此数据,但我似乎无法以某种方式使它起作用。
一旦我尝试了类似的东西...
$data.Add({Get-Printer})
或
Get-Printer | $data.Add($_)
... 我得到一堆错误或只是值 'Get-Printers' 作为存储在数组列表中的字符串。
奇怪的是,如果我首先将 Get-Printer cmdlet 返回的数据存储在一个专用变量中,然后将此变量添加到数组列表中,它似乎可以工作。
有人可以帮我解决这个问题吗?到目前为止,这种行为对我来说似乎没有任何意义。
你的语法有问题。
使用以下之一(假设 $data
包含一个 System.Collections.ArrayList
实例):
$data.AddRange((Get-Printer))
或者,效率较低:
Get-Printer | ForEach-Object { $null = $data.Add($_) }
我目前正在编写一个脚本,我在其中检索主机上的以下数据:
- 已安装的打印机列表
- 已安装的打印机驱动程序列表
- 已用打印机驱动程序列表
目前我只是这样实现的:
$installedPrinters = Get-Printer
$installedDrivers = Get-PrinterDriver | Sort-Object -Property Name
$usedDrivers = $printerList | Sort-Object -Property DriverName | Select-Object DriverName | Get-Unique -AsString
出于方便的原因,我现在尝试使用数组列表而不是 3 个不同的变量来存储此数据,但我似乎无法以某种方式使它起作用。 一旦我尝试了类似的东西...
$data.Add({Get-Printer})
或
Get-Printer | $data.Add($_)
... 我得到一堆错误或只是值 'Get-Printers' 作为存储在数组列表中的字符串。 奇怪的是,如果我首先将 Get-Printer cmdlet 返回的数据存储在一个专用变量中,然后将此变量添加到数组列表中,它似乎可以工作。
有人可以帮我解决这个问题吗?到目前为止,这种行为对我来说似乎没有任何意义。
你的语法有问题。
使用以下之一(假设 $data
包含一个 System.Collections.ArrayList
实例):
$data.AddRange((Get-Printer))
或者,效率较低:
Get-Printer | ForEach-Object { $null = $data.Add($_) }