Поделиться через


Управление текущим расположением

При навигации по системам папок в проводнике обычно используется определенное рабочее расположение, а именно текущая открытая папка. Элементы в текущей папке можно легко управлять, щелкнув их. Для интерфейсов командной строки, таких как Cmd.exe, если вы находитесь в той же папке, что и конкретный файл, можно получить к нему доступ, указав относительно короткое имя, а не указывать весь путь к файлу. Текущий каталог называется рабочим каталогом.

PowerShell использует существительное расположение для ссылки на рабочий каталог и реализует семейство командлетов для изучения и управления расположением.

Получение текущего местоположения (Get-Location)

Чтобы определить путь к текущему расположению каталога, введите команду Get-Location:

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

Примечание.

Командлет Get-Location аналогичен командлету pwd в оболочке BASH. Командлет Set-Location аналогичен команде cd в Cmd.exe.

Настройка текущего расположения (Set-Location)

Команда Get-Location используется с командой Set-Location. Команда Set-Location позволяет указать текущее расположение каталога.

Set-Location -Path C:\Windows

После ввода команды обратите внимание, что вы не получаете прямых отзывов о влиянии команды. Большинство команд PowerShell, выполняющих действие, создают мало или нет выходных данных, так как выходные данные не всегда полезны. Чтобы убедиться, что при вводе команды Set-Location произошло успешное изменение каталога, включите параметр PassThru при вводе команды Set-Location:

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

Параметр PassThru можно использовать с множеством команд Set в PowerShell для возврата сведений о результатах в случаях, когда выходные данные по умолчанию отсутствуют.

Можно указать пути относительно текущего расположения так же, как и в большинстве командных оболочек Unix и Windows. В стандартной нотации для относительных путей точка (.) представляет текущую папку, а двойная точка (..) представляет родительский каталог текущего каталога.

Например, если вы находитесь в папке C:\Windows, точка (.) представляет C:\Windows, а двойная точка (..) представляет C:. Вы можете изменить текущее расположение на корень диска C:, напечатав следующее:

Set-Location -Path .. -PassThru
Path
----
C:\

Тот же метод работает на дисках PowerShell, которые не являются дисками файловой системы, такими как HKLM:. Вы можете задать расположение для ключа HKLM\Software в реестре, введя следующее:

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

Затем можно изменить расположение каталога на родительский каталог, используя относительный путь:

Set-Location -Path .. -PassThru
Path
----
HKLM:\

Вы можете ввести Set-Location или использовать любой из встроенных псевдонимов PowerShell для Set-Location (cd, chdir, sl). Рассмотрим пример.

cd -Path C:\Windows
chdir -Path .. -PassThru
sl -Path HKLM:\SOFTWARE -PassThru

Сохранение и воспроизведение последних местоположений (Push-Location и Pop-Location)

При изменении местоположений полезно следить за тем, где вы были, и иметь возможность вернуться в предыдущее местоположение. Командлет Push-Location в PowerShell создает упорядоченный журнал (стек) путей к каталогу, в которых вы находились, и вы можете выполнить переход к журналу путей к каталогу с помощью командлета Pop-Location.

Например, PowerShell обычно запускается в домашнем каталоге пользователя.

Get-Location

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

Примечание.

Слово стек имеет особое значение во многих контекстах программирования, включая .NET Framework. Как и физический стек элементов, последний элемент, который вы помещаете в стек, является первым элементом, который можно извлечь из стека. Добавление элемента в стек разговорно называется "записью" элемента в стек. Извлечение элемента из стека в разговорной речи называется "выталкиванием" элемента из стека.

Чтобы отправить текущее расположение в стек, а затем перейдите в папку "Локальные параметры", введите:

Push-Location -Path "Local Settings"

Затем можно поместить расположение локальных параметров в стек данных и перейти в папку Temp, введя следующее:

Push-Location -Path Temp

Чтобы убедиться, что вы изменили каталоги, введите команду Get-Location:

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

Затем вы можете вернуться в последний посещаемый каталог, введя команду Pop-Location, и проверить изменение, введя команду Get-Location:

Pop-Location
Get-Location
Path
----
C:\Documents and Settings\me\Local Settings

Как и в командлете Set-Location, можно включить параметр PassThru при вводе командлета Pop-Location для отображения введенного каталога:

Pop-Location -PassThru
Path
----
C:\Documents and Settings\PowerUser

Можно также использовать командлеты Location с сетевыми путями. Если у вас есть сервер с именем FS01 и общей папкой Public, вы можете изменить расположение, введя команду.

Set-Location \\FS01\Public

или

Push-Location \\FS01\Public

Команды Push-Location и Set-Location можно использовать для изменения расположения на любой доступный диск. Например, если у вас есть локальный диск CD-ROM с буквой диска D, содержащий диск с данными, вы можете перейти к CD-дисководу, введя команду Set-Location D:.

Если диск пуст, вы получите следующее сообщение об ошибке:

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

При использовании интерфейса командной строки не удобно использовать проводник для проверки доступных физических дисков. Кроме того, в проводнике файлов не отображаются все диски PowerShell. PowerShell предоставляет набор команд для управления дисками PowerShell.