通过C#Process.Start()调整PowerShell窗口的大小

时间:2017-08-12 20:13:45

标签: c# powershell

我通过C#启动PowerShell和命令。

使用Windows 10。

方法1

Process.Start("powershell.exe",
    "Write-Host \"Hello, world!\"; timeout 30"
    );

方法2

using (Process ps = new Process())
{
    ps.StartInfo.UseShellExecute = false;
    ps.StartInfo.Verb = "runas";
    ps.StartInfo.CreateNoWindow = false;
    ps.StartInfo.RedirectStandardOutput = false;
    ps.StartInfo.FileName = "powershell.exe";
    ps.StartInfo.Arguments = "Write-Host \"Hello, world!\"; timeout 30";

    ps.Start();
    ps.WaitForExit();
    ps.Close();
}

问题

然而,窗口大小比正常启动PowerShell时要大得多。

是否有可以降低窗口大小的命令或启动参数?

我不想强制使用新的宽度和高度,而是将其恢复为原始大小,因此不会影响Windows 7中其他版本的PowerShell。

左:C#Process.Start()。
右:正常 PowerShell

解决方案

我试过-nologo -noprofile -command

我也试过用这个窗口调整大小
https://stackoverflow.com/a/6485074/6806643

它适用于控制台应用程序,但我无法在WPF中使用它 如果我尝试手动调整宽度,PowerShell也会退出。

1 个答案:

答案 0 :(得分:2)

不同之处在于,开始菜单中的快捷方式具有自己的一组属性。

您可以更改注册表中的默认设置以匹配快捷方式。他们在以下地点:

HKEY_CURRENT_USER\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe
HKEY_CURRENT_USER\Console\%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe

或者你可以通过添加这样的参数在PowerShell中设置它:

ps.StartInfo.Arguments = "$Host.UI.RawUI.WindowSize = New-Object System.Management.Automation.Host.Size (120, 50); Write-Host \"Hello, world!\"; timeout 30";