通过Powershell使用.Net查询外部域

时间:2015-11-25 17:45:43

标签: c# .net powershell active-directory

我目前正在开发一个脚本来帮助我完成工作。基本上我需要做的是找到一种方法来使用.NET来执行对外部域的一些AD查询。情况如下:

  • 将笔记本电脑带到外部客户端
  • 将笔记本电脑插入网络(未加入域名)
  • 使用客户端提供的帐户运行我的程序以执行对AD域的读取访问

由于我对编码的掌握目前只是PowerShell,我正在围绕它构建程序。为了确保在系统上没有本机管理工具的情况下向后兼容PSOHv2,我正在利用POSH对.NET的直接访问。此时我需要帮助的是执行特定的.NET函数来收集数据。我的代码就是:

  1. [System.DirectoryServices.ActiveDirectory.DirectoryContext] $ asdf = 新物体 System.DirectoryServices.ActiveDirectory.DirectoryContext( '森林', 'domain1.com','bob','!@ QWASZX12qwaszx')
  2. [System.DirectoryServices.ActiveDirectory.GlobalCatalog] ::的findall($ ASDF)
  3. 上面的代码适用于任何加入域的计算机。域名是外部的,全新的,可信赖的等等并不重要......我从一个开箱即用的虚拟机中创建了一个虚拟机并且无法运行代码。在一个全新的森林里将它推广到DC,它运作得很好。降级并再次失败。以下是我收到的错误:

    使用“1”参数调用“FindAll”的异常:“当前安全上下文与Active Directory域或林没有关联。” 在行:1字符:128 + ... ryContext] $(New-Object System.DirectoryServices.ActiveDirectory.Direc ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~     + CategoryInfo:NotSpecified:(:) [],MethodInvocationException     + FullyQualifiedErrorId:ActiveDirectoryOperationException

    我的问题是通过.NET可以让POSH认为我是一个域名?显然有一种方法可以在.NET中执行查询,因为我可以在机器加入域后执行此操作。我认为这可能与.NET中的安全上下文有关,但我对.NET和C#这么新,我有点过头了。

    我知道在POSHv3 Win 8及更高版本中有原生POSH命令可以让这更容易,但我试图解释大众市场中最小的共同点(在我看来,Win 7,POSHv2)。感谢您的反馈。

0 个答案:

没有答案