【问题标题】:Resize PowerShell Window through C# Process.Start()通过 C# Process.Start() 调整 PowerShell 窗口大小
【发布时间】:2017-08-13 05:45:54
【问题描述】:

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

使用 Windows 10。

方法一

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

方法二

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().
右:正常

解决方案

我试过-nologo -noprofile -command

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

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

【问题讨论】:

  • How to set the height of a window using c#? 的可能重复项,或者您可以尝试类似 ps.StartInfo.WindowStyle = ProcessWindowStyle.Minimized; 的内容
  • 看看gci HKCU:/console/%SystemRoot%_Sys*
  • @GeorgeAlexandria 它在控制台应用程序中工作,但我无法让它在 WPF 中工作。它调整了窗口大小,但字体大小仍然很大。
  • 我建议将此信息添加到您的问题中:调整窗口大小和字体。
  • @GeorgeAlexandria 我用一些新信息更新了这个问题。

标签: c# powershell


【解决方案1】:

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

您可以更改注册表中的默认设置以匹配快捷方式。它们位于以下位置:

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";

【讨论】:

  • 我想使用参数,所以它不会永久更改用户的注册表。我试过你的论点,但似乎没有生效。
  • @MattMcManis 抱歉,您需要将(120, 50) 中的12050 值更改为您想要的大小。
  • 那行得通,我还添加了$Host.UI.RawUI.BufferSize。还有一件事,你知道如何调整字体大小吗?我试过这个 ISEOptions 但它给出了一个错误The property 'FontSize' cannot be found on this object.docs.microsoft.com/en-us/powershell/scripting/…
  • @MattMcManis 我认为没有办法不使用 win32 API,这将过于冗长而无法通过进程参数加载。仅供参考,ISE 变量仅存在于 ISE 的终端中。它还使用自定义主机,因此您将无法使用相同的方法。
猜你喜欢
  • 1970-01-01
  • 2020-01-16
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 2011-12-21
  • 1970-01-01
相关资源
最近更新 更多