it-swarm-ru.tech

Разверните окно и поставьте его вперед с 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)

Какие-либо предложения? 

13
Yots

PowerShell Community Extensions имеет командлет для помощи в этом. Вы используете это так:

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
18
Keith Hill

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

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

Кредит идет на публикацию форума Idera здесь от JSanders:

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