任何人都能解释一下细节吗?如果我使用创建对象
$var = [PSObject]@{a=1;b=2;c=3}
Run Code Online (Sandbox Code Playgroud)
然后我使用getType()PowerShell 查找它的类型告诉我它的类型为Hashtable.
当使用Get-Member(别名gm)来检查对象时,很明显已经创建了一个哈希表,因为它有一个keys和一个values属性.那么"普通"散列表的区别是什么?
另外,使用PSCustomObject有什么好处?使用这样的东西创建一个
$var = [PSCustomObject]@{a=1;b=2;c=3}
Run Code Online (Sandbox Code Playgroud)
对我来说唯一可见的区别是PSCustomObject的不同数据类型.此外,还有一个检查gm显示现在每个键都已添加为NoteProperty对象,而不是键和值属性.
但我有什么优势?我可以通过使用其键来访问我的值,就像在哈希表中一样.我可以在PSCustomObject中存储多个简单的键值对(例如键对象对),就像在哈希表中一样.那有什么好处?有什么重要的区别吗?
如何更改我的代码生成的输出的列顺序:
$apps = Import-CSV apps.csv
$computers = Import-CSV compobj.csv
foreach ($computer in $computers) {
$computerLob = $computer.lob
$lobApps = $apps | ? {$_.lob -eq $computerLob }
foreach ($app in $lobApps) {
$computerHostname = $computer.hostname
$appLocation = $app.location
$installed=Test-Path "\\$computerHostname\$appLocation"
New-Object PSObject -Property @{
Computer=$computer.hostname
App=$app.appname
Installed=$installed
}
}
Run Code Online (Sandbox Code Playgroud)
目前它按以下顺序生成列:Installed,App,Computer.
我希望按以下顺序进行:Computer,App,Installed.