3
當您運行powershell window in the background時,您如何重新連接到它?或者相反,它的輸出是否打算在該點通過日誌文件查看?取消隱藏已使用-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