使用powershell进行复制和远程处理
本文关键字:程处理 处理 powershell 复制 使用 | 更新日期: 2023-09-27 18:23:35
大家好,我想把一个文件复制到计算机上,然后远程复制到所说的机器上并运行单个命令,然后收集该命令的输出文件。我已经被指派使用Powershell复制并远程进入机器。我使用此页面来帮助我起步:http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-C我使用的程序是.net 4,必须保持这种状态。我首先安装了windows sdk 3.5,然后当代码不起作用时,我安装了sdk 4.0,但我仍然得到在我的回答字符串中出现了相同的错误:"混合模式程序集是根据运行时的v2.0.50727版本生成的,如果没有其他配置信息,就无法在4.0运行时中加载。''r''n"谢谢你的帮助Casey
Runspace runspace = RunspaceFactory.CreateRunspace();
// open it
runspace.Open();
// create a pipeline and feed it the script text
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript("Import-Module BitsTransfer" + Environment.NewLine + "Start-BitsTransfer -Source " + filename + " -Destination ''''" + host + "''" + uploadtodir + "''"+Environment.NewLine);
// add an extra command to transform the script output objects into nicely formatted strings
// remove this line to get the actual objects that the script returns. For example, the script
// "Get-Process" returns a collection of System.Diagnostics.Process instances.
pipeline.Commands.Add("Out-String");
// execute the script
Collection<PSObject> results = new Collection<PSObject>();
try
{
results = pipeline.Invoke();
}
catch (Exception ex)
{
results.Add(new PSObject((object)ex.Message));
}
// close the runspace
runspace.Close();
// convert the script result into a single string
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
string answer= stringBuilder.ToString();
在项目的App.config文件中,您需要添加以下内容:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
如果没有App.config文件,只需创建一个即可。希望这对你有帮助。