Мы создаем микросервис, чтобы делать несколько вещей в AD. Эта служба требует, чтобы активный каталог был смонтирован на AD
как PSDrive.
Я понимаю, как работает установка, и могу успешно сделать это в 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();
Get-PSProvider ActiveDirectory
? - person Mathias R. Jessen   schedule 09.09.2020The term 'Get-PSProvider ActiveDirectory' is not recognized as the name of a cmdlet
Интересно. Не уверен, почему это может быть проблемой. - person Marius   schedule 09.09.2020Get-PSProvider ActiveDirectory
вернул единственный результат с AD. Я внес несколько изменений. Похоже, я решил проблему, используя удаленное пространство выполнения. Что решает мою проблему, но, к сожалению, не решает вопрос. - person Marius   schedule 09.09.2020