[英]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.