在 PowerShell 中获取远程计算机上的注册表

Marion Paul Kenneth Mendoza 2023年1月30日
  1. PowerShell 中的 Invoke-Expression
  2. 在 PowerShell 中使用 Get-ItemProperty 获取注册表
  3. 在 PowerShell 中使用 Invoke-Expression 和 Get-ItemProperty 获取远程计算机上的注册表
在 PowerShell 中获取远程计算机上的注册表

在本文中,我们将讨论如何在远程计算机上调用表达式、获取注册表值,以及如何将它们结合起来在远程计算机上获取注册表值。

PowerShell 中的 Invoke-Expression

根据微软官方描述,Invoke-Expression 命令运行或评估特定字符串作为命令并导出命令或表达式的结果。

换句话说,它可以帮助调用脚本中的代码或构建稍后执行的命令。但是,我们也可以通过用户提供的输入谨慎地使用它。

使用 Invoke-Expression 的最基本语法是定义一个脚本并将该字符串传递给 Command 参数。Invoke-Expression 然后执行该字符串。

$Command = 'Get-Process'
Invoke-Expression -Command $Command

#Execute a script via Invoke-Expression
$MyScript = '.\MyScript.ps1'
Invoke-Expression -Command $MyScript

但是,如果我们将路径项括在单引号或双引号中,Invoke-Expression 将按预期执行脚本。将此视为最佳实践,因为某些路径中有空格。

$MyScript = "C:\'Folder Path'\MyScript.ps1"
Invoke-Expression $MyScript

Invoke-Expression 命令的唯一参数是 -Command 参数。没有其他传统方法可以使用 Invoke-Expression 传递参数。

但是,你可以将它们包含在你提供给 Command 参数的字符串中。

也许我们有一个带有两个参数的脚本,称为 PathForce。除了通过 Invoke-Expression 使用特定参数外,你还可以像通常通过控制台一样将参数传递给该脚本。

$scriptPath = 'C:\Scripts\MyScript.ps1'
$params = '-Path "C:\file.txt" -Force'
Invoke-Expression "$scriptPath $params"

# or

$string = 'C:\Scripts\MyScript.ps1 -Path "C:\file.txt" -Force'
Invoke-Expression $string

在 PowerShell 中使用 Get-ItemProperty 获取注册表

Get-ItemProperty 是一个 PowerShell 命令,用于以更易读的格式导出注册表项和值。我们还可以使用 Get-ItemProperty cmdlet 获取特定注册表项的值。

示例代码:

Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

输出:

ProgramFilesDir
CommonFilesDir
ProgramFilesDir (x86)
CommonFilesDir (x86)
CommonW6432Dir
DevicePath
MediaPathUnexpanded
ProgramFilesPath
ProgramW6432Dir
SM_ConfigureProgramsName
SM_GamesName

在 PowerShell 中使用 Invoke-Expression 和 Get-ItemProperty 获取远程计算机上的注册表

现在,假设我们结合了在远程计算机上调用命令和获取注册表项值这两个概念。在这种情况下,我们现在可以创建一个命令片段,用于获取远程计算机中的注册表值。

示例代码:

Invoke-Command -Computer RemoteComputer01 {
    Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\run
}
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相关文章 - PowerShell Registry