ふと思ってアレもしかして意外とまとめられてない? と思ったので。 cmd/batchならexplorerパスやstartパスですが……さてコマンドレットで開くには?
PowerShell上のカレントディレクトリを開く
つべこべ言わず今のフォルダを開きたい。 そんな方はこれで。
Invoke-Item .
あるいはこれでも
Start-Process .
もっと短い方がいいならこれ。
ii .
あるいはcmd風にこれでも。
start .
[I/O.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 .