Set-Location
Присваивает текущему рабочему расположению указанное значение.
Синтаксис
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:
диска в поставщике FileSystem.
Если имя диска указано в форме <DriveName>:
(без обратной косой черты), командлет задает текущее расположение в PSDrive.
Чтобы получить текущее расположение в PSDrive, используйте Get-Location -PSDrive <DriveName>
команду .
Пример 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:\
Первая команда добавляет текущее расположение в стек Путей. Вторая команда делает стек расположения Пути текущим стеком расположений. Третья команда отображает расположения в текущем стеке расположений.
Командлеты *-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-последовательности.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-PassThru
Возвращает объект PathInfo , представляющий расположение. По умолчанию этот командлет не создает выходные данные.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Укажите путь к новому рабочему расположению. Если путь не указан, Set-Location
по умолчанию используется домашний каталог текущего пользователя. При использовании подстановочных знаков командлет выбирает контейнер (каталог, раздел реестра, хранилище сертификатов), соответствующий шаблону подстановочных знаков. Если шаблон с подстановочными знаками соответствует нескольким контейнерам, командлет возвращает ошибку.
PowerShell хранит журнал последних 20 заданных расположений. Если значение параметра Path является символом -
, то новое рабочее расположение будет предыдущим рабочим расположением в журнале (если оно существует). Аналогичным образом, если значением является +
символ, новое рабочее расположение будет следующим рабочим расположением в журнале (если оно существует). Это похоже на использование Pop-Location
и Push-Location
за исключением того, что журнал является списком, а не стеком и неявно отслеживается, а не управляется вручную. Просмотреть список журнала невозможно.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-StackName
Указывает существующее имя стека расположений, которое этот командлет делает текущим стеком расположений. Введите имя стека папок. Чтобы указать неименованный стек расположения по умолчанию, введите $null
или пустую строку (""
).
Использование этого параметра не изменяет текущее расположение. Он изменяет только стек, используемый *-Location
командлетами. Командлеты *-Location
действуют с текущим стеком, если для указания другого стека не используется параметр StackName . Дополнительные сведения о стеках расположений см. в примечаниях.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Входные данные
Вы можете передать строку, содержащую путь, но не литеральный путь, в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
При использовании параметра PassThru с Path или LiteralPath этот командлет возвращает объект PathInfo , представляющий новое расположение.
При использовании параметра 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
со значением или пустой строкой (""
).