Powershell:变量赋值触发模块导入

时间:2015-05-29 18:00:00

标签: windows 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命令行有如此不同?

2 个答案:

答案 0 :(得分:5)

错误消息背叛了问题。在你的脚本中,显然你是这样做的:

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

这是一项无效的作业。您按照您的描述进行操作:

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

答案 1 :(得分:0)

确保在脚本中加载了用户配置单元,例如,如果从任务计划程序运行它,则需要它来加载配置单元以使其具有您想要的效果。