取消隐藏已使用-WindowStyle隐藏的PowerShell窗口?
问题描述:
当您运行powershell window in the background时,您如何重新连接到它?或者相反,它的输出是否打算在该点通过日志文件查看?取消隐藏已使用-WindowStyle隐藏的PowerShell窗口?
答
通常情况下,您只需输出到日志并检查计划任务。但是,如果你能忍受的控制台窗口闪动起来简单,你可以的PInvoke对Win32 API控制控制台窗口如的可见性:
$src = @'
[DllImport("Kernel32.dll")]
public static extern IntPtr GetConsoleWindow();
[DllImport("User32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow);
'@
Add-Type -Name ConsoleUtils -Namespace Foo -MemberDefinition $src
$hide = 0
$show = 1
$hWnd = [Foo.ConsoleUtils]::GetConsoleWindow()
[Foo.ConsoleUtils]::ShowWindow($hWnd, $hide)
Start-Sleep -Sec 5
[Foo.ConsoleUtils]::ShowWindow($hWnd, $show)
Read-Host "Press any key to exit"
通常你会不会想展示窗口,但也许你定义一个环境变量,然后让脚本检查该环境变量的某个值,并在该情况下显示窗口,例如$env:DebugSchTask -eq 'yes'
。
太棒了。从powershell调用win32一个很好的方法。 – zdan 2012-08-14 00:34:15
@Keith Hill,我试图在Powershell 4 sched任务中使用它,使用WindowStyle Hidden运行,运行任务acct是否登录。你的代码不会抛出错误,但它不会为我显示窗口。难道当这个任务在没有用户登录的情况下运行时,无论如何它都会被隐藏起来?谢谢! – user1411212 2016-08-12 15:26:29
是的,从https://technet.microsoft.com/en-us/library/cc722152.aspx - “如果选择此单选按钮,任务将不会交互式运行” – 2016-08-12 22:14:07