Увеличьте окно и поднимите его с помощью PowerShell

Есть ли способ открыть окно с PowerShell? Я попробовал это, чтобы скрыть все окна (рабочие) и вернуть мне powershell (не работает).

[void] [System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic")
$shell = New-Object -ComObject "Shell.Application"
$shell.MinimizeAll()

$a = Get-Process | Where-Object {$_.Name -like "powershell"}
[Microsoft.VisualBasic.Interaction]::AppActivate($a.ID)

Любые предложения?

Ответ 1

Расширения сообщества PowerShell имеет командлет, чтобы помочь с этим. Вы используете его так:

Set-ForegroundWindow (Get-Process PowerShell).MainWindowHandle

или

Set-ForegroundWindow (Get-Process -id $pid).MainWindowHandle

Чтобы активировать/показать окно, попробуйте это (если вы используете PowerShell 2.0):

$sig = '[DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);'
Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32
Stop-Process -Name Notepad -ea 0;Notepad.exe
$hwnd = @(Get-Process Notepad)[0].MainWindowHandle
# Minimize window
[Win32.NativeMethods]::ShowWindowAsync($hwnd, 2)
# Restore window
[Win32.NativeMethods]::ShowWindowAsync($hwnd, 4)
Stop-Process -Name Notepad

Ответ 2

Это немного изменяет, поскольку использует WScript, но следующий однострочный слой помещает окно на передний план, не требуя установки внешнего командлета.

В приведенном ниже примере "блокнот" - это имя процесса, связанное с окном.

Кредит идет на форум Idera, размещаемый здесь JSanders:

(New-Object -ComObject WScript.Shell).AppActivate((get-process notepad).MainWindowTitle)