我目前正在开发一个脚本来帮助我完成工作。基本上我需要做的是找到一种方法来使用.NET来执行对外部域的一些AD查询。情况如下:
由于我对编码的掌握目前只是PowerShell,我正在围绕它构建程序。为了确保在系统上没有本机管理工具的情况下向后兼容PSOHv2,我正在利用POSH对.NET的直接访问。此时我需要帮助的是执行特定的.NET函数来收集数据。我的代码就是:
上面的代码适用于任何加入域的计算机。域名是外部的,全新的,可信赖的等等并不重要......我从一个开箱即用的虚拟机中创建了一个虚拟机并且无法运行代码。在一个全新的森林里将它推广到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)。感谢您的反馈。