HOWTO · PowerShell
在 PowerShell 中更改工作目錄
本文將展示如何正確更改 Windows PowerShell 中的工作目錄,以及它如何與舊的命令提示符語法區分開來。
本頁內容
使用 PowerShell 的 Set-Location Cmdlet 變更目前位置。它的 cd 和 chdir 別名也能使用,但在指令碼和範例中,完整的 Cmdlet 名稱更清楚。位置可以是目前磁碟機上的目錄,也可以是另一個磁碟機上的路徑。以下範例使用 $HOME,這是 PowerShell 定義的目前使用者主目錄。
使用 Set-Location 變更工作目錄
執行以下範例,將主目錄設為目前位置:
本節中的程式碼以及顯示的標籤或輸出仍為英文。
Set-Location -Path $HOME
Set-Location 會變更目前 PowerShell 工作階段的位置。-Path 用來指定目的地;對簡單路徑而言可以省略,但明確寫出來能讓命令用途更清楚。這個命令不會啟動新的 Shell,也不會變更其他執行中程式的位置。提供的 PowerShell 執行已成功完成,此範例沒有產生標準輸出。
切換磁碟機與目錄
在 PowerShell 中,可以用一個 Set-Location 命令切換到另一個磁碟機上的目錄。例如,當目前 PowerShell 環境中有 D: 磁碟機且目錄可用時,Set-Location -Path 'D:\Work' 會選取該路徑。磁碟機可以是 C: 之類的檔案系統磁碟機,也可以是 PowerShell 提供者公開的其他磁碟機;目的地必須存在且可存取。
命令提示字元處理磁碟機切換的方式不同。在作用中的磁碟機為 C: 時執行 cd D:\Work,會變更 D: 記住的目錄,但不會將 D: 設為作用中的磁碟機。在命令提示字元中,先輸入 D: 切換磁碟機,再用 cd \Work 變更目錄。這項差異只適用於命令提示字元;在 PowerShell 中,使用 Set-Location 搭配目的地路徑,就能一次切換磁碟機和目錄。這裡以文字說明命令提示字元的用法,因為本文的可執行範例是為 PowerShell 撰寫。
處理含空格的路徑
只要路徑中的任何目錄名稱含有空格,就要將路徑加上引號,讓 PowerShell 將整個路徑視為一個引數。表示字面路徑時,單引號和雙引號都適用。例如,可以使用 Set-Location -Path 'C:\Program Files' 或 Set-Location -Path "C:\Program Files"。若要讓路徑照原樣解讀,單引號很方便;雙引號則允許 PowerShell 在字串中展開變數。更多說明請參閱含空格路徑指南。請將範例路徑換成系統上實際存在的目錄。
使用 -PassThru 擷取新位置
一般而言,Set-Location 會變更工作階段的位置,但不會傳回位置物件。如果下一個命令需要該物件,例如要讀取它的 Path 屬性或將它存入變數,就加上 -PassThru。若要立即使用該物件,這樣就不必另外呼叫 Get-Location。
本節中的程式碼以及顯示的標籤或輸出仍為英文。
$newLocation = Set-Location -Path $HOME -PassThru
$newLocation.Path
/root
第二行會從傳回的位置物件讀取路徑。提供的 PowerShell 執行中,此範例印出了以下路徑。由於 $HOME 會依目前使用者和系統而異,你看到的路徑可能不同。-PassThru 是選用項目:若要單獨查看目前位置,請使用 Get-Location;只有在後續命令會用到傳回的物件時,才加上 -PassThru。
使用 Set-Location 的別名
PowerShell 將 cd 和 chdir 定義為 Set-Location 的別名;sl 也是另一個別名。在互動式操作時,簡短形式用起來很方便。其他人在閱讀指令碼時,通常更容易辨識完整的 Cmdlet 名稱,因此可將 sl 視為選用的簡寫,而非行為不同的另一個命令。這些形式都會變更目前的 PowerShell 位置,也都接受相同的目的地路徑,包括加上引號的含空格路徑。