簡體   English   中英

從 powershell 設置注冊表項值

[英]Setting registry key value from powershell

當我嘗試從 powershell 腳本設置注冊表項時,它會覆蓋另一個項:

例如 :

$registryKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Qualys\QualysAgent\ScanOnDemand\Vulnerability"
$valuedata = '1'
$valuename = "Scanondemand"
Set-ItemProperty -Path $registryKey -Name $ValueName -Value $ValueData

這將正確設置注冊表項。 然后我更改valuename

$valuename = 'ScanOnstartup'
Set-ItemProperty -Path $registryKey -Name $ValueName -Value $ValueData

現在Scanonstartup是正確的,但Scanondemand鍵不見了。 它有點重命名名稱而不是創建新密鑰。

您可能希望將第二個添加替換為:

新項目屬性

問題是您沒有在注冊表路徑中指定 PowerShell驅動器

您可以使用長格式:

Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Qualys\QualysAgent\ScanOnDemand\Vulnerability

或者利用對於HKEY_LOCAL_MACHINE PowerShell 已經有一個名稱為HKLM:的驅動器的事實HKLM:

HKLM:\SOFTWARE\Qualys\QualysAgent\ScanOnDemand\Vulnerability

您的代碼將是

$registryKey = 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Qualys\QualysAgent\ScanOnDemand\Vulnerability'
# or: $registryKey = 'HKLM:\SOFTWARE\Qualys\QualysAgent\ScanOnDemand\Vulnerability'

$valuedata = '1'
$valuename = 'ScanOnDemand', 'ScanOnStartup'
$null = New-Item $registryKey -Force
Set-ItemProperty -Path $registryKey -Name $ValueName[0] -Value $ValueData
Set-ItemProperty -Path $registryKey -Name $ValueName[1] -Value $ValueData

通過對New-Item cmdlet 使用 switch -Force ,您不必檢查該鍵是否已存在,因為它會將現有鍵作為對象或新創建的鍵返回。 因為我們沒有進一步使用該對象,所以我們使用$null = New-Item ..

運行此(以管理員身份)后,您已在注冊表中創建了此密鑰結構:

在此處輸入圖片說明

在子項Vulnerability您現在有以下兩個條目:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM