PowerShell備忘録(コマンド編)

バージョン確認

$psversiontable

文字列検索:Select-String(findstr)

grep的なもの。主なオプション引数は以下。

  • -Path:ファイルのパスを指定する。 省略可能
  • -Pattern:検索するテキストを文字列または正規表現で指定する
  • -NotMatch:指定したパターンに一致しないファイルを検索する
  • -CaseSensitive:大文字と小文字を区別しない。省略時は区別される。/iでもOK。
Select-String C:\Work\*.* -Pattern "abc"
#Work配下から、 abcという文字列を含ファイル検索

ただし、検索対象にファイルではなくフォルダが存在する場合エラーが起きる可能性があるので、汎用的には以下が実用的。

Get-ChildItem "[フォルダパス]" -Recurse -File | Select-String -Pattern "[SearchText]" -List

Windows従来のfindstrでも可。

findstr /S /I test *.txt 文字列
  • /S:再帰検索(サブディレクトリも対象)
  • /I:大文字・小文字を区別しない
  • test:検索文字列
  • *.txt:対象ファイル

※ デフォルトで部分一致検索となる

ファイルパスだけ抽出したい場合は末尾に以下を追加する。

| ForEach-Object {$_.Path}

特定の文字列を2つ、検索対象から除外したい場合

標準出力に表示されるいらない警告ログをいったん除外したい際などに使用する。

findstr /V "除外文字列1" | findstr /V "除外文字列2"
warning 'xxx' is defined but never used
Irregular whitespace not allowed

文字列が見切れる場合

-ExpandProperty オプションを使用する。

例えば以下は指定文字列を持つファイルのパスを再帰検索するコマンド。

Get-ChildItem -Recurse -Filter "*file_name*" | Select-Object -ExpandProperty FullName

カレントディレクトリ

Get-Location
pwd

コンソールクリア

文字がたまってきて履歴をリセットしたいときに。

cls

パイプライン構文

LinuxやTypescript系言語でもおなじみのパイプライン構文が使える。

(コマンド1) | (コマンド2)
ipconfig | Select-String -Pattern "IPv4"  #ipconfigからIPv4の情報のみ表示
Write-Output @(2,4,6,8,10,12) | Select-String 2 #2と12のみが出力される

入力中の文字列クリア

Esc

アプリケーションの実行

フルパスでeclipseをオプション付きで起動する例

& "c:\xxx\eclipse.exe" -clean -debug -consoleLog

インシデント

スクリプト実行時エラー:用語が認識されない

用語'●●'は、コマンドレット、関数、スクリプトファイル、または操作可能なブログラムの名前として認識されません

ファイル実行する際、パワーシェルでは、冒頭に「.\」を付ける必要がある。

Select-String を実行しようとしたらエラー

Select-String .\* -Pattern "SearchText"

ファイル xxx を読み取れませんでした:パス ‘xxx’ へのアクセスが拒否されました。

特定のパス配下を再帰的に検索する場合、フォルダに対しても Select-String を実行してしまいエラーとなる。

対象をファイルだけに限定して実行する。

Get-ChildItem "[フォルダパス]" -Recurse -File | Select-String -Pattern "[SearchText]" -List

全文を表示したい

ファイルの中身が長いと、一定の長さで『:』が表示され、以降は表示されない。

もちろんEnterを押して、続きの文字を見ることはできるのだが、全文を見たいときは不便。

そんなときはOut-Hostを追加する。

処理内容 | Out-Host

出力がテーブル形式やリスト形式なら、Format-Tableを使用する。

処理内容 | Format-Table -AutoSize

文字化けする

PowerShellのバージョンによってはUTF8に対応しておらず、日本語が以下のように文字化けする。

<E7><92><B0><E5><A2><83><E8><A8><AD><E5><AE><9A>

バージョン5以前はUTF-8非対応。バージョン7以上をインストールする。※コマンドラインでのアップグレードはできないので、公式サイトからDLする。

もしくは、Git Bashを使用する。

コマンド実行時の標準出力をログファイルに記載

npm run build > sample.log

sample.logというファイルに標準出力が記載される

エラーログも出力したい

npm run build > sample.log 2>&1
  • 1 は標準出力を表す
  • 2 はエラー出力を現す

エラー出力も標準出力にまとめて出力するという意味

文字化け対応

npm run build | Out-File -Encoding utf8 sample.log

パワーシェルで文字化けする場合には文字コードを指定する。

上記は組み合わせることができない。

文字化けせずにエラーも標準出力したい場合には Git Bash を使用する。

Git Bash はデフォルトが UTF-8 なので文字化けしない。

コメント

タイトルとURLをコピーしました