如何使用powershell遍历远程注册表项

我有一个 powershell 脚本,它通过注册表项中的名称值对列表并执行一些 maniupulations。所有这些都发生在下面的 foreach-object 循环中

我有一个 powershell 脚本,它通过注册表项中的名称值对列表并执行一些 maniupulations。所有这些都发生在下面的 foreach-object 循环中

Get-ChildItem "HKLM:\SOFTWARE\PathA\pathB" -Recurse | ForEach-Object {
       $regkey = (Get-ItemProperty $_.PSPath) | Where-Object { $_.PSPath -match 'debug' }
       if ($List.Contains($_.Name)) #Check if the reg key is in  list
            {
                   Set-ItemProperty -Path $regkey.PSPath -Name $_.Name -Value 1
            }
} 

这在我的本地机器上工作得很好。我必须做同样的事情,但在远程机器注册表上。

我尝试过:

$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $server)
$key="HKLM:\SOFTWARE\PathA\pathB"
foreach ($subkey in $reg.OpenSubKey($key).GetSubKeyNames())
{
}

但这只会返回注册表文件夹的名称,我无法遍历它

3

Invoke-Command应该做你想做的。像这样:

Invoke-Command -ComputerName DC1 -ScriptBlock {
Get-ChildItem "HKLM:\SOFTWARE\PathA\pathB" -Recurse | ForEach-Object {
   $regkey = (Get-ItemProperty $_.PSPath) | Where-Object { $_.PSPath -match 'debug' }
   if ($Using:List.Contains($_.Name)) #Check if the reg key is in  list
        {
               Set-ItemProperty -Path $regkey.PSPath -Name $_.Name -Value 1
        }
} 
}

由于您在本地定义了 $list,因此可以使用 $Using:list-请参阅Remote Variables

您还应该考虑使用PSSessions

1

这种方法呢?

应该递归地获取远程计算机上的所有子键 & amp;& amp;root_key:

Function remote_registry_query($target, $key)
{
   Try {
        $registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine", $target)
        ForEach ($sub in $registry.OpenSubKey($key).GetSubKeyNames())
        {
            $subkey = $registry.OpenSubKey("$($key)\$($sub)")
            ForEach ($value in $subkey.GetValueNames())
            {
                Write-Output $subkey.GetValue($value)
            }
            remote_registry_query -target $computer -key "$($key)\$($sub)"
        }
  } Catch [System.Security.SecurityException] {
        "Registry - access denied $($key)"
  } Catch {
        $_.Exception.Message
  }
}
$computer = "remote computer name"
$root_key = 'HKLM:\SOFTWARE\PathA\pathB'
remote_registry_query -target $computer -key $root_key

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(606)
nodejs应用程序的弹性 apm中没有数据
上一篇
如何在PHP中创建一个简单的爬虫
下一篇

相关推荐

  • 祝生日快乐的代码:生日蛋糕的 Powershell代码

    关于祝生日快乐的代码的问题,在how to write happy birthday on a cake中经常遇到,我的儿子是计算机科学专业的,他的生日快到了。我想为他创建一个代码主题蛋糕。我已经研究了 PowerShell 代码,并创建了我认为是正确和有趣的东西。但是,我不确定,并被打开这个网站以获得帮助。这就是我所拥有的...JularJ 是我儿子的视频游戏的显示名称。…

    2022-12-29 13:14:57
    0 22 40
  • 服务器监控脚本:服务器监控 powershell脚本

    关于服务器监控脚本的问题,在powershell server monitoring dashboard中经常遇到,我已经编写了用于服务器监控的 PowerShell 脚本。我已经在 Google Cloud Platform 上创建了服务器。我的服务器 / 实例外部 IP 为 34.72.154.186 (http://34.72.154.186/)。这是我的 PowerShell 脚本:…

    2022-11-30 12:38:25
    0 32 51
  • PowerShell中用于截断字符串长度的子字符串

    是否可以在 PowerShell 中截断字符串(使用SubString()?),到给定的最大字符数,甚至如果原始字符串已经更短?…

    2022-11-11 15:20:56
    0 32 52
  • 在 Powershell中创建日志文件

    我有下面的代码,目前它加载屏幕上的所有信息。我希望它记录到 D:\ Apps\ Logs 上的日志文件。…

    2022-12-13 15:09:10
    0 21 47
  • 在 Powershell中创建日志文件

    我有下面的代码,目前它加载屏幕上的所有信息。我希望它记录到 D:\ Apps\ Logs 上的日志文件。…

    2022-11-22 11:23:01
    0 56 41
  • 在 Powershell中创建日志文件

    我有下面的代码,目前它加载屏幕上的所有信息。我希望它记录到 D:\ Apps\ Logs 上的日志文件。…

    2022-11-19 00:45:36
    0 43 80
  • powershell脚本实例:如何使用PowerShell脚本管理Windows服务

    脚本是一种可以用来自动化复杂的任务的强大工具。它的基本语法与其他编程语言类似,但更加简单易懂。下面是一个简单的脚本实例,它可以获取当前系统上所有运行中的进程:…

    2023-01-13 15:29:36
    0 16 65
  • Skype连接不上:使用Powershell上的Skype联机连接器获取用户的 Skype状态

    关于Skype连接不上的问题,在login skype online中经常遇到,我正在开发一个小脚本,输出用户当前的 Skype for Business 状态。…

    2022-12-15 12:01:06
    0 70 66

发表评论

登录 后才能评论

评论列表(56条)