実際にスクリプトを2に分解することができます。 実際の作業を行い、1人が表示を行います。
したがって、ユーザーが表示ウィンドウを閉じると、実際のスクリプトは開いたままになります。
例えば、取る:
ScriptThatWorkHard.ps1 -WindowStyleHidden
がそう、それはすぐに存在から飛び出す使用打ち上げ。
ユーザーはそのウィンドウを閉じることができません。彼らは(あなたが最初のスクリプトが第二スクリプトに表示するコンテンツを送信する)通信するため
このスクリプトは、すぐに順番にScriptThatDisplayThings.ps1
を起動し、私はパイプのすべてのコンテンツによって生成う隠しスクリプトを2番目のスクリプトが監視するファイルにコピーします。
第2のスクリプトは、LastWriteTimeを監視することにより、ファイルに対する変更を検出し、その内容を表示することができます。ここ
やや単純化したが、第二のスクリプトは次のようになります: (スクリプトを終了するには、代わりに「datelimit」の、あなたの本当のスクリプトを除いては、ユーザーいくつかの他の方法論はず)
if (Test-Path $logFullPath) {
$LastModifiedTime = (Get-ChildItem -Path $logFullPath).LastWriteTime
$DateLimit = (Get-Date).AddSeconds(10)
While ((Get-date) -le $DateLimit) {
$NewLastModifiedDate = (Get-ChildItem -Path $logFullPath).LastWriteTime
if ($LastModifiedTime -ne $NewLastModifiedDate) {
$LastModifiedTime = $NewLastModifiedDate
$DateLimit = (Get-Date).AddSeconds(10)
Write-Host 'The unread lines from your logfile'
}
}
}
この決して完全な例ではなく始まりです。例えば
、あなたのディスプレイスクリプトにコマンドを渡すためにあなたのログに特別なラインを検出して使用することができます(そのようシャットダウンように、それは「datelimit」の代わりにクローズする際に知っている)も
、 「ログファイルの新しいコンテンツを読む」を実装する必要があります。
しかし、その方法論を使用した結果は明らかです。 迷惑なユーザーがウィンドウを閉じると、彼は実際には下にある実行中のスクリプトではなく、情報ウィンドウを閉じています。
割り込みハンドリングは間違いなくあなたがだと思います – Clijsters
あなたはスクリプトを最小限に抑えようと試みることができますが、ユーザーはまだ大混乱に陥るかもしれません。あなたが本当に必要とするのは、ユーザーのモチベーションを理解することです。 *なぜ*彼らは窓を閉めているのですか?動機づけを理解した後、解決策を見つけやすくなります。 – vonPryz
関数の入力処理メソッド(Begin..Process..End)を見てください。リンク:https://ss64.com/ps/syntax-function-input.html最後の部分でクリーンアップを行うことができます – guiwhatsthat