使用c#和Powershell从不属于域的计算机访问Active Directory

本文关键字:计算机 访问 Active Directory 不属于 Powershell 使用 | 更新日期: 2023-09-27 17:50:05

我正在尝试从不属于我的域的计算机访问Active Directory。我主要使用c#和Powershell脚本来获取我需要的信息。

我需要运行的脚本很简单,如下所示:
string script = "Import-Module activedirectory 'n" +
            "(Get-ADUser -Filter * -Server 192.168.1.20| ConvertTo-XML " +
            "-NoTypeInformation).Save('"C:''data''ad.xml'")";

我有一些c#代码来运行脚本,然后它读取创建的文件并收集我需要的信息到文本区域(未显示)。

RunScript(script);
private void RunScript(string scriptText)
{
    Runspace runspace = RunspaceFactory.CreateRunspace();
    runspace.Open();
    Pipeline pipeline = runspace.CreatePipeline();
    pipeline.Commands.AddScript(scriptText);
    pipeline.Commands.Add("Out-String");
    pipeline.Invoke();
    runspace.Close();
}

只要计算机是域的一部分,一切都可以正常工作,但是当我试图从域外传递相同的查询时,我的问题就出现了。

我尝试将Credential参数添加到脚本中,但是pipeline.Invoke()将不接受需要用户输入的参数。任何建议吗?

使用c#和Powershell从不属于域的计算机访问Active Directory

从Windows Server 2003开始,AD的默认安全策略是需要一个安全通道来进行用户身份验证(因此用户凭据不会以明文形式传递)。客户端计算机使用它的域凭据来设置该安全通道。您必须有意削弱域安全策略,以便能够从非域加入的计算机进行身份验证。