プロジェクト

全般

プロフィール

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}


7ヶ月前に更新