在没有AD驱动器号的Runspace中加载ActiveDirectory PowerShell模块

时间:2012-09-06 10:25:46

标签: c# powershell active-directory powershell-v2.0

我正在尝试将ActiveDirectory模块加载到我正在处理的自定义SnapIn中。但是,当我这样做时,我得到了恼人的错误

  

“初始化默认驱动器时出错:'无法找到默认服务器   运行Active Directory Web服务。'“

超时需要15秒左右。在普通的PowerShell控制台中,我意识到你可以设置一个变量来禁用AD:驱动器映射,但是,我似乎无法在C#代码中使用它。

InitialSessionState initial = InitialSessionState.CreateDefault();
initial.Variables.Add(new SessionStateVariableEntry("ADPS_LoadDefaultDrive",
                                                    0, 
                                                    string.Empty));
initial.ImportPSModule(new string[] { "ActiveDirectory" });

using (Runspace runspace = RunspaceFactory.CreateRunspace(initial))
        {
            runspace.Open();
            using (Pipeline p = runspace.CreatePipeline())
            {
                Command getGroup = new Command("Get-ADGroup");
                getGroup.Parameters.Add("Filter", this.Group);
                p.Commands.Add(getGroup);

                var results = p.Invoke();
                this.WriteObject(results, true);
            }
        }

我已经包含了我认为应该可以使用的内容,但ADPS_LoadDefaultDrive设置似乎被忽略了,因为每次我尝试调用ActiveDirectory模块时都会遇到相同的Web服务错误(以及痛苦的超时)

1 个答案:

答案 0 :(得分:2)

尝试将ADPS_LoadDefaultDrive设置为环境变量,而不是常规会话变量。