ふと思ってアレもしかして意外と纏められてない?と思ったので。
cmd/batchなら explorer パス や start パス ですが……さてコマンドレットで開くには?
PowerShell上のカレントディレクトリを開く
つべこべ言わず今のフォルダを開きたい。
そんな方はこれで。
Invoke-Item .
あるいはこれでも
Start-Process .
もっと短い方がいい?ではこれで。
ii .
あるいはcmd風にこれでも
start .
[IO.FileInfo[]]として渡すなら
パスオブジェクトを開く場合は、Invoke-Itemで起動します。
つまりこう。
$pathObject = [IO.FileInfo[]]"D:\"
Invoke-Item $pathObject
この時、Start-Processを使うとエラーが出るので注意!
$pathObject = [IO.FileInfo[]]"D:\"
Start-Process $pathObject
理由はまんまですね、Start-ProcessにはStringを渡す必要があるのです。
Start-Process : パラメーター 'FilePath' で必要とされる型 'System.String' に 'System.IO.FileInfo[]' を変換できません。指定されたメソッドはサポートされていません。
発生場所 行:1 文字:15
+ Start-Process $pathObject
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Start-Process]、ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.StartProcessCommand
[string[]]として渡すなら
では、文字列と渡した場合は、どうしましょう。
実は、Invoke-Itemは優秀で、パスオブジェクトではなく文字列でもいけちゃいます。
$pathString = "D:\"
Invoke-Item $pathString
そして先ほどのStart-Process、これもエクスプローラーを起動できます。
$pathString = "D:\"
Start-Process $pathString
まとめ
フォルダを開くなら、Invoke-Itemがベストですね。
お好きなやり方でどうぞ。
$pathObject = [IO.FileInfo[]]"D:\"
Invoke-Item $pathObject
ii $pathObject
$pathString = "D:\"
Invoke-Item $pathString
ii $pathString
Start-Process $pathString
Start $pathString
Invoke-Item .
ii .
Start-Process .
start .