我正在尝试在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
在我的计算机上,这使我到了现在出现“拒绝访问”问题的位置。