2015-05-29 23 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

确保在脚本,你必须加载配置单元的用户,例如,如果你是从一个任务调度运行它,你会需要它加载配置单元它具有你想要的效果。