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
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 deGet-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 (""
).