Powershell是一個很強大的工具,可用于取代傳統(tǒng)的批處理(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默認的執(zhí)行策略是Restricted,即可以運行單條命令,但不能運行腳本,包括格式和配置文件 (.ps1xml)、模塊腳本文件 (.psm1) 和 Windows PowerShell 配置文件 (.ps1)。 解決方案是把執(zhí)行策略改得寬松一點,比如RemoteSigned或者Unrestricted。在Powershell中運行以下命令即可: Set-ExecutionPolicy RemoteSigned
然后系統(tǒng)會提示: 執(zhí)行策略更改 執(zhí)行策略可以防止您執(zhí)行不信任的腳本。更改執(zhí)行策略可以會使您面臨 about_Execution_Policies 幫助主題中所述的安全風險。是否要更改執(zhí)行策略? 輸入“Y”就可以使新的策略生效了。
一個很偏門的問題, C# 調用Powershell腳本,但是在Import-module的時候找不到servermanager module。
操作系統(tǒng)是windows server 2008 R2
但是如果直接執(zhí)行腳本能找到該模塊,而且在Module的目錄下也能看到。
"the specified module server manager was not loaded because no valid module was found in any module directory"
這個問題我花費6個小時的時間,終于找到了問題的根源。
原因是ServerManager Module等幾個module只有在64位系統(tǒng)上才有。
而我的C#程序編譯成了32位,所以才找不到。
如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網友會為你解答??! 點擊進入論壇