首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注册表通配符使用

注册表通配符使用
EN

Stack Overflow用户
提问于 2018-06-21 09:27:21
回答 1查看 736关注 0票数 1

我有一个脚本来检查给定软件的卸载状态:

代码语言:javascript
复制
$pathtofile = Get-Content ComputersToCheckRegistryAndInstallationPath.txt
$registrykey = "Snagit 10.0.2 [LC 01.01 AP] EN"
$installationpath = "Program Files (x86)\TechSmith"

foreach ($name in $pathtofile) {
    if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue) {
        $name

        $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $name)
        $regkey = $reg.OpenSubKey("SOFTWARE\\Wow6432Node\\Total\\Software\\$registrykey")
        if ($regkey) {
            Write-Output  "$registrykey Values are: " $regkey.GetValueNames()
        } else {
            "No $registrykey Values found"
        }
        if ($regkey) {
            Write-Output "InstallStatus Value (void if none): " $regkey.GetValue('InstallStatus')
        } else {
            "No InstallStatus value found"
        }
        if ($regkey) {
            Write-Output "UninstallStatus Value (void if none): " $regkey.GetValue('UninstallStatus')
        } else {
            "No UninstallStatus value found"
        }

        $path = Test-Path -Path "\\$name\C$\$installationpath"

        if ($path -eq $true) {
            Write-Output $name "$installationpath exists"
        } else {
            Write-Output "$installationpath does not exist"
        }
    } else {
        Write-Output $name
    }

效果很好。

我唯一的问题是,对于每个软件,我们都有不同的包,我想使用通配符,例如(对于下面的示例):

代码语言:javascript
复制
$registrykey = "Snagit *"

而不是:

代码语言:javascript
复制
$registrykey = "Snagit 10.0.2 [LC 01.01 AP] EN"

我不能使用GetInvoke-Command方法,因为远程计算机上没有激活PSRemoting。

从我所收集到的资料来看,没有办法解决这个问题,但也许有人在这段时间里找到了解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 10:00:23

枚举Software键的子键名称,并筛选该列表,以查找与您的模式匹配的名称。

代码语言:javascript
复制
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $name)
$basekey = $reg.OpenSubKey("SOFTWARE\\Wow6432Node\\Total\\Software")
$subkey = $basekey.GetSubkeyNames() | Where-Object { $_ -like $registrykey }
$regkey = $baskey.OpenSubKey($subkey)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50965066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档