Я пытаюсь выполнить сценарий PowerShell из приложения ac # для удаления компьютера из AD.
Исключение составляет следующее:
Невозможно связаться с сервером.Это может быть связано с тем, что этот сервер не существует, он в данный момент не работает или на нем не запущены веб-службы Active Directory.
На сервере у меня запущены веб-службы активных каталогов, и когдаЯ запускаю скрипт прямо из PowerShell, он работает.Но когда я выполняю код через c # (что мне нужно сделать, потому что он будет вызываться через API), он завершается с указанной выше ошибкой.
PowerShell:
param(
[Parameter(Mandatory=$true, Position=0)]
[string][ValidateNotNullOrEmpty()]$vmName,
[Parameter(Mandatory=$true, Position=1)]
[System.Management.Automation.PSCredential]$Credential
)
Get-ADComputer -Identity $vmName | Remove-ADComputer -Credential $Credential
Код C #:
var serviceAccount = new PSCredential("saAccount", ConvertToSecureString("aaa"));
var file = File.ReadAllText(@"C:\GitRepo\Remove.ps1");
var webserverAdmin = new PSCredential("wedAdmin", ConvertToSecureString("xxx"));
var connectionInfo = new WSManConnectionInfo(new Uri($"http://mywebserver:5985/wsman"),
"http://schemas.microsoft.com/powershell/Microsoft.PowerShell",
webserverAdmin);
var runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();
var shell = PowerShell.Create(runspace);
shell.AddScript(file, true);
shell.AddParameter("vmName", computerName);
shell.AddParameter("Credential", serviceAccount);
shell.Invoke();
if (shell.HadErrors)
{
Console.WriteLine(shell.Streams.Error[0]);
}
else
{
Console.WriteLine("FInished no errors");
}