在 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