微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用.Net Core在PowerShell中安装ActiveDirectory Drive时出现问题

如何解决使用.Net Core在PowerShell中安装ActiveDirectory Drive时出现问题

我们正在创建一个微服务以在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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。