区分注册表项和值路径

2024-06-19

是否有相当于[System.IO.DirectoryInfo] and [System.IO.FileInfo]用于区分注册表项和值?我想评估一条路径并为用户记录该路径的最终目标是什么。

到目前为止,这就是我所拥有的,而且有点丑陋。

$path = 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\SomeJunkHereToTestFailure'
try {
    if ((Get-Item -path:$path -errorAction:stop).GetType().name -eq 'RegistryKey') {
        'Registry Key'
    }
} catch {
    try {
        if ((Get-ItemProperty -path:(Split-Path $path -parent) -name:(Split-Path $path -leaf) -errorAction:stop).GetType().name -eq 'PSCustomObject') {
            'Registry Value'
        }
    } catch {
        'What is this?'
    }
}

希望有更优雅且始终正确的东西。


好吧,在研究了一段时间之后,按照规范来说, this:

HKEY_LOCAL_MACHINE\SOFTWARE\Path\To\Something

Is always通往钥匙的路径。

Look at reg.exe query。看看怎么样Get-ItemProperty作品。通知于regedit.exe您可以复制键名称,但不能复制特定值的“路径”。查看.reg 文件是如何写入的。看着Registry.GetValue() https://msdn.microsoft.com/en-us/library/microsoft.win32.registry.getvalue(v=vs.110).aspx and Registry.SetValue() https://msdn.microsoft.com/en-us/library/microsoft.win32.registry.setvalue(v=vs.110).aspx. Or Registry.LocalMachine.OpenSubKey().GetValue()。微软显然认为注册表路径总是指向密钥。

如果您有正在使用的软件HKEY_LOCAL_MACHINE\SOFTWARE\Path\To\A\Value引用注册表中的值,那么它们就没有使用 Windows 可以理解的标准注册表路径。

这就是为什么你要这样运行这些:

reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName" 
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name "ProductName"
[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion').GetValue('ProductName')
[Microsoft.Win32.Registry]::GetValue('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion','ProductName', $false)

最后一个很好,因为它不会出错。如果找不到该值,则返回第三个参数。然而,据我所知,它确实需要在开始时使用长蜂巢名称。

So, Test-Path -Container可以告诉你这是否是一把钥匙。Microsoft.Win32.Registry.GetValue()可以通过一些操作告诉你它是否是一个值。


原始答案(这不起作用):

Use Test-Path:

$path = 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\SomeJunkHereToTestFailure'

# Is it a Key?
Test-Path -Path $path -PathType Container

# Is it a Value?
Test-Path -Path $path -PathType Leaf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区分注册表项和值路径 的相关文章

  • 如果未提供值,如何从 cmdlet 中省略 powershell 参数?

    我正在尝试执行下面的 Powershell 命令 在交换服务器上创建一个新的地址列表 其中包含名称 容器等参数 Container是可选输入 参数 如果未提供其值 如何从 cmdlet 中省略它 我尝试过IF有条件但但似乎不起作用 这里有什
  • 区分注册表项和值路径

    是否有相当于 System IO DirectoryInfo and System IO FileInfo 用于区分注册表项和值 我想评估一条路径并为用户记录该路径的最终目标是什么 到目前为止 这就是我所拥有的 而且有点丑陋 path Re
  • “(”字符在 PowerShell 中不起作用

    我无法让它发挥作用 它不喜欢 字符 我如何解决它 Dir Rename Item NewName name replace 如何在 PowerShell 中处理这种类型的特殊字符 vonPryze 对问题的确切原因做了很好的解释 但还有一个
  • Windows:更改与文件类型关联的应用程序的名称/图标

    我想将 Windows 中的文件类型与特定应用程序相关联 但我需要这样做 以便当用户打开 打开方式 菜单时 列表中应用程序的名称和图标是针对该文件类型自定义的 即 不仅仅是可执行文件的名称和图标 这是因为该二进制文件是一个通用二进制文件 可
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • 如何更改参数的抛出消息?

    问题 希望更改显示的错误消息 表示需要将 passed warning 或 failed 包含在 cmdlet 参数中 或者不关心这三个参数是否丢失并写入消息 假设它在那里 解释 创建了一个接受三个参数的函数 一条消息 第二条消息和消息状态
  • 读取存储在注册表中的 GUID 值

    我尝试读取存储为的 GUID 值binaryDelphi 注册表中的值 当我用BintoHex读取它时 但结果是相反的 看来我必须交换字节 但我认为 BinToHex 可以做到 我参考了这个线程 但找不到正确的解决方案 如何在 Delphi
  • 如何通过 Get-AzureRmAppServicePlan 检索workerSize

    通过 Azure PowerShell cmdlet 创建新的 AppServicePlan 时New AzureRmAppServicePlan 预计我会添加一个WorkerSize例如小号 中号或大号 例如 appServicePlan
  • 无法在 Validateset 中使用预定义数组 - Powershell

    我正在寻找一种方法来制作一个 cmdlet 该 cmdlet 接收参数并在键入时提示从预定义的选项数组中完成的建议 我正在尝试这样的事情 vf Veg Fruit function Test ArgumentCompleter Cmdlet
  • 使用 msiexec 卸载应用程序时是否有 GUID 的替代方案?

    目前 我们在运行包含 msiexec 的卸载脚本时使用 GUID 来识别应用程序 我遇到的问题是每次安装最新版本的应用程序时 GUID 都会发生变化 所以我想知道是否有其他方法可以识别使用 msiexec 运行的应用程序 首先 应用程序新版
  • 如何使用 PowerShell 检查文件是否早于特定时间?

    我怎样才能办理登机手续电源外壳查看 fullPath 中的文件是否早于 5 天 10 小时 5 分钟 老 我的意思是如果创建或修改不晚于 5 天 10 小时 5 分钟 这是一种非常简洁但易读的方法 lastWrite get item fu
  • 用于替换文件中的文本块的 PowerShell 命令

    我正在尝试使用 PowerShell 替换文件中的一段文本 例如 我有一个 sql 文件 并且我知道该特定文件中需要替换的 SQL 脚本的确切块 通读一些 PowerShell 替换示例后 PowerShell 似乎以数组形式返回文件内容
  • 如何在 PowerShell 中创建数组的数组?

    我想在 PowerShell 中创建一个数组的数组 x 1 2 3 4 5 6 效果很好 然而 有时我的数组列表中只有一个数组 在这种情况下 PowerShell 会忽略以下列表之一 x 1 2 3 x 0 0 Should return
  • PowerShell 脚本将双引号内的逗号替换为空

    我有一个逗号分隔的 CSV 文件 我打算将双引号中的逗号替换为空 并将双引号替换为空 Editor s note The original form of this question asked to change the delimite
  • 写入输出-InputObject(,'测试')-NoEnumerate

    我认为这是一个仅适用于 PowerShell Windows 5 1 的错误 The NoEnumerate当通过命名提供输入时 开关不起作用 InputObject争论 以下函数返回False Function Test Write Ou
  • Powershell 将字符串转换为 System.Net.IPAddress

    我是 powershell 新手 我正在尝试自动创建 DHCP 预留 到目前为止 我可以像这样获取 IP 地址 IP GEt VM ComputerName HVCOMPUTERNAME VMName HVNAME Get VMNetwor
  • 无法找到类型 [Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]

    我正在尝试对来自指定进程参数的 Powershell 的构建进行排队 我收到以下错误 知道我做错了什么吗 无法找到类型 Microsoft TeamFoundation Build Workflow WorkflowHelpers 确保包含
  • 在 Powershell 中获取小文件的“磁盘大小”

    我正在使用一个遗留系统 该系统有大量来自外部系统的导入 其中大多数通过下载文件 根据上下文大小不同 处理它 然后将文件存储在 SAN 卷上的其他位置 格式为 NTFS 和安装在 WS2008R2 盒子上 我们遇到的问题是 由于簇的大小 大量
  • Powershell:对 Select-Object 中的字段使用变量

    我正在构建一个正在创建的脚本csv文件 每个csv有一组不同的字段 一切都很好 但我想控制列顺序输出 我有一个变量 其中包含字段以及我想要的字段顺序 我知道我可以使用 Select Object 来控制它 我想做的是这样的 Fields I
  • 如何使用 TFS PowerShell 获取变更集和关联工作项的列表?

    我是 PowerShell 和 TFS cmdlet 的新手 我正在尝试检索区域路径中的变更集列表及其关联的工作项 我已经列出了自特定日期以来的变更集 Get TfsItemHistory Project Branch Version D0

随机推荐