在后台运行powershell 窗口时,如何重新连接到它?或者相反,它的输出是否打算通过日志文件查看?
问问题
2823 次
2 回答
6
通常,您只需输出到日志并检查计划任务。但是,如果您可以容忍控制台窗口短暂闪烁,您可以调用 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'
.
于 2012-08-13T21:59:00.147 回答
1
您始终可以通过创建新的 PowerShell 会话并使用-WindowStyle
开关来更改当前窗口的窗口样式:
PowerShell -Command {exit} -WindowStyle Hidden # Hide the window
Start-Sleep 1 # Do something while hidden
PowerShell -Command {exit} -WindowStyle Normal # Unhide the window
如果您有一个监控脚本,这也可以工作,该脚本开始隐藏并且仅在满足条件时才显示。
于 2021-03-27T12:14:11.170 回答