我正在嘗試創建一個屬性與下面的代碼完全相同的對象。下面的代碼位創建具有2加入NoteProperties的$ TempValueICM對象:無法正確獲取屬性和對象
$TempValueICM = Invoke-Command -ComputerName $computer -ScriptBlock {
$AppPull = Get-ItemProperty HKLM:\software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion}
它創建$ temptValueICM與其中出現這樣DisplayName的的NoteProperties和顯示版本數組對象:
DisplayVersion:4.92。 12.0
顯示名稱:勝20561的SmartAudio HD
DisplayVersion:
迪splayName:連接管理器
DisplayVersion:
顯示名稱:MouseSuite98
...
我試圖用拉.NET拉用下面的代碼相同的數據:
$Hive = [Microsoft.Win32.RegistryHive]::LocalMachine
$AppAddressMain = "software\Microsoft\Windows\CurrentVersion\Uninstall\"
$AppAddressWOW = "software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"
Function Get-InstalledApps {
param ($MainHive, $Computer, [string[]]$RegAddress)
Foreach($Address in $RegAddress) {
$RegBaseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($MainHive, $computer)
$RegSubKey= $RegBaseKey.OpenSubKey($Address)
foreach($Subkey in $RegSubKey.GetSubKeyNames()){
$AppAddress = $Address + $Subkey
$DisplayName = $($RegBaseKey.OpenSubKey($AppAddress)).GetValue("DisplayName")
$DisplayVersion = $($RegBaseKey.OpenSubKey($AppAddress)).GetValue("DisplayVersion")
Write-Output @{
DisplayName = $DisplayName
DisplayVersion = $DisplayVersion
}
}
}
這產生一個哈希表數據,我可以得到一些信息並通過使用點符號來訪問它(例如 - 「$ TempValue.DisplayName」),但在查看對象時,它僅顯示「keys」和「values」作爲$ TempValue對象的對象屬性,而不是我想要的屬性名稱(例如 - DisplayName和DisplayVersion) 。
我已經嘗試在函數中創建一個臨時變量來將數據保存爲屬性,例如 -
$Temp = "" | select DisplayName, DisplayVersion
$Temp.DisplayName += ,$DisplayName
$Temp.Publisher += ,$Publisher
$Temp.DisplayVersion += ,$DisplayVersion
但是,這並不做...
具體來說,我最終還是要去做就可以了排序對象 - 屬性和需要的邏輯兩種功能是相同的(即 - 使數據可以在相同的格式會來自「邏輯」,所以可以同樣的方式對待
如何獲取對象格式化,相同的信息是相同的方式爲$ TempValueICM可用。以上(即 - 我如何獲得哈希表中的項目填寫對象的屬性)?謝謝,
是的,我可以得到它的工作,它只是給一個對象,不像頂部的代碼。兩個對象最終都是System.arrays,但是頂部產生的屬性與「Select」語句中的項目匹配,而底部沒有(它將「Keys」和「Values」列爲屬性而不是「DisplayName」)。 –
我忘了在上面提到,特別是我最終必須對它做一個sort-object -properties,並且這兩個函數的邏輯需要相同。 –
編輯答案以返回一組對象。我希望我能理解你的正確的目標。 – user6530384