Quando navega em sistemas de pastas no Windows Explorer, normalmente você tem um local de trabalho específico – isto é, a pasta aberta no momento. Os itens da pasta atual podem ser manipulados com facilidade, basta clicar neles. Para as interfaces de linha de comando como o Cmd.exe, quando você está na mesma pasta de um arquivo específico, pode acessá-lo especificando um nome relativamente curto, em vez de especificar todo o caminho até ele. O diretório atual é chamado de diretório de trabalho.

O Windows PowerShell utiliza o termo Location para se referir ao diretório de trabalho e implementa uma família de cmdlets para examinar e manipular seu local.

Obtendo o local atual (Get-Location)

Para determinar o caminho do diretório atual, digite o comando Get-Location:

PS> Get-Location
Path
----
C:\Documents and Settings\PowerUser
Observação:

O cmdlet Get-Location é similar ao comando pwd do shell do BASH. O cmdlet Set-Location é similar ao comando cd do Cmd.exe.

Definindo o local atual (Set-Location)

O comando Get-Location é usado com o comando Set-Location. O comando Set-Location permite que você especifique o local do diretório atual.

PS> Set-Location -Path C:\Windows

Depois de inserir o comando, você observará que não recebe qualquer resposta direta sobre o seu efeito. A maioria dos comandos do Windows PowerShell que executam uma ação produz pouca ou nenhuma saída porque ela nem sempre é útil. Para verificar se o diretório foi alterado com êxito após a inserção do comando Set-Location, inclua o parâmetro -PassThru ao digitar o comando Set-Location:

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

O parâmetro -PassThru pode ser usado com vários comandos Set no Windows PowerShell para retornar informações sobre o resultado nos casos em que não haja uma saída padrão.

Você pode especificar caminhos relativos para o seu local atual, da mesma forma como o faria na maioria dos shells de comando do UNIX e do Windows. Na notação padrão de caminhos relativos, um ponto (.) representa a pasta atual e dois pontos (..) representam o diretório pai do local atual.

Por exemplo, se você estiver na pasta C:\Windows, um ponto (.) representa C:\Windows e dois pontos (..) representam C:. Você pode alterar o local atual para a raiz da unidade C: digitando:

PS> Set-Location -Path .. -PassThru

Path

----

C:\

A mesma técnica funciona nas unidades do Windows PowerShell que não são unidades de sistema de arquivos, como HKLM:. Você pode definir seu local para a chave HKLM\Software do Registro digitando:

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

Path
----
HKLM:\SOFTWARE

Em seguida, você pode alterar o local do diretório para o diretório pai, que é a raiz da unidade HKLM: do Windows PowerShell, usando um caminho relativo:

PS> Set-Location -Path .. -PassThru

Path
----
HKLM:\

Você pode digitar Set-Location ou usar qualquer um dos aliases internos do Windows PowerShell referentes a Set-Location (cd, chdir, sl). Por exemplo:

cd -Path C:\Windows

chdir -Path .. -PassThru

sl -Path HKLM:\SOFTWARE -PassThru

Salvando e recuperando locais recentes (Push-Location e Pop-Location)

Quando estiver alterando locais, será muito útil manter um registro do local onde você estava e ser capaz de retornar a ele. O cmdlet Push-Location do Windows PowerShell cria um histórico ordenado (uma "pilha") dos caminhos de diretórios que você acessou. É possível percorrer esse histórico usando o cmdlet complementar Pop-Location.

Por exemplo, o Windows PowerShell geralmente começa no diretório base do usuário.

 PS> Get-Location

Path
----
C:\Documents and Settings\PowerUser 
Observação:

A palavra pilha tem um significado especial em muitas configurações de programação, inclusive no .NET Framework. Como uma pilha física de itens, o último item colocado na pilha será o primeiro item a ser retirado dela. A inclusão de um item na pilha é coloquialmente conhecido como "pushing". A exclusão de um item da pilha é coloquialmente conhecido como "popping".

Para incluir o local atual na pilha e então mudar para a pasta Local Settings, digite:

 PS> Push-Location -Path "Local Settings"

Você pode então incluir o local Local Settings na pilha e mudar para a pasta Temp ao digitar:

PS> Push-Location -Path Temp

Você pode verificar se mudou de diretório digitando o comando Get-Location:

PS> Get-Location

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

Em seguida, você poderá voltar ao diretório visitado por último digitando o comando Pop-Location e verificar a alteração digitando o comando Get-Location:

PS> Pop-Location
PS> Get-Location

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

Assim como faz com o cmdlet Set-Location, você pode incluir o parâmetro -PassThru quando digitar o cmdlet Pop-Location para exibir o diretório acessado:

PS> Pop-Location -PassThru

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

Os cmdlets Location também podem ser usados com caminhos de rede. Caso você tenha um servidor chamado FS01 com um compartilhamento chamado Public, pode alterar seu local digitando

Set-Location \\FS01\Public

ou

Push-Location \\FS01\Public

Você pode usar os comandos Push-Location e Set-Location para alterar o local para qualquer unidade disponível. Por exemplo, se você tiver uma unidade de CD-ROM local com a letra de unidade D que contenha um CD de dados, poderá alterar o local para a unidade de CD digitando o comando Set-Location D:.

Se a unidade estiver vazia, você obterá a seguinte mensagem de erro:

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

Quando você está utilizando uma interface de linha de comando, não é conveniente usar o Windows Explorer para examinar as unidades físicas disponíveis. Além disso, o Windows Explorer não mostrará todas as unidades do Windows PowerShell. O Windows PowerShell oferece um conjunto de comandos para a manipulação das suas unidades. Falaremos sobre esses comandos a seguir.




Sumário