none
取得中のログへのselect-stringについて RRS feed

  • 質問

  • お世話になります。

    Powershell1.0で取得中のログに対して、select-stringを実行すると、

    エラーになってしまいます。

    get-contentは使えるので、パイプライン処理で

    select-stringを実行すれば、

    目的の行は取得できるのですが、ログファイルのサイズが大きいため、

    get-contentを使うと処理が重くなるため、使用したくありません。

    取得中のログに対して、select-stringを実行すると、

    エラーになるのは、仕様なのでしょうか?

    もしそうであれば、取得中のログをコピーして、そのファイルから

    select-stringを実行するしかないかと思っています。

    よろしくお願い致します。

    2016年1月20日 14:58

すべての返信

  • PowerShellの最新バージョンである5.0のSelect-Stringコマンドレットでは、他プロセスによって開かれているファイルでも、ファイル共有モードで読み取り許可されている場合だと、エラーは出ず正常に開けます。

    いつ修正されたのか、ちょっと確認はできていませんが、いずれにしても1.0だと駄目なので、仕様と考えて頂くしかないかもしれません。


    2016年1月21日 7:59
    モデレータ
  • ご回答頂き、ありがとうございます。

    1.0だと駄目なんですね。

    Powershellのバージョンアップも無理そうなので、

    何か別の方法を考えます。

    ありがとうございました。

    2016年1月22日 14:31
  • Powershell 1.0 で動作するかわかりませんが、.NETと併用してOpenとStreamReaderを使用できないでしょうか。

    こちらで紹介されている例では、Get-Contentの6倍ほど早い結果となっています。

    ◆参照モードでのテキストファイルの読み込み
    http://mtgpowershell.blogspot.jp/2011/05/blog-post_27.html

    以上、参考まで。
    2016年4月30日 9:34