Compartilhar via


Set-Location

Define o local de trabalho atual em um local especificado.

Syntax

Set-Location
   [[-Path] <String>]
   [-PassThru]
   [<CommonParameters>]
Set-Location
   -LiteralPath <String>
   [-PassThru]
   [<CommonParameters>]
Set-Location
   [-PassThru]
   [-StackName <String>]
   [<CommonParameters>]

Description

O Set-Location cmdlet define o local de trabalho como um local especificado. Esse local pode ser um diretório, um subdiretório, um local do Registro ou qualquer caminho de provedor.

O PowerShell 6.2 adicionou suporte para - e + como valores para o parâmetro Path . O PowerShell mantém um histórico dos últimos 20 locais que podem ser acessados com - e +. Essa lista é independente da pilha de localização acessada usando o parâmetro StackName .

Exemplos

Exemplo 1: Definir o local atual

PS C:\> Set-Location -Path "HKLM:\"
PS HKLM:\>

Esse comando define o local atual como a raiz da HKLM: unidade.

Exemplo 2: definir o local atual e exibir esse local

PS C:\> Set-Location -Path "Env:\" -PassThru

Path
----
Env:\

PS Env:\>

Esse comando define o local atual como a raiz da Env: unidade. Ele usa o parâmetro PassThru para direcionar o PowerShell a retornar um objeto PathInfo que representa o Env:\ local.

Exemplo 3: definir o local para o local atual na unidade C:

PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>

O primeiro comando define o local como a raiz da HKLM: unidade no provedor do Registro. O segundo comando define o local como o local atual da C: unidade no provedor FileSystem. Quando o nome da unidade é especificado no formulário <DriveName>: (sem barra invertida), o cmdlet define o local como o local atual no PSDrive. Para obter o local atual no comando PSDrive use Get-Location -PSDrive <DriveName> .

Exemplo 4: definir o local atual como uma pilha nomeada

PS C:\> Push-Location -Path 'C:\Program Files\PowerShell\' -StackName "Paths"
PS C:\Program Files\PowerShell\> Set-Location -StackName "Paths"
PS C:\Program Files\PowerShell\> Get-Location -Stack

Path
----
C:\

O primeiro comando adiciona o local atual à pilha Caminhos. O segundo comando torna a pilha de localização Caminhos a pilha de localização atual. O terceiro comando exibe os locais na pilha de localização atual.

Os *-Location cmdlets usam a pilha de localização atual, a menos que uma pilha de localização diferente seja especificada no comando . Para obter informações sobre pilhas de localização, consulte as Anotações.

Exemplo 5: Navegar no histórico de localização usando '+' ou '-'

PS C:\> Set-Location -Path $env:SystemRoot
PS C:\Windows> Set-Location -Path Cert:\
PS Cert:\> Set-Location -Path HKLM:\
PS HKLM:\>

# Navigate back through the history using "-"
PS HKLM:\> Set-Location -Path -
PS Cert:\> Set-Location -Path -
PS C:\Windows>

# Navigate using the Set-Location alias "cd" and the implicit positional Path parameter
PS C:\Windows> cd -
PS C:\> cd +
PS C:\Windows> cd +
PS Cert:\>

Usar o alias cd - ou cd + é uma maneira fácil de navegar pelo histórico de localização enquanto estiver no terminal. Para obter mais informações sobre como navegar com -/+, consulte o parâmetro Path .

Parâmetros

-LiteralPath

Especifica um caminho do local. O valor do parâmetro LiteralPath é usado exatamente como ele é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

Retorna um objeto PathInfo que representa o local. Por padrão, este cmdlet não gera saída.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Especifique o caminho de um novo local de trabalho. Se nenhum caminho for fornecido, Set-Location o padrão será o diretório base do usuário atual. Quando caracteres curinga são usados, o cmdlet escolhe o contêiner (diretório, chave do Registro, repositório de certificados) que corresponde ao padrão curinga. Se o padrão curinga corresponder a mais de um contêiner, o cmdlet retornará um erro.

O PowerShell mantém um histórico dos últimos 20 locais que você definiu. Se o valor do parâmetro Path for o - caractere, o novo local de trabalho será o local de trabalho anterior no histórico (se existir). Da mesma forma, se o valor for o + caractere, o novo local de trabalho será o próximo local de trabalho no histórico (se existir). Isso é semelhante ao uso Pop-Location de e Push-Location , exceto pelo fato de que o histórico é uma lista, não uma pilha e é controlado implicitamente, não controlado manualmente. Não há como exibir a lista de histórico.

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-StackName

Especifica um nome de pilha de localização existente que esse cmdlet faz da pilha de localização atual. Digite um nome de pilha de local. Para indicar a pilha de localização padrão sem nome, digite $null ou uma cadeia de caracteres vazia ("").

O uso desse parâmetro não altera o local atual. Ele só altera a pilha usada pelos *-Location cmdlets. Os *-Location cmdlets atuam na pilha atual, a menos que você use o parâmetro StackName para especificar uma pilha diferente. Para obter mais informações sobre pilhas de localização, consulte as Anotações.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

Entradas

String

Você pode redirecionar uma cadeia de caracteres que contém um caminho, mas não um caminho literal, para esse cmdlet.

Saídas

None, System.Management.Automation.PathInfo, System.Management.Automation.PathInfoStack

Esse cmdlet não gera nenhuma saída, a menos que você especifique o parâmetro PassThru . Usar PassThru com Path ou LiteralPath gera um objeto PathInfo que representa o novo local. Usar PassThru com StackName gera um objeto PathInfoStack que representa o novo contexto de pilha.

Observações

O PowerShell dá suporte a vários runspaces por processo. Cada runspace tem seu próprio diretório atual. Isso não é o mesmo que [System.Environment]::CurrentDirectory. Esse comportamento pode ser um problema ao chamar APIs do .NET ou executar aplicativos nativos sem fornecer caminhos de diretório explícitos.

Mesmo se os cmdlets de localização tiverem definido o diretório atual em todo o processo, você não poderá depender dele porque outro runspace pode alterá-lo a qualquer momento. Você deve usar os cmdlets de localização para executar operações baseadas em caminho usando o diretório de trabalho atual específico para o runspace atual.

O Set-Location cmdlet foi projetado para funcionar com os dados expostos por qualquer provedor. Para listar os provedores disponíveis em sua sessão, digite Get-PSProvider. Para obter mais informações, consulte about_Providers.

Uma pilha é uma lista de última entrada e primeira saída na qual apenas o item adicionado mais recentemente pode ser acessado. Você adiciona itens a uma pilha na ordem em que as usará e as recupera para uso na ordem inversa. O PowerShell permite armazenar locais de provedor em pilhas de localização. O PowerShell cria uma pilha de localização padrão sem nome. Você pode criar várias pilhas de localização nomeadas. Se você não especificar um nome de pilha, o PowerShell usará a pilha de localização atual. Por padrão, o local padrão sem nome é a pilha de localização atual, mas você pode usar o Set-Location cmdlet para alterar a pilha de localização atual.

Para gerenciar pilhas de localização, use os *-Location cmdlets da seguinte maneira:

  • Para adicionar um local a uma pilha de localização, use o Push-Location cmdlet .

  • Para obter um local de uma pilha de localização, use o Pop-Location cmdlet .

  • Para exibir os locais na pilha de localização atual, use o parâmetro Stack do Get-Location cmdlet . Para exibir os locais em uma pilha de localização nomeada, use o parâmetro StackName de Get-Location.

  • Para criar uma nova pilha de localização, use o parâmetro StackName de Push-Location. Se você especificar uma pilha que não existe, Push-Location criará a pilha.

  • Para tornar uma pilha de localização a pilha de localização atual, use o parâmetro StackName de Set-Location.

A pilha de locais padrão sem nome é totalmente acessível somente quando é a pilha de locais atual. Se você tornar uma pilha de localização nomeada a pilha de localização atual, não poderá mais usar os Push-Location cmdlets ou Pop-Location para adicionar ou obter itens da pilha padrão ou usar o Get-Location cmdlet para exibir os locais na pilha sem nome. Para tornar a pilha sem nome a pilha atual, use o parâmetro StackName do Set-Location cmdlet com um valor de ou uma cadeia de $null caracteres vazia ("").