我面临一个非常奇怪的情况。
我想使用命令“Import-Module”导入“ActiveDirectory”模块。我做的第一件事是在我的服务器上安装模块(Windows Server 2012 R2)。完成第一步后,我尝试使用参数“ActiveDirectory”调用命令“Import-Module”。
这是我正在使用的代码:
// Prepare the credentials that will be used when connecting
// to the server. More info on the user to use on the notes
// below this code snippet.
string runasUsername = @"MarioKart 8";
string runasPassword = "MarioKart";
SecureString ssRunasPassword = new SecureString();
foreach (char x in runasPassword)
ssRunasPassword.AppendChar(x);
PSCredential credentials =
new PSCredential(runasUsername, ssRunasPassword);
// Prepare the connection
var connInfo = new WSManConnectionInfo(
new Uri("MarioKart8Server"),
"http://schemas.microsoft.com/powershell/Microsoft.Exchange",
credentials);
connInfo.AuthenticationMechanism =
AuthenticationMechanism.Basic;
connInfo.SkipCACheck = true;
connInfo.SkipCNCheck = true;
// Create the runspace where the command will be executed
var runspace = RunspaceFactory.CreateRunspace(connInfo);
// create the PowerShell command
var command = new Command("Import-Module");
command.Parameters.Add("Name","ActiveDirectory"); //I tried new string[] {"ActiveDirectory"} too.
// Add the command to the runspace's pipeline
runspace.Open();
var pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(command);
// Execute the command
var results = pipeline.Invoke();
if (results.Count > 0)
System.Diagnostics.Debug.WriteLine("SUCCESS");
else
System.Diagnostics.Debug.WriteLine("FAIL");
好的,所以当我运行时,我有这个例外:
术语“导入模块”未被识别为cmdlet,函数,脚本文件或可操作程序的名称。
请注意,我可以毫无问题地运行“New-Mailbox”等基本命令,所以问题实际上就是“导入模块”。
我真的不知道该怎么做,我做了很多研究,看起来有些人有同样的问题,但我没有找到任何记录的解决方案。
请注意,当我直接在服务器的PowerShell上运行“Import-Module”时,一切正常!
我读到这可能是关于powershell版本的一个问题,我使用的版本是4.0(在服务器上)。
答案 0 :(得分:1)
我怀疑您正在使用Exchange远程管理会话。如果你是,那就是" No Language"约束会话。它将具有Exchange cmdlet和一些通用的Powershell命令(如Get-Command),但它没有Import-Module cmdlet。
恕我直言,拥有两组cmdlet的最简单方法是从通用PS会话开始,导入AD模块,然后连接到Exchange管理会话并执行Import-PSSession并使用隐式远程处理进行Exchange管理东西。如果以这种方式执行此操作,则不限于仅在Exchange服务器上运行它,并且不必安装Exchange管理工具。
编辑:执行此操作的Powershell命令是:
Import-Module ActiveDirectory
$EXSession = new-pssession -configurationname Microsoft.Exchange -ConnectionURI http://<Exchange server name>/powershell/ -authentication kerberos
Import-PSSession $EXSession
并非您必须在您的环境中提供要连接的Exchange服务器的名称。