當您在 Windows 檔案總管中瀏覽資料夾系統時,通常會有一個特定的工作位置,也就是目前開啟的資料夾。您可藉由按一下目前資料夾內的項目輕鬆操控項目。如果是 Cmd.exe 這類命令列介面,只要目前所在位置與特定檔案位於相同的資料夾,您就可指定相當短的名稱來存取該檔案,而不必指定檔案的完整路徑。目前目錄稱為工作目錄。

Windows PowerShell 使用名詞 Location 指稱工作目錄,並實作一系列 Cmdlet 用來檢查與操控位置。

取得目前位置 (Get-Location)

若要判斷目前目錄位置的路徑,請輸入 Get-Location 命令:

PS> Get-Location
Path
----
C:\Documents and Settings\PowerUser
附註:

Get-Location Cmdlet 類似於 BASH 殼層的 pwd 命令。Set-Location Cmdlet 類似於 Cmd.exe 的 cd 命令。

設定目前位置 (Set-Location)

Get-Location 命令可搭配 Set-Location 命令使用。Set-Location 命令用於指定目前目錄位置。

PS> Set-Location -Path C:\Windows

當您輸入此命令後,將發現沒有收到任何直接回應說明命令的成效如何。用於執行動作的 Windows PowerShell 命令大多只產生少量輸出甚或沒有輸出,因為輸出內容不一定都是有用的資訊。若要確認執行 Set-Location 命令後是否成功變更目錄,輸入 Set-Location 命令時請加上 -PassThru 參數:

PS> Set-Location -Path C:\Windows -PassThru
Path
----
C:\WINDOWS

Windows PowerShell 中的 Set 命令大多都可使用 -PassThru 參數,以便在沒有預設輸出的情況下傳回執行結果的相關資訊。

您可以指定相對於目前位置的路徑,就跟大部分 UNIX 和 Windows 命令殼層的做法一樣。依照相對路徑的標準標記法,句號 (.) 代表目前資料夾,兩個點 (..) 代表目前位置的上層目錄。

例如,假設您目前位於 C:\Windows 資料夾,句號 (.) 即代表 C:\Windows,兩個點 (..) 則代表 C:。輸入下列命令便可從目前位置切換到 C: 磁碟機的根目錄:

PS> Set-Location -Path .. -PassThru

Path

----

C:\

相同的技巧也適用於檔案系統磁碟機以外的 Windows PowerShell 磁碟機,例如 HKLM:。輸入下列命令便可將您的位置設定為登錄中的 HKLM\Software 機碼:

 PS> Set-Location -Path HKLM:\SOFTWARE -PassThru

Path
----
HKLM:\SOFTWARE

接著,您可以使用相對路徑將目錄位置切換到上層目錄,也就是 Windows PowerShell HKLM: 磁碟機的根目錄:

PS> Set-Location -Path .. -PassThru

Path
----
HKLM:\

除了輸入 Set-Location 外,也可使用 Set-Location 的任何 Windows PowerShell 內建別名 (cd、chdir、sl)。例如:

cd -Path C:\Windows

chdir -Path .. -PassThru

sl -Path HKLM:\SOFTWARE -PassThru

儲存與返回最近瀏覽的位置 (Push-Location 和 Pop-Location)

當您變更位置時,若能持續追蹤已瀏覽過的位置並可返回先前的位置必定有所幫助。Windows PowerShell 中的 Push-Location Cmdlet 會為您曾經瀏覽的目錄路徑建立已排序的歷程記錄 (堆疊),而您則可使用對應的 Pop-Location Cmdlet 返回歷程記錄中儲存的先前目錄路徑。

例如,Windows PowerShell 工作階段的起始位置通常是使用者的主目錄。

 PS> Get-Location

Path
----
C:\Documents and Settings\PowerUser 
附註:

「堆疊」(Stack) 一詞對許多程式開發設定來說具有特殊意義,包含 .NET Framework 在內。和實體項目堆疊一樣,置入堆疊的最後一個項目就是可從堆疊取出的第一個項目。將項目置入堆疊的動作俗稱為將項目「推入」(push) 堆疊。從堆疊取出項目的動作則俗稱為將項目「推出」(pop) 堆疊。

若要將目前位置推入堆疊,然後切換到 Local Settings 資料夾,請輸入:

 PS> Push-Location -Path "Local Settings"

接著,您可以輸入下列命令,將 Local Settings 位置推入堆疊再切換到 Temp 資料夾:

PS> Push-Location -Path Temp

輸入 Get-Location 命令便可確認已經切換目錄:

PS> Get-Location

Path
----
C:\Documents and Settings\PowerUser\Local Settings\Temp

再來,您可以輸入 Pop-Location 命令返回最近瀏覽的目錄,並輸入 Get-Location 命令確認變更成功:

PS> Pop-Location
PS> Get-Location

Path
----
C:\Documents and Settings\me\Local Settings

就跟使用 Set-Location Cmdlet 的情形一樣,使用 Pop-Location Cmdlet 時加上 -PassThru 參數也可以顯示您進入的目錄:

PS> Pop-Location -PassThru

Path
----
C:\Documents and Settings\PowerUser

位置 (Location) cmdlet 也能用在網路路徑上。例如,若要將您的位置切換到 FS01 這部伺服器上名稱為 Public 的共用,請輸入:

Set-Location \\FS01\Public

Push-Location \\FS01\Public

您可以使用 Push-LocationSet-Location 命令,將位置切換到任何可用的磁碟機。例如,假設您的 CD-ROM 光碟機內有資料光碟,且磁碟機代號為 D,您就可以輸入 Set-Location D: 命令將位置切換到這部光碟機。

如果光碟機是空的,將會出現下列錯誤訊息:

PS> Set-Location D:
Set-Location : Cannot find path 'D:\' because it does not exist.

當您正在使用命令列介面時,要利用 Windows 檔案總管檢查可用的實體磁碟機並不方便。此外,Windows 檔案總管無法顯示所有的 Windows PowerShell 磁碟機。Windows PowerShell 提供一組命令讓您操控 Windows PowerShell 磁碟機,請看下一節的介紹。




目錄