我尝试使用PowerShell运行播发程序
$tpObject = Get-WmiObject -Namespace ROOT\ccm\Policy\Machine\ActualConfig -Class CCM_SoftwareDistribution `
| Select-Object -Property PKG_Manufacturer, PKG_Name, PKG_MIFVersion
输出结果为:
PKG_Manufacturer PKG_Name PKG_MIFVersion
---------------- -------- --------------
Microsoft Word v1234
Google Chrome v987
Microsoft Excel v987
etc
如何将其连接成字符串?我试过这个:
[string[]]$result = $tpObject.PKG_Manufacturer + $tpObject.PKG_Name + " - " + $tpObject.PKG_MIFVersion
$result
但它会显示所有PKG_Manufacturer,然后显示PKG_Name,然后显示PKG_MIFVersion
我希望以字符串形式显示 Microsoft Word - v1234 吗?
任何建议或意见将不胜感激。
TKS
答案 0 :(得分:1)
尝试一下:
$result=@()
Get-WmiObject -Namespace ROOT\ccm\Policy\Machine\ActualConfig -Class CCM_SoftwareDistribution | %{
$result += "$($_.PKG_Manufacturer) $($_.PKG_Name) - $($_.PKG_MIFVersion)"}
$result
答案 1 :(得分:0)
$tpObject = Get-WmiObject -Namespace ROOT\ccm\Policy\Machine\ActualConfig -Class CCM_SoftwareDistribution `
$tpobject | ForEach-Object{
"{0} {1} - {2}" -f $_.PKG_Manufacturer, $_.PKG_Name, $_.PKG_MIFVersion
}
查看-f
format operator
示例输出:
Microsoft Word - v1234
Google Chrome - v987
Microsoft Excel - v987
答案 2 :(得分:0)
我想你想要的是这样的
$list = New-Object 'System.Collections.Generic.List[string]'
Get-WmiObject -Namespace ROOT\ccm\Policy\Machine\ActualConfig -Class CCM_SoftwareDistribution `
| ForEach-Object $list.Add("$($_.PKG_Manufacturer) $($_.PKG_Name) - $($_.PKG_MIFVersion)")
要在字符串数组中连接和聚合值,您有几个选项。
首先,您可以连接字符串:
+
运算符(由您应用)在PowerShell中连接字符串-f
格式化方法(例如在C#中)"My PC {0} has {1} MB of memory." -f "L001", "4096"
$x = "Max"; Write-Output "I'm $x"
的双引号字符串(后:有时您需要扩展子表达式,如上例所示。请参阅Windows PowerShell Language Specification Version 3.0,第34页)。其次,您可以汇总结果:
$testArray = @()
和$testArray += $_
[string[]]$testArray = [string[]]
也与+=
一起使用,如下所示。$list = New-Object 'System.Collections.Generic.List[string]'
与添加方法$list.Add($_)
一起使用
还有更多...... 一般情况下,我会尽可能长时间地使用PS对象 在字符串数组中聚合以便稍后处理它是太多(C#)程序员的想法。
在您的密码中:
1.您无法使用=
运算符添加新数组元素,而是使用+=
:
$testArray = @()
$tempArray = "123", "321", "453"
$tempArray | ForEach {$testArray += $item }
$testArray