我尝试从网站上运行命令行说明
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))*
在管道中
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
// create a pipeline and feed it the script text
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(commandToRun);
Collection<PSObject> results = pipeline.Invoke();
// close the runspace
runspace.Close();
并通过调用流程
Process.Start("@powershell -NoProfile -ExecutionPolicy unrestricted -Command \"iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))\" && SET PATH=%PATH%;%ALLUSERSPROFILE%\\chocolatey\\bin")
答案 0 :(得分:3)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CInstInst
{
class Program
{
static void Main(string[] args)
{
string command = @"@powershell -NoProfile -ExecutionPolicy Bypass -Command ""iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))"" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin";
ExecuteCommandSync(command);
}
public static void ExecuteCommandSync(object command)
{
try
{
// create the ProcessStartInfo using "cmd" as the program to be run,
// and "/c " as the parameters.
// Incidentally, /c tells cmd that we want it to execute the command that follows,
// and then exit.
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
// The following commands are needed to redirect the standard output.
// This means that it will be redirected to the Process.StandardOutput StreamReader.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
string result = proc.StandardOutput.ReadToEnd();
// Display the command output.
Console.WriteLine(result);
}
catch (Exception objException)
{
// Log the exception
}
}
}
}
您可以在此处验证安装:C:\ ProgramData \ chocolatey或运行cinst。如果您已经安装了它,只需将其重命名为chocolatey.old,这将允许您进行测试。完成后 - 删除新的“chocolatey”文件夹并重命名“chocolatey.old”文件夹。
答案 1 :(得分:0)
安装Chocolatey软件:
private async Task ChocolateyDownload(string software)
{
await RunCommandHidden("cd \"C:\\ProgramData\\chocolatey\"\nchoco.exe install " + software + " -y");
}
用法:等待ChocolateyDownload(您的软件名称未安装choco);
获取巧克力味:
private async Task InstallChocolatey()
{
if (!Directory.Exists("C:\\ProgramData\\chocolatey"))
{
await RunCommandHidden(
"@\"%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command \" [System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))\" && SET \"PATH=%PATH%;%ALLUSERSPROFILE%\\chocolatey\\bin\"");
}
}
用法:等待InstallChocolatey();
运行命令隐藏功能:
private bool Exit = false;
public async Task RunCommandHidden(string Command)
{
Random dew = new Random();
int hui = dew.Next(0000, 9999);
string[] CommandChut = { Command };
File.WriteAllLines(System.Environment.GetEnvironmentVariable("USERPROFILE") + "\\Documents\\RunCommand" + hui + ".bat", CommandChut);
Process C = new Process();
C.StartInfo.FileName = System.Environment.GetEnvironmentVariable("USERPROFILE") + "\\Documents\\RunCommand" + hui + ".bat";
C.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
C.EnableRaisingEvents = true;
C.Exited += C_Exited;
C.Start();
while (Exit == false)
{
await Task.Delay(10);
}
Exit = false;
File.Delete(System.Environment.GetEnvironmentVariable("USERPROFILE") + "\\Documents\\RunCommand" + hui + ".bat");
}
private void C_Exited(object sender, EventArgs e)
{
Exit = true;
}