5

バックグラウンドでPowerShellウィンドウを実行する場合、どのように再接続しますか?または、代わりに、その時点でログファイルを介して表示することを目的とした出力ですか?

4

2 に答える 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

-WindowStyle新しいPowerShellセッションを作成し、スイッチを使用することで、現在のウィンドウのウィンドウスタイルをいつでも変更できます。

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 に答える