如何在Windows 10上以管理员身份从C#执行Powershell

时间:2019-07-16 23:48:40

标签: c# powershell windows-10

我正在尝试在Windows 10上从c#执行powershell脚本,并遇到“访问被拒绝”错误。到目前为止,这是我的代码:

            var powerShellCommand = $"Invoke-Command -ScriptBlock {{ pdqdeploy Deploy -Package \"{packageName}\" -Targets \"{machineName}\" }}";
            var passwordSecureStringAdmin = new SecureString();
            var passwordAdmin = "daadminpw";
            for (int i = 0; i < passwordAdmin.Length; i++)
            {
                passwordSecureStringAdmin.AppendChar(passwordAdmin[i]);
            }

            var credential = new PSCredential("monkeytown.com\\monkey.king", passwordSecureStringAdmin);
            var connectionInfo = new WSManConnectionInfo({ Credential = credential};

            using (var runSpace = RunspaceFactory.CreateRunspace(connectionInfo))
            {
                runSpace.Open();
                using (var ps = PowerShell.Create())
                {
                    ps.Runspace = runSpace;
                    ps.AddScript("Enable-PSRemoting -SkipNetworkProfileCheck -Force");
                    ps.AddScript("Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted");
                    ps.AddScript(powerShellCommand);
                    var PSOutput = ps.Invoke();

                    if (ps.HadErrors)
                    {
                        throw ps.Streams.Error.ElementAt(0).Exception;
                    }
                }
                runSpace.Close();
            }

在某些背景下,我遇到过一些以前的错误,这些错误是我在这里遇到的:

  

错误消息:连接到远程服务器localhost失败,并显示以下错误消息:客户端无法连接到请求中指定的目标。验证目标上的服务正在运行并且正在接受请求。有关在目标(通常是IIS或WinRM)上运行的WS-Management服务的信息,请查阅日志和文档。如果目标是WinRM服务,请在目标上运行以下命令以分析和配置WinRM服务:“ winrm quickconfig”。有关更多信息,请参见about_Remote_Troubleshooting帮助主题。

所以我在PS中手动运行了winrm quickconfig并遇到了另一个错误:

  

未将WinRM设置为在此计算机上接收请求。   必须进行以下更改:

     

启动WinRM服务。
  将WinRM服务类型设置为延迟自动启动。

     

做出这些更改[y / n]? y

     

WinRM已更新,可以接收请求。

     

WinRM服务类型已成功更改。
  WinRM服务已启动。
  WSManFault
      消息=客户端无法连接到请求中指定的目标。验证目标上的服务正在运行并且正在接受请求。有关在目标(通常是IIS或WinRM)上运行的WS-Management服务的信息,请查阅日志和文档。如果目标是WinRM服务,请在目标上运行以下命令以分析和配置WinRM服务:“ winrm quickconfig”。

     

错误号:-2144108526 0x80338012
  客户端无法连接到请求中指定的目标。验证目标上的服务正在运行并且正在接受请求。有关在目标(通常是IIS或WinRM)上运行的WS-Management服务的信息,请查阅日志和文档。如果目标是WinRM服务,请在目标上运行以下命令以分析和配置WinRM服务:“ winrm quickconfig”。

所以我跑了:

Enable-PSRemoting -SkipNetworkProfileCheck -Force

在我的计算机上,这使我到了现在出现“拒绝访问”问题的位置。

0 个答案:

没有答案