powershell - 值名称未知时远程注册表项的所有属性的 Get-ItemProperty
问题描述
类似的帖子,例如这篇或这篇,解释了如何获取远程注册表项,但它假设您已经知道您感兴趣的值的名称。如果您运行
Get-ItemProperty "HKLM:\Software\MySoftware"
它将返回所有属性及其对应的值,但 Get-ItemProperty 不适用于远程计算机。如果您想对远程注册表项执行相同操作,可以使用 [Microsoft.Win32.RegistryKey] 方法,但这只是答案的一半。举个例子:
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $myServer)
$RegKey= $Reg.OpenSubKey("SOFTWARE\\MySoftware")
$RegKey 将成为 System.MarshalByRefObject。这意味着它不是实际的密钥,而只是打开了继续从该密钥请求更多信息的能力。使用 $RegKey.GetValue() 需要您知道要获取的值,但是如果您想获取键的所有值但不知道有多少值或它们的名称怎么办?你会怎么做呢?
解决方案
打开 $RegKey 后,您可以使用以下内容:
$RegKey.GetValueNames()
这将生成所有项目属性及其值的列表。然后,您可以使用 foreach 遍历该列表以检索所有项目属性的值,例如:
foreach($ItemProperty in $RegKey.GetValueNames()){
$RegKey.GetValue($ItemProperty)
}
奖励:如果要将其导出到 CSV 文件,您可以创建自定义 PS 对象并将其导出到 CSV 文件,如下所示:
foreach($ItemProperty in $RegKey.GetValueNames()){
$myObject = [PSCustomObject]@{
ItemProperty = $ItemProperty
Value = $RegKey.GetValue($ItemProperty)
} | Export-Csv "yourpath\yourfile.csv" -Append -Delimiter "|" -NoTypeInformation
}
推荐阅读
- android - 如何将分页库与 RecyclerView GridLayoutManager 一起使用?
- angular - Angular 6 中的 Bootstrap 4,javascript 组件
- hyperledger-fabric - Hyperledger 作曲家中的权限如何在 Hyperledger 结构中实现?
- listview - 在 JFXListView 中使用单元工厂会忽略 JFoenix 样式
- python - 将熊猫假人添加到numpy数组中?
- python - 计算 2 个数据框中项目的出现次数,然后检查以比较 2 个日期
- android - 如何在列表视图中平滑滚动时隐藏工具栏,我也在使用底部导航
- css - :在 div css 中包含的“形状”之前 - 没有溢出
- excel - 在 +/- 按键上增加/减少 ActiveCell 的值
- c# - 使用对 DataTable 所做的更改更新数据库表