我正在使用软件列表和Import-Excel模块(Link),尝试创建软件名称和版本号的哈希表,每个主机都作为自己的工作表导出。我在模块中使用Export-MultipleExcelSheets cmdlet。
以下是我的$ Inventory变量的示例:
Count Name Group ----- ---- ----- 103 10.105.122.27 {@{Host=10.105.122.27; Name=Update Rollup 10 for Exchange Server 2010 Service Pack 3 (KB3049853); Version=1}, @{Host=10.105.122.27; Name=Update Rollup 14 for Exchange Server 2010 Service Pack 3 (K... 103 10.105.122.28 {@{Host=10.105.122.28; Name=Update Rollup 10 for Exchange Server 2010 Service Pack 3 (KB3049853); Version=1}, @{Host=10.105.122.28; Name=Update Rollup 14 for Exchange Server 2010 Service Pack 3 (K... 119 10.105.76.221 {@{Host=10.105.76.221; Name=Update Rollup 10 for Exchange Server 2010 Service Pack 3 (KB3049853); Version=1}, @{Host=10.105.76.221; Name=Update Rollup 15 for Exchange Server 2010 Service Pack 3 (K... 116 10.105.76.222 {@{Host=10.105.76.222; Name=Update Rollup 15 for Exchange Server 2010 Service Pack 3 (KB3184728); Version=1}, @{Host=10.105.76.222; Name=Update Rollup 16 for Exchange Server 2010 Service Pack 3 (K...
以下是我尝试使用的代码:
Foreach ($I In $Inventory)
{
$DataToGather.Add($I.Name, {$I.Group | Select-Object Name, Version})
}
Export-MultipleExcelSheets -Show -Autosize -Path "C:\Path\To\Software Inventory.xlsx" $DataToGather
我的代码没有错误,但它导致10张相同的软件列表(我知道这些机器没有完全相同的软件列表)。
对我正在做的事情有没有更好的方式?
答案 0 :(得分:1)
ScriptBlock { }
可能会导致您看到的行为,您应该将ScriptBlock { }
方法中的Add
更改为Parenthesis ( )
。
Foreach ($I In $Inventory)
{
# Change the $i.Group section to be surrounded by Parenthesis
$DataToGather.Add($I.Name, ($I.Group | Select-Object Name, Version))
}
如果这不起作用,请尝试注释掉Export-MultupleExcelSheets
函数,只需返回$DataToGather
变量即可查看结果,这可能会帮助您缩小问题范围。