none
PowerShellの処理時間が長くなった RRS feed

  • 質問


  • お世話になっております。

    Windows10 PCからPowerShellのリモート実行でスクリプト処理を行っております。

    業務都合でPCからインターネットに接続出来ないようにしたところ
    PowerShellのスクリプト処理に要する時間がインターネット接続出来ていたときより
    10倍以上かかるようになりました。

    同様に時間がかかる処理として以下の二つの事象が発生しました。
    1. リモートデスクトップ接続に時間がかかる
    2. 社内システムの接続に時間がかかる

    1. はhttps://support.microsoft.com/ja-jp/kb/2915774の
    "接続元で信頼された証明機関のリストを取得する処理を無効化する。"を実施したところ改善し、
    2. はIEの設定[インターネットオプション]-[詳細設定タブ]-[セキュリティ]の
    "サーバーの証明書失効を確認する"のチェックを外すことで改善しました。

    上記どちらも証明書の状況確認でインターネットへの通信が発生し、
    タイムアウト待ちにより時間がかかっていたという結論になりました。

    そこでPowerShellも同様に何かしらインターネットへの通信が発生していることにより
    タイムアウト待ちをしているのではないかと考えております。

    PowerShellにも証明書の確認をしないようにする設定などございましたら、ご教示お願い致します。
    2016年12月27日 7:11

回答

  • 牟田口大介さん

    ご回答いただきありがとうございます。

    その後、PowerShellの実行中のパケットを確認したところ
    ウィルス対策ソフトのエージェントから外部のウィルス対策ソフトのサーバー宛に
    通信をしていることがわかりました。

    ウィルス対策ソフトのエージェントを無効にしてから再度PowerShellを実行したところ
    スクリプト処理にかかる時間が改善されたことを確認しました。

    ですのでPowerShell自体の問題ではなく、PowerShell実行時にウィルス対策ソフトが
    何かしらのトリガーで外部に通信を発生させようとし、そのタイムアウト待ちにより処理時間が長くなったと推測されます。

    今後PowerShellの挙動がおかしくなった際は、ご教示いただきました内容も活かさせていただきます。
    2016年12月28日 14:29

すべての返信

  • PSRemotingには証明機関のチェックをスキップするオプションがあります。

    それにはまず、New-PSSessionOptionコマンドレットでSkipCACheckパラメータを付与して、PSSessionOptionオブジェクトを生成します。生成したPSSessionOptionオブジェクトを、Invoke-Command、New-PSSession、Enter-PSSessionコマンドレット等の-SessionOptionパラメータに渡してやることで、リモート接続時の認証において、証明機関のチェックがスキップされます。

    2016年12月27日 10:52
    モデレータ
  • 牟田口大介さん

    ご回答いただきありがとうございます。

    その後、PowerShellの実行中のパケットを確認したところ
    ウィルス対策ソフトのエージェントから外部のウィルス対策ソフトのサーバー宛に
    通信をしていることがわかりました。

    ウィルス対策ソフトのエージェントを無効にしてから再度PowerShellを実行したところ
    スクリプト処理にかかる時間が改善されたことを確認しました。

    ですのでPowerShell自体の問題ではなく、PowerShell実行時にウィルス対策ソフトが
    何かしらのトリガーで外部に通信を発生させようとし、そのタイムアウト待ちにより処理時間が長くなったと推測されます。

    今後PowerShellの挙動がおかしくなった際は、ご教示いただきました内容も活かさせていただきます。
    2016年12月28日 14:29