有没有办法从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)
Run Code Online (Sandbox Code Playgroud)
有什么建议?
Kei*_*ill 18
在PowerShell的社区扩展有cmdlet来帮助实现这些.你这样使用它:
Set-ForegroundWindow (Get-Process PowerShell).MainWindowHandle
Run Code Online (Sandbox Code Playgroud)
要么
Set-ForegroundWindow (Get-Process -id $pid).MainWindowHandle
Run Code Online (Sandbox Code Playgroud)
要激活/显示窗口,请尝试此操作(假设您使用的是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
Run Code Online (Sandbox Code Playgroud)
这有点作弊,因为它使用的是 WScript,但下面的一行代码将窗口放置在前台,而不需要安装任何外部 cmdlet。
在下面的示例中,“notepad”是与窗口关联的进程名称。
感谢JSanders在Idera 论坛上发帖:
(New-Object -ComObject WScript.Shell).AppActivate((get-process notepad).MainWindowTitle)
Run Code Online (Sandbox Code Playgroud)