Как сделать восстановление окна RDP из powershell? - PullRequest
1 голос
/ 02 мая 2019

У меня RDP-соединение открыто и свернуто или в фоновом режиме.Я хочу восстановить / сделать его активным.

Когда я попробовал это с блокнотом, он работает, он восстанавливает его, но окно rdp я не могу поймать.Я начал с проверки открытых окон

Get-Process | Where-Object {$_.MainWindowTitle -ne ""} | Select-Object MainWindowTitle, name, id

И он возвращает мне mstsc как процесс rdp, но когда я попытался поместить его в скрипт, он не работает.и если я изменю его на блокнот, он работает (если блокнот открыт), я должен дать кредиты для этого кода Bobmccoy на community.spiceworks.com.

function Set-WindowStyle {
param(
    [Parameter()]
    [ValidateSet('FORCEMINIMIZE', 'HIDE', 'MAXIMIZE', 'MINIMIZE', 'RESTORE', 
                 'SHOW', 'SHOWDEFAULT', 'SHOWMAXIMIZED', 'SHOWMINIMIZED', 
                 'SHOWMINNOACTIVE', 'SHOWNA', 'SHOWNOACTIVATE', 'SHOWNORMAL')]
    $Style = 'SHOW',
    [Parameter()]
    $MainWindowHandle = (Get-Process -Id $pid).MainWindowHandle
)
    $WindowStates = @{
        FORCEMINIMIZE   = 11; HIDE            = 0
        MAXIMIZE        = 3;  MINIMIZE        = 6
        RESTORE         = 9;  SHOW            = 5
        SHOWDEFAULT     = 10; SHOWMAXIMIZED   = 3
        SHOWMINIMIZED   = 2;  SHOWMINNOACTIVE = 7
        SHOWNA          = 8;  SHOWNOACTIVATE  = 4
        SHOWNORMAL      = 1
    }
    Write-Verbose ("Set Window Style {1} on handle {0}" -f $MainWindowHandle, $($WindowStates[$style]))

    $Win32ShowWindowAsync = Add-Type –memberDefinition @” 
    [DllImport("user32.dll")] 
    public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
“@ -name “Win32ShowWindowAsync” -namespace Win32Functions –passThru

    $Win32ShowWindowAsync::ShowWindowAsync($MainWindowHandle, $WindowStates[$Style]) | Out-Null
}

(Get-Process -Name mstsc).MainWindowHandle | foreach { Set-WindowStyle MINIMIZE $_ }
(Get-Process -Name mstsc).MainWindowHandle | foreach { Set-WindowStyle RESTORE $_ }

Этот код работает, если в последнем 2 предложениипоставить блокнот.Я должен минимизировать это сначала, потому что это не восстановит, если это находится в фоне.Но он не работает с процессом rdp (mstsc).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...