Set-Location (Microsoft.PowerShell.Management)
Set-Location
- Модуль:
- Microsoft.PowerShell.Management
Устанавливает текущее рабочее местоположение в указанное место.
Синтаксис
Set-Location
[[-Path] <String>]
[-PassThru]
[<CommonParameters>]
Set-Location
-LiteralPath <String>
[-PassThru]
[<CommonParameters>]
Set-Location
[-PassThru]
[-StackName <String>]
[<CommonParameters>]
Описание
Командлет Set-Location
устанавливает рабочее местоположение в указанное место. Это место может быть каталогом, подкаталогом, местоположением реестра или любым путем поставщика.
В PowerShell 6.2 добавлена поддержка -
и +
в качестве значений параметра Path. PowerShell хранит историю последних 20 расположений, доступ к которым можно получить с помощью -
и +
. Этот список не зависит от стека местоположений, доступ к которому осуществляется с помощью параметра StackName.
Примеры
Пример 1: установка текущего местоположения
PS C:\> Set-Location -Path "HKLM:\"
PS HKLM:\>
Эта команда устанавливает текущее местоположение в корень диска HKLM:
.
Пример 2. Установите текущее местоположение и отобразите это местоположение.
PS C:\> Set-Location -Path "Env:\" -PassThru
Path
----
Env:\
PS Env:\>
Эта команда устанавливает текущее местоположение в корень диска Env:
. Он использует параметр PassThru, чтобы указать PowerShell вернуть объект PathInfo, который представляет местоположение Env:\
.
Пример 3. Установите местоположение в текущее местоположение на диске C:.
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
Первая команда устанавливает местоположение в корне диска HKLM:
в поставщике реестра. Вторая команда устанавливает текущее местоположение диска C:
в поставщике файловой системы. Если имя диска указано в форме <DriveName>:
(без обратной косой черты), командлет устанавливает в качестве текущего местоположения PSDrive. Чтобы получить текущее местоположение на PSDrive, используйте команду Get-Location -PSDrive
Пример 4. Установка текущего местоположения в именованный стек
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:\
Первая команда добавляет текущее местоположение в стек Paths. Вторая команда делает стек местоположений Paths текущим стеком местоположений. Третья команда отображает местоположения в текущем стеке местоположений.
Командлеты *-Location
используют текущий стек местоположений, если в команде не указан другой стек местоположений. Информацию о стеках местоположений см. в Примечаниях.
Пример 5. Навигация по истории местоположений с помощью `+` или `-`
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:\>
Использование псевдонима cd -
или cd +
— это простой способ навигации по истории местоположений, находясь в терминале. Дополнительную информацию о навигации с помощью -
/+
см. в параметре Path.
Параметры
-LiteralPath
Указывает путь к местоположению. Значение параметра LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности.
- Тип :
String
- Псевдонимы:
PSPath, LP
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-PassThru
Возвращает объект PathInfo, представляющий местоположение. По умолчанию этот командлет не генерирует никаких выходных данных.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Path
Укажите путь к новому рабочему месту. Если путь не указан, Set-Location
по умолчанию используется домашний каталог текущего пользователя. При использовании подстановочных знаков командлет выбирает контейнер (каталог, раздел реестра, хранилище сертификатов), соответствующий шаблону подстановочных знаков. Если шаблон подстановочного знака соответствует более чем одному контейнеру, командлет возвращает ошибку.
PowerShell хранит историю последних 20 установленных вами местоположений. Если значение параметра Path представляет собой символ -
, то новым рабочим местоположением будет предыдущее рабочее местоположение в истории (если оно существует). Аналогично, если значением является символ +
, то новое рабочее место будет следующим рабочим местом в истории (если оно существует). Это похоже на использование Pop-Location
и Push-Location
, за исключением того, что история представляет собой список, а не стек, и отслеживается неявно, а не контролируется вручную. Нет возможности просмотреть список истории.
- Тип :
String
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
True
-StackName
Указывает существующее имя стека расположений, которое этот командлет делает текущим стеком расположений. Введите имя стека местоположений. Чтобы указать безымянный стек местоположений по умолчанию, введите $null
или пустую строку (""
).
Использование этого параметра не меняет текущее местоположение. Он только изменяет стек, используемый командлетами *-Location
. Командлеты *-Location
действуют в текущем стеке, если вы не используете параметр StackName для указания другого стека. Дополнительные сведения о стеках местоположений см. в примечаниях.
- Тип :
String
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
Входы
Строка
В этот командлет можно передать строку, содержащую путь, но не буквальный путь.
Выходы
Нет
По умолчанию этот командлет не возвращает никаких результатов.
Информация о пути
При использовании параметра PassThru с Path или LiteralPath этот командлет возвращает объект PathInfo, представляющий новое местоположение.
PathInfoStack
При использовании параметра PassThru с StackName этот командлет возвращает объект PathInfoStack, представляющий новый контекст стека.
Примечания
PowerShell включает следующие псевдонимы для Set-Location
:
Все платформы:
cd
chdir
sl
PowerShell поддерживает несколько пространств выполнения для каждого процесса. Каждое пространство выполнения имеет свой собственный текущий каталог. Это не то же самое, что [System.Environment]::CurrentDirectory
. Такое поведение может быть проблемой при вызове API .NET или запуске собственных приложений без указания явных путей к каталогам.
Даже если командлеты местоположения установили текущий каталог всего процесса, вы не можете на него полагаться, поскольку другое пространство выполнения может изменить его в любой момент. Вам следует использовать командлеты расположения для выполнения операций на основе пути с использованием текущего рабочего каталога, специфичного для текущего пространства выполнения.
Командлет Set-Location
предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы просмотреть список поставщиков, доступных в вашем сеансе, введите Get-PSProvider
. Дополнительные сведения см. в разделе about_Providers.
Стек — это список «последним пришел — первым ушел», в котором доступен только последний добавленный элемент. Вы добавляете элементы в стек в том порядке, в котором вы их используете, а затем извлекаете их для использования в обратном порядке. PowerShell позволяет хранить местоположения поставщиков в стеках местоположений. PowerShell создает безымянный стек местоположений по умолчанию. Вы можете создать несколько именованных стеков местоположений. Если вы не укажете имя стека, PowerShell будет использовать текущий стек местоположений. По умолчанию безымянным местоположением по умолчанию является текущий стек местоположений, но вы можете использовать командлет Set-Location
, чтобы изменить текущий стек местоположений.
Для управления стеками местоположений используйте командлеты *-Location
следующим образом:
Чтобы добавить местоположение в стек местоположений, используйте командлет
Push-Location
.Чтобы получить местоположение из стека местоположений, используйте командлет
Pop-Location
.Чтобы отобразить местоположения в текущем стеке местоположений, используйте параметр Stack командлета
Get-Location
. Чтобы отобразить местоположения в именованном стеке местоположений, используйте параметр StackName вGet-Location
.Чтобы создать новый стек местоположений, используйте параметр StackName в
Push-Location
. Если вы укажете несуществующий стек,Push-Location
создаст стек.Чтобы сделать стек местоположений текущим стеком местоположений, используйте параметр StackName в
Set-Location
.
Безымянный стек местоположений по умолчанию полностью доступен только в том случае, если он является текущим стеком местоположений. Если вы сделаете именованный стек местоположений текущим стеком местоположений, вы больше не сможете использовать командлеты Push-Location
или Pop-Location
для добавления или получения элементов из стека по умолчанию или используйте командлет Get-Location
для отображения местоположений в безымянном стеке. Чтобы сделать безымянный стек текущим, используйте параметр StackName командлета Set-Location
со значением $null
или пустой строкой. (""
).