使用 .Net Core 在 PowerShell 中安装 ActiveDirectory 驱动器时遇到问题

Trouble mounting ActiveDirectory Drive in PowerShell using .Net Core

我们正在创建一个微服务来在 AD 中做一些事情。此服务要求将活动目录作为 PSDrive 安装到 AD

我了解挂载的工作原理并且可以在服务器上的 PowerShell 中成功完成。

对于要添加的模块,我们必须将物理位置指定为 ActiveDirectory.psd1 以便导入。

我怀疑这是以下脚本没有成功执行的原因。

脚本: New-PSDrive -PSProvider ActiveDirectory -Name AD -Root \"\" -Server (Get-ADDomainController -Discover -Service PrimaryDC).Name

这样执行,抛出异常说参数Server无效

删除此参数时,异常提示提供者 ActiveDirectory 不存在。

我对此采取了正确的方法吗?

这是 C# 代码:

string moduleDirectory = Configuration["AppSettings:Directories:PowerShellModules"];

var requiredPowerShellModules = new Dictionary<string, string>()
{
    { "ActiveDirectory", $"{moduleDirectory}\ActiveDirectory\ActiveDirectory.psd1" }
};

foreach (KeyValuePair<string, string> module in requiredPowerShellModules)
{
    bool hasModule = Modules.HasModule(module.Key, powerShell);

    if (!hasModule)
    {
        Modules.ImportModule(module.Value, powerShell);

        if (!Modules.HasModule(module.Key, powerShell))
        {
            throw new Exception($"Unable to import PowerShell module: \"{module.Key}\" at path \"{module.Value}\"");
        }
    }
}

//Check if AD Drive mounted
var adDriveResult = powerShell.AddScript("Get-PSDrive AD -ErrorAction SilentlyContinue").Invoke();

//Mount AD Drive if not exists
if (adDriveResult.Count != 1)
    powerShell
        .AddScript("New-PSDrive -PSProvider ActiveDirectory -Name AD -Root \"\" -Server (Get-ADDomainController -Discover -Service PrimaryDC).Name ") //
            .Invoke();

此问题是由过时版本的 ActiveDirectory powershell 模块引起的。

版本 1.0.0.0 在服务器上,而不是 1.0.1.0