• ベストアンサー

powershellのパイプでテキストデータを渡す

queuerev2の回答

  • ベストアンサー
  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.1

調べてみました。 できますが、文字コードの関係で一工夫必要です。 ASCIIならCMD.EXEと同じで大丈夫です。 PS C:\Users\User1> cmd /c echo test | more.com test しかし日本語は文字化けします。 PS C:\Users\User1> cmd /c echo テスト | more.com ??? 原因は$OutputEncodingがUS-ASCIIになっているからだそうです。 そこでこれをシフトJISにすればいいのですが、いちいちUS-ASCIIに戻すのは面倒なので子スコープを使うことにします。 なお、シフトJISのエンコーディングになっているものとしては[console]::OutputEncodingがあるのでそれを使います。 PS C:\Users\User1> &{$outputencoding=[console]::outputencoding; cmd /c echo テスト | more.com} テスト 参考にした資料は以下のとおりです。 http://blog.livedoor.jp/hentaiga/archives/51624750.html http://scripting.cocolog-nifty.com/blog/2010/05/powershell-9c98.html 【改訂新版】 Windows PowerShell ポケットリファレンス(技術評論社)

参考URL:
http://blog.livedoor.jp/hentaiga/archives/51624750.html
omorinoya35234
質問者

お礼

おお!できるのですね。できないと言うサイトがあったので 無理なのかなと思っていたのですが。感謝です。

関連するQ&A

  • Powershell

    Powershellについてよくわからないのですが、 ググってみると -------------------------------------------------- Windows PowerShell は、マイクロソフトが開発した拡張可能なコマンドラインインターフェース (CLI) シェルおよびスク リプト言語である。 オブジェクト指向に基づいて設計されており、. NET Frameworkを基盤としている。 -------------------------------------------------- と記載されていたのですが、 要するにどういう事ですか? プログラミング言語ですか? ソフトウェアですか?

  • PowerShellでテキスト内にコマンド表示させるには

    powershellでテキスト内にコマンド結果を表示させるにはどうすればよいでしょうか? 例えば以下のコマンドで、 echo "### date ###" ↓このように表示させたいのですが ### 2010年1月18日 12:00:00 ### Linuxでいうバッククォーテーション(``)なのですが powershellだとどういう方法なのでしょうか?

  • powershellでのテキスト整形

    Powershellで、以下のデータ(CSVファイル)を読み込み、"Data"の値が変わるときに 改行を入れてテキスト出力したいですが、可能でしょうか? (Data毎に区切り(改行)をいれ、視覚的に見やすくしたいのが目的です) CSVファイル Data Name ---- ----- Data1 file1.txt Data1 file1.txt Data2 file1.txt Data2 file1.txt Data2 file3.txt Data2 file1.txt Data3 file3.txt Data3 file3.txt Data3 file2.txt Data3 file2.txt 出力テキスト Data Name ---- ----- Data1 file1.txt Data1 file1.txt Data2 file1.txt Data2 file1.txt Data2 file3.txt Data2 file1.txt Data3 file3.txt Data3 file3.txt Data3 file2.txt Data3 file2.txt 以上、よろしくお願いします。

  • Powershellで外部テキストファイルより

    まだまだPowershellの初心者で勉強中です。よろしくお願いします。 下記のような記述がしてある『applist.txt』というテキストファイルがあります。 ホスト名  チーム名 abc123  ponpon666 12def456  gekogeko777 ghi78912  fufufu888 Powershellで、まず端末のホスト名を取得し、その値と、上記の『C:\share』というフォルダの中にあるテキストのホスト名と一致した行にある値を表示したいのです。 外部テキストは、他の作業でも使用するため編集はできません。 作ってみたものは、   $result = ipconfig /all $hostname = $result[6].split(":")[1].Trim()  Select-String $hostname -Path C:\share\applist.txt  として、  ホスト名がghi78912という名前のPCのPowershell ISEで実行したところ  C:\share\applist.txt:3:ghi78912 fufufu888 と1行分が出てしまいます。 これをチーム名のfufufu888だけが取得できるようにするには、どのようにすると良いのか、教えていただけませんでしょうか。

  • Windows PowerShell用のcuiエディタって何かあります

    Windows PowerShell用のcuiエディタって何かありますか? PowerShellにより、 WindowsもLinuxのようにシェルスクリプトが組めたり、 Enter-PSSessionコマンドにより、cui的なリモートログインができるようになっていると知りました。 この流れで考えたときに、cuiエディタはどうしても必要だと思います。 Linuxにはviなどのエディタがありますが、PowerShellにはそういったものは存在しないのでしょうか?

  • データパイプについて

    データパイプって何ですか?どうすれば使えるようになるんですか、教えてください。よろしくお願いします。

  • PowerShell 7 をインストールしました

    PowerShell 7 をインストールしました まだ何も分かりません。 ザックリの話ですが、 テキストでコマンドスクリプトを書いたとして、 拡張子は何で保存して、 実行する際はどうやって実行すればよろしいでしょうか?

  • windows powershellのコンソール上で表示されなくなった

    windows powershellのコンソール上で表示されなくなった上部のデータ(文字)を参照する方法はないでしょうか。 powershellであるscriptを実行しました。その結果としてコンソール上に表示された情報(文字)が予想以上に多く、 上部の方がコンソールの表示範囲を超えてしまった為参照できなくなってしまいました。 ※cmd.exeでも同じ状況になっていると思います。 状況の説明が難しいのですが、 コンソールウィンドウのスクロールバーを一番上までもっていっても今回のscriptの実行結果として表示された情報の初めの行までは表示出来ない状態です。 予めコンソールの出力をテキストファイルなどにリダイレクトするようにして実行すれば良かったのですが。。 powershellに標準出力されたデータはどこかにログなど残っているのでしょうか? windows、powershellに詳しい方、ご教授お願い致します。

  • PowershellでExcelへデータを書き込む

    データを別途クリップボードにコピーしPowershellでExcelに書き込むことは下記の方法で出来ますが *コピー元の水平タブ区切りデータ 果物 りんご みかん バナナ 個数 12 25 15 *ペーストで書き込むるpsコード <# Excelを操作する為の宣言#> $excel = New-Object -ComObject Excel.Application <# 起動直後は非表示(最小化ではない)になっているので表示する#> $excel.Visible = $true <#新規ブックを作成する#> $book = $excel.Workbooks.Add() <#新規ブックを作成する#> $sheet = $excel.Worksheets.Item(1) <#B列にペーストする#> $sheet.Range("B2").PasteSpecial($exlpasteType::xlPasteValues) <#メモリを解放#> $excel = $null [GC]::Collect() これに対しデータのコピー等の作業を省き直接配列を使い処理できないかと思い下記のコードの方法まで至りました *配列で書き込むるpsコード <# Excelを操作する為の宣言#> $excel = New-Object -ComObject Excel.Application <# 起動直後は非表示(最小化ではない)になっているので表示する#> $excel.Visible = $true <#新規ブックを作成する#> $book = $excel.Workbooks.Add() <# シートを取得する#> $sheet = $excel.Worksheets.Item(1) <# セルへ配列で書き込み#> $arw = New-Object "object[,]" 2, 4 <# 書き込み用配列定義 2行4列#> $arw[0, 0] = "果物"; $arw[0, 1] = "りんご"; $arw[0, 2] = "みかん"; $arw[0, 3] = "バナナ" $arw[1, 0] = "個数"; $arw[1, 1] = 12; $arw[1, 2] = 25; $arw[1, 3] = 15 $sheet.Range("B2:E3") = $arw <# B2:E3 にセット#> <#メモリを解放#> $excel = $null [GC]::Collect() コピペで使うデータはsqlの集計結果をそのまま利用していますが、このコードの配列に書き直すにはちょっと手間が掛かる等の理由でもっとシンプル方法がないかと思い質問いたしました。 何か良い方法があればお教えください。

  • PowerShellを使ってキッテッングがしたい

    下記のコマンドをPowerShell(管理者)でテキストファイルからコピペして実行しています。 #(1)powershellの実行ポリシー変更 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force #(2)01_Kittingフォルダへの移動 net use X: \\filesever\user\01_Kitting pushd \\fileserver\user\01_Kitting 上記を例えば¥D(USB等)でPowerShell(管理者)を立ち上げて実行できるようなバッチファイル?を作りたいと思っていました。 01_Kittingの中にはキッテッングをするメニューが01~09まであり、PowerShell(管理者)で01と入力してTabを打つと01のメニューが実行できるようになります。 こんな都合よいバッチファイル?が出来るかわかりませんが、何卒、ご助言をいただければ幸いです。 何卒よろしくお願い申し上げます。