2015-05-29 24 views
2

此代碼從PowerShell命令行工作,但在腳本運行時產生一個錯誤:PowerShell的:變量賦值觸發模塊進口

$key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' 
Set-ItemProperty $key Hidden 1 

當我從我的腳本運行它,我得到以下錯誤:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer : The module 'HKEY_CURRENT_USER' could not be 
loaded. For more information, run 'Import-Module HKEY_CURRENT_USER'. 
At C:\Users\mybitch\Desktop\VSS-Customize-Desktop.ps1:19 char:6 
+ $key=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer 
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : ObjectNotFound: (HKEY_CURRENT_US...ersion\Explorer:String) [], CommandNotFoundException 
    + FullyQualifiedErrorId : CouldNotAutoLoadModule 

這是一個簡單的作業...爲什麼Powershell會嘗試導入HKEY_CURRENT_USER作爲模塊?爲什麼與Powershell命令行有所不同?

+1

'HKCU:'是一個提供者。你可以檢查'Get-PSDrive',你會看到它。如果它不存在,PowerShell會嘗試從理論上加載它。你從哪裏運行這個腳本?不是任務調度程序是嗎? – Matt

+0

我只是從提升的Powershell命令行調用腳本。 –

+0

Get-PSDrive顯示HKCU已加載。爲什麼它會嘗試重新加載然後失敗? –

回答

5

該錯誤消息背離了問題。在你的腳本中,顯然你這樣做:

$key = HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer 

這是一個無效的任務。您應該做你描述:

$key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' 
+0

你是對的。該錯誤實際上是在我的代碼中的幾行,並且缺少引號。謝謝! –

+0

很高興我可以幫助 - 順便說一句,如果有人提供了成功的答案,你可以點擊該答案旁邊的小複選框,以表明問題已解決。 – latkin

0

確保在腳本,你必須加載配置單元的用戶,例如,如果你是從一個任務調度運行它,你會需要它加載配置單元它具有你想要的效果。