gpt4 book ai didi

c# - 在 C# 中使用 winrm 在远程窗口上运行命令

转载 作者:太空狗 更新时间:2023-10-30 00:24:16 24 4
gpt4 key购买 nike

我有一种使用 winrm 从本地 Windows 机器连接到远程 Windows 机器的简单方法。这是有效的 powershell 代码:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value $ip -Force
$securePassword = ConvertTo-SecureString -AsPlainText -Force 'mypass'
$cred = New-Object System.Management.Automation.PSCredential 'Administrator', $securePassword
$cmd = {ls C:\temp}
Invoke-Command -ComputerName $ip -Credential $cred -ScriptBlock $cmd

我想弄清楚如何在 C# 中做正确的事情。

此外,如果有人告诉我是否有一种在 c# winrm 中发送文件的方法,那将是额外的帮助。

注意:这只是我本地机器上需要的 C# 代码。远程机器已经设置好。

最佳答案

好吧,我想出了一种方法,我将在下面发布,但是虽然它在 Windows 8 上运行良好,但在 Windows 7 上遇到错误“强名称验证失败”,所以我应该继续研究这个问题。不过,请随时发表其他想法。

--> 将 System.Management.Automation.dll 添加到您的项目中。

    WSManConnectionInfo connectionInfo = new WSManConnectionInfo();
connectionInfo.ComputerName = host;
SecureString securePwd = new SecureString();
pass.ToCharArray().ToList().ForEach(p => securePwd.AppendChar(p));
connectionInfo.Credential = new PSCredential(username, securePwd);
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();
Collection<PSObject> results = null;
using (PowerShell ps = PowerShell.Create())
{
ps.Runspace = runspace;
ps.AddScript(cmd);
results = ps.Invoke();
// Do something with result ...
}
runspace.Close();

foreach (var result in results)
{
txtOutput.AppendText(result.ToString() + "\r\n");
}

关于c# - 在 C# 中使用 winrm 在远程窗口上运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27197402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com