バージョン確認
$psversiontable
文字列検索:Select-String
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:対象ファイル
※ デフォルトで部分一致検索となる
カレントディレクトリ
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 2>&1
- 1 は標準出力を表す
- 2 はエラー出力を現す
エラー出力も標準出力にまとめて出力するという意味

コメント