2017-08-12 34 views
1

我通過C#啓動PowerShell和命令。通過C#Process.Start調整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

的可能的複製[如何設置使用C#窗口的高度? ](https://stackoverflow.com/questions/6484567/how-to-set-the-height-of-a-window-using-c)或者你可以嘗試看起來像這樣'ps.StartInfo.WindowStyle = ProcessWindowStyle .'最小化;' –

+0

看看'gci HKCU:/ console /%SystemRoot%_Sys *' – LotPings

+0

@GeorgeAlexandria它在一個控制檯應用程序中工作,但我無法讓它在WPF中工作。它調整窗口大小,但字體大小仍然很大。 –

回答

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

我想使用Arguments,所以它不會永久地改變用戶的註冊表。我嘗試了你的論點,但似乎沒有生效。 –

+0

@MattMcManis對不起,您需要將'(120,50)'中的'120'和'50'的值更改爲所需的大小。 –

+0

這工作,我也加了'$ Host.UI.RawUI.BufferSize'。還有一件事,你知道如何調整字體大小嗎?我試過這個ISEOptions,但是它給出了一個錯誤'在這個對象上找不到屬性'FontSize'。 https://docs.microsoft.com/en-us/powershell/scripting/the-iseoptions-object?view=powershell-6#fs –