PowerShellコマンド環境¶
プログラムの実行¶
空白を含むパスのプログラムを実行¶
PowerShellコマンド環境では、空白を含むパスのプログラム(スクリプト)を実行しようとすると次のようにエラーとなります。
PS C:\> C:\Program Files\Java\jdk1.8.0\bin\jconsole.exe C:\Program : 用語 'C:\Program' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認 識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試 行してください。 発生場所 行:1 文字:1 + C:\Program Files\Java\jdk1.8.0\bin\jconsole.exe + ~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Program:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
空白の前がコマンド、空白の後ろがコマンドオプションとして扱われてしまいます。
そこで、ダブルクォートで囲ってみると、文字列として評価されてしまいます。
PS C:\> "C:\Program Files\Java\jdk1.8.0\bin\jconsole.exe" C:\Program Files\Java\jdk1.8.0\bin\jconsole.exe
プログラムとして実行するには、&記号を文字列の前に付けます。
PS C:\> & "C:\Program Files\Java\jdk1.8.0\bin\jconsole.exe"
ワンライナー集¶
ファイルを再帰的に読んでパターンマッチング(find | grep)¶
UNIXでのfind | grepと同等の処理を実施するには、
PS C:\work> ls -r *.cpp *.h | Select-String "iostream"
UUID(GUID)生成¶
[Guid]::NewGuid()
コマンドの実行時間を測る¶
PS C:\work> Measure-Command {echo 1} Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 1 Ticks : 17571 TotalDays : 2.03368055555556E-08 TotalHours : 4.88083333333333E-07 TotalMinutes : 2.9285E-05 TotalSeconds : 0.0017571 TotalMilliseconds : 1.7571
結果を秒だけの1行にしたい場合、(Measure-Command {echo 1}).TotalSeconds
Windowsプログラム(コマンド環境から実行時、別プロセスで起動してコマンド環境はすぐに復帰)を計測する場合、 Measure-Command {Start-Process notepad -Wait}