在 PowerShell 中獲取遠端計算機上的登錄檔
-
PowerShell 中的
Invoke-Expression
-
在 PowerShell 中使用
Get-ItemProperty
獲取登錄檔 -
在 PowerShell 中使用 Invoke-Expression 和
Get-ItemProperty
獲取遠端計算機上的登錄檔
在本文中,我們將討論如何在遠端計算機上呼叫表示式、獲取登錄檔值,以及如何將它們結合起來在遠端計算機上獲取登錄檔值。
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
引數的字串中。
也許我們有一個帶有兩個引數的指令碼,稱為 Path
和 Force
。除了通過 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn