Ошибка с Plink с WMI

У меня есть скрипт powershell, который использует Plink ssh. Скрипт работает, но мне нужно заставить его работать через C# и WMI

Проблемная строка сценария powershell: c:/temp/plink.exe -ssh [email protected] -pw password1

Когда я пытаюсь использовать его через WMI, я получаю сообщение об ошибке "Ключ хоста сервера не кэширован в реестре..."

Нужен ли ключ хоста, соответствующий WMIEndpoint? Каковы шаги по созданию необходимых ключей для конечной точки WMI?

Ниже приведен код консольного приложения, которое воспроизводит проблему.

        private static SecureString ConvertToSecureString(string s)
        {
            var ss = new SecureString();
            foreach (var passChar in s) ss.AppendChar(passChar);
            return ss;
        }

        private static void RunScriptAsPrivilegedAccount(string userAndDomain, string privilegedPassword, string endPointUrl, string script)
        {
            var ss = ConvertToSecureString(privilegedPassword);

            var psCredential =
                new PSCredential(userAndDomain, ss);

            var winRmEndpoint = new Uri(endPointUrl);

            var connectionInfo = new WSManConnectionInfo(winRmEndpoint,
                "http://schemas.microsoft.com/powershell/Microsoft.PowerShell", psCredential);


            using (var runspace = RunspaceFactory.CreateRunspace(connectionInfo))
            {
                using (var powershell = PowerShell.Create())
                {
                    runspace.Open();
                    powershell.Runspace = runspace;
                    powershell.AddScript(script);

                    powershell.Invoke();

                    if((powershell.Streams.Error.Count > 0))
                    {
                        string errorMessage = String.Join(",",powershell.Streams.Error.Select(
                            x => x.Exception.Message).ToArray());

                        throw new ApplicationException(errorMessage);                               
                    }
                }
            }
        }

        static void Main(string[] args)
        {
            RunScriptAsPrivilegedAccount(
                "[email protected]",
                "adminPwd",
                "http://localhost:5985/wsman",
                "c:/temp/plink.exe -ssh [email protected] -pw password1");

            try
            {
                Console.Write("Success");
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }
        } 

person Ken    schedule 31.10.2013    source источник
comment
Вам необходимо предварительно кэшировать ключ хоста хоста с IP-адресом 192.168.60.202. См. здесь.   -  person Ansgar Wiechers    schedule 01.11.2013


Ответы (1)


трубопровод в Y сделал свое дело

линия теперь Y | c:/temp/plink.exe -ssh [email protected] -pw пароль1

person Ken    schedule 01.11.2013