Я пытаюсь установить сеанс с удаленным хостом B с моей машины A в коде C #.Я использую для этого runspace API.фрагмент кода приведен ниже
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
//constructing the vmname parameter here
vmname = useralias + DateTime.Now.ToString();
Pipeline pipeline = runspace.CreatePipeline();
string scripttext = "$secpasswd = ConvertTo-SecureString '222_bbbb' -AsPlainText –Force";
string scripttext1 = "$mycreds = New-object -typename System.Management.Automation.PSCredential('TS-TEST-09\\Administrator',$secpasswd)";
string scripttext2 = "$s = New-PSSession -ComputerName TS-TEST-09 -Credential $mycreds";
//not accepting session string here, only computername acceptable
**string scripttext3 = "Enter-PSSession -Session $s";**
//Command cmd = new Command(@"C:\mypath\helper.ps1", true);
//cmd.Parameters.Add("local_useralias", useralias);
//cmd.Parameters.Add("local_vmname", vmname);
//cmd.Parameters.Add("local_datastore", datastoredropdown.Text.ToString());
//cmd.Parameters.Add("local_architecture", architecturedropdown.Text.ToString());
pipeline.Commands.AddScript(scripttext);
pipeline.Commands.AddScript(scripttext1);
pipeline.Commands.AddScript(scripttext2);
pipeline.Commands.AddScript(scripttext3);
//pipeline.Commands.Add(cmd);
Collection<PSObject> results = pipeline.Invoke();
runspace.Close();
этот код, как ожидается, войдет в сеанс с машиной TS-TEST-09 и вызовет сценарий helper.ps1, существующий на этой машине (эта часть закомментирована вкод в настоящее время, так как я не могу войти в сеанс с удаленным хостом).
Теперь проблема в том, что я не могу войти в сеанс $ s с помощью параметра -Session (выделено в scripttext3), однако я могувведите его, используя параметр -Computername.
ошибка, которую я получаю при использовании параметра -Session в scripttext3:
в invokedSystem.Management.Automation.Internal.Host.InteralHost.GetIHostSupportsInteractiveSession ()
в invokedSystem.Management.Automation.Internal.Host.InteralHost.PushRunspace (пространство выполнения Runspace)
в Microsoft.Powershel.Commands.EnterPSSessionCommand.ProcessRecord ()
в System.Management.Automation.Cmdlet.DoProcessRecord ()
в System.Management.Automation.CommandProcessor.ProcessRecord ()
конец внутренней трассировки стека исключений
означает ли это, что я должен написать собственный PSHost идобавить поддержку командлета Enter-PSSession с этим параметром?
Есть ли альтернатива, чтобы эта команда работала?
любая помощь будет высоко оценена.
Спасибо,
Маниш