いつもお世話になっております。
PowerShellスクリプトについてご教授ください。
検索元であるファイルAからSelect-Stringメソッドを使用して
ヒットした文言を一行単位で配列としてオブジェクトに格納しました。
そのオブジェクト内にあるテキスト群をリダイレクトでテキストファイルに出力したところ
Microsoft.PowerShell.Commands.MatchInfoオブジェクトによる影響?で改行が行われました。
(PowerShellの画面バッファーの設定に依存するとのこと)
改行を防ぐためにTo_stringメソッドを使用して改行を防いだのですが、
配列内に複数要素が存在する場合(Select-Stringで二行以上検索文言が発見された場合)、
System.Object[]とテキストファイルに出力されていしまいます。
配列の要素が複数存在する場合、リダイレクトにそのまま出力できないのでしょうか?
もしも、オブジェクトとして以外でSelect-Stringの返却値を返す方法があるなど
解決策がございましたらご教授願えますでしょうか。
以下、ソースの抜粋になります。
function
1{ 2 #設定ファイルの一行分(検索文言)をRead-iniから受け取る 3 param($_line_1,$_DayFile1) 4 echo $_line_1 5 echo $_DayFile1 6 #各変数を用意してリダイレクトで作業ファイルに書き出し 7 $_wrkfile = $_wrkpath + $_DayFile + "Tgtwrd.txt" 8 $_flepath = $_logpath + "\" + $_DayFile 9 $_wrkobj = Get-Content $_flepath | Select-String $_line_1 10 11 #検索文言が調査対象ファイルに存在した場合のみ後続処理を行う 12 if($_wrkobj -ne $_null) 13 { 14 $_wrkobj.GetType().FullName 15 $_wrkobj >> $_wrkfile 16 ($_wrkobj).ToString() >> $_wrkfile 17 } 18} 19コード
以上になります。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/25 09:49
2020/03/25 10:13
2020/03/26 08:00