我试图远程执行一些非常简单的Powershell/ActiveDirectory,但无法加载ActiveDirectory模块。我尝试了几种不同的方法,包括在加载模块的远程服务器上注册一个远程shell,但我也无法让它工作。
什么工作:远程设置工作。我的C#代码可以连接到远程机器并执行新邮箱之类的Exchange命令。但是,我不能执行像Add-ADGroupMember.这样的命令
如果我登录到远程计算机,我可以验证所有Powershell cmdlts都可用,用于Exchange和AD。所以我知道如果我登录Powershell,他们就能在远程机器上工作。
试图执行Add-ADGroupMember会给我一个错误,即它不能被识别为cmdlet。对我来说,这表明ActiveDirectory模块没有加载。但是,如果我试图导入它,如下所示:
ps.Commands.AddCommand("Import-Module").AddArgument("ActiveDirectory");此命令失败,错误是术语“Import”也不是可识别的cmdlet。
我还尝试连接到一个专门加载shellURI模块的ActiveDirectory,但它无法连接。我收到一个错误,在WS-Management目录中找不到资源URI。
这也带来了另一件奇怪的事情;我不明白为什么不能连接到远程Powershell中列出的资源URI。如果我做了一个PS_GetSessionConfiguration,我会看到以下内容:
ADExchange (我自己的习惯) Microsoft.Powershell Microsoft.Powershell.Workflow Microsoft.Powershell32 Microsoft.ServerManager
然而,我不能连接到其中的任何一个。在设置连接信息对象时,必须使用以下URI:
string shell = "http://schemas.microsoft.com/powershell/Microsoft.Exchange";所有其他URI都失败了。为什么会这样呢?
总之,这里有一些代码:
using (Runspace runspace = RunspaceFactory.CreateRunspace(connInfo))
{
runspace.Open();
using (PowerShell ps = PowerShell.Create())
{
ps.Runspace = runspace;
Pipeline pipe = runspace.CreatePipeline();
ps.Commands.AddCommand("Import-Module").AddArgument("ActiveDirectory");
ps.Invoke();
ps.Commands.AddCommand(CreateNewUserCommand());
ps.Commands.AddCommand(CreateAddGroupCommand("FacnStaff"));
//ps.Commands.AddCommand(CreateAddGroupCommand("AllFacStaff"));
//ps.Commands.AddCommand(CreateAddGroupCommand("PasswordManagerFacStaff"));
results = ps.Invoke();
}
}第一个命令CreateNewUserCommand执行“New”。如果我注释掉其他命令,这是孤立的。
其他命令都对此做了一些修改:
private Command CreateAddGroupCommand(string group)
{
var command = new Command("Add-ADGroupMember");
command.Parameters.Add("Identity", group);
command.Parameters.Add("Members", _username);
return command;
}所以我的问题是:
1)我无法远程运行AD命令;2)无法远程加载ActiveDirectory模块;3)无法连接到不同的Powershell配置
请帮帮忙
发布于 2015-02-18 01:34:38
所有这些症状都表明远程shell被限制在NoLanguage模式下。这对于Exchange远程会话来说是正常的。您可以在该会话中执行的唯一内容是Exchange。没有其他cmdlet甚至基本语言元素可用(您甚至不能创建一个变量)。
Shay写了一篇文章,描述了如何重新配置这些会话,使其成为完全语言模式,以绕过这些限制。
get-full-control-over-your-exchange-remote-powershell-session
https://stackoverflow.com/questions/28574049
复制相似问题