Powershell是一个很强大的工具,可用于取代传统的批处理(Batch)。但在默认情况下,Powershell是不允许运行脚本文件的,(可能是出于安全原因的考虑吧)。直接用Powershell运行脚本文件会产生以下错误:
PS C:\Users\liang.huang.QUNARSERVERS\Envs> Import-Module ServerManager
Import-Module : 未能加载指定的模块“ServerManager”,因为在任何模块目录中都没有找到有效模块文件。
所在位置 行:1 字符: 14
+ Import-Module < < < < ServerManager
+ CategoryInfo : ResourceUnavailable: (ServerManager:String) [Import-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
这是因为Powershell默认的执行策略是Restricted,即可以运行单条命令,但不能运行脚本,包括格式和配置文件 (.ps1xml)、模块脚本文件 (.psm1) 和 Windows PowerShell 配置文件 (.ps1)。 解决方案是把执行策略改得宽松一点,比如RemoteSigned或者Unrestricted。在Powershell中运行以下命令即可: Set-ExecutionPolicy RemoteSigned
然后系统会提示: 执行策略更改 执行策略可以防止您执行不信任的脚本。更改执行策略可以会使您面临 about_Execution_Policies 帮助主题中所述的安全风险。是否要更改执行策略? 输入“Y”就可以使新的策略生效了。
一个很偏门的问题, C# 调用Powershell脚本,但是在Import-module的时候找不到servermanager module。
操作系统是windows server 2008 R2
但是如果直接执行脚本能找到该模块,而且在Module的目录下也能看到。
"the specified module server manager was not loaded because no valid module was found in any module directory"
这个问题我花费6个小时的时间,终于找到了问题的根源。
原因是ServerManager Module等几个module只有在64位系统上才有。
而我的C#程序编译成了32位,所以才找不到。
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛