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"
フォルダ毎の使用容量を調べる¶
Get-Childitem -Path ./ -Directory | ForEach-Object -Process{Write-Host $_; Get-Childitem -Path $_ -Recurse | Measure-Object -property length -sum | Format-List count, sum}
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}