Я пытаюсь преобразовать этот код, который работает в Powershell ISE
PWord = ConvertTo-SecureString "P@ssw0rd???" -AsPlainText -Force
$User = "testing\administrator"
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
Restart-Computer -ComputerName 10.0.50.235 -Credential $Credential -Force
Ниже приведено то, что я написал в консольном приложении, написанном на net ядре 3.1, но выдает ошибку WinRm.
PowerShell ps = PowerShell.Create();
ps.AddCommand("Restart-Computer");
SecureString secureString = new NetworkCredential("administrator", "P@ssw0rd???", "testing").SecurePassword;
PSCredential psc = new PSCredential($"testing\\administrator", secureString);
ps.AddParameter("Credential", psc);
ps.AddParameter("ComputerName", ip);
ps.AddParameter("Force");
var results = ps.Invoke();
Когда я запускаю это, выдается ошибка
Не удалось перезагрузить компьютер 10.0.50.235 со следующим сообщением об ошибке: Клиент WinRM не может обработать запрос. Аутентификация по умолчанию может использоваться с IP-адресом при следующих условиях: транспорт - HTTPS, или пункт назначения находится в списке TrustedHosts, и предоставляются явные учетные данные. Используйте winrm.cmd для настройки TrustedHosts. Обратите внимание, что компьютеры в списке TrustedHosts могут не проходить проверку подлинности. Для получения дополнительной информации о том, как установить TrustedHosts, выполните следующую команду: winrm help config.
Я запутался в том, что я делаю неправильно, поскольку он отлично работает в Powershell ISE, но не в. net.
Я также попробовал следующее, но я все еще получаю ту же ошибку
SecureString secureString = new SecureString();
foreach (char c in rebootOptions.Password)
{
secureString.AppendChar(c);
}
Кто-нибудь знает, что я делаю неправильно?