2

切断されたターミナル セッションの .exe を強制終了する方法を探しています。Navision についてです。ライセンスには制限があり、使用されていないライセンスを削除し続けたいと考えています。

切断されたセッションを完全にログオフする方法があることは知っていますが、この特定の進行状況のみを閉じることを好みます。

私が探していることを正確に実行するように記述されたコードを含むブログ投稿を見つけました。切断されたセッションで特定の .exe をスキャンし、それを強制終了するようにスケジュールされた PowerShell スクリプト。http://www.interworks.com/blogs/jpoehls/2012/12/12/killing-processes-disconnected-terminal-service-sessionsコードはこの Web ページに掲載されています。

残念ながら機能しません。次のエラーが表示されます。

PS C:\scripts> .\navscript.ps1
An empty pipe element is not allowed.
At C:\scripts\navscript.ps1:91 char:10
+         | <<<<  % { $id = $_;
+ CategoryInfo          : ParserError: (:) [
+ FullyQualifiedErrorId : EmptyPipeElement

Google でさまざまな解決策を見つけるために多くの時間を費やしたほか、90 行目の空の行を削除しようとしました。これにより、別のエラーが発生しました。

PS C:\scripts> .\navscript.ps1
Exception calling "Substring" with "2" argument(s): "Lengte kan niet minder dan nul zijn.
Parameternaam: length"
At C:\scripts\navscript.ps1:52 char:44
+                     ;"ID" = $line.Substring <<<< ($line.IndexOf(" ",     $starters.Username), $starters.ID - $line.IndexO
f(" ", $starters.Username) + 2).trim()
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

誰かがこれを機能させる方法を知っていることを願っています。

4

1 に答える 1

1

query sessionコマンド出力はローカライズされているため、最初の行が次の予期される行と一致しない場合、関数にハードコードされているその部分文字列はトリガーGet-Sessionsされません。

 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE

行の最初の記号にスペースがあることに注意してください。

そのため、スクリプトを修正するquery sessionには、ターゲット PC で実行し、最初の行を取得して、ローカライズされた出力の最初の行に表示される正しい文字シーケンスで行 40 から 45 を手動で更新する必要があります。

于 2015-06-17T08:24:07.303 に答える