При перемещении по папкам в проводнике Windows обычно имеется конкретное рабочее местоположение, а именно: открытая в данный момент папка. Манипулировать элементами текущей папки можно, щелкая их. Если используется интерфейс командной строки (например Cmd.exe), то находясь в той же папке, что и определенный файл, можно получить к нему доступ, указав относительно короткое имя вместо полного пути к файлу. Текущий каталог называется рабочим каталогом.

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

Определение текущего местоположения (командлет Get-Location)

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

PS> Get-Location
Path
----
C:\Documents and Settings\PowerUser
Примечание.

Командлет Get-Location аналогичен команде pwd в оболочке BASH. Командлет Set-Location аналогичен команде cd в командной строке Windows (Cmd.exe).

Установка текущего местоположения (командлет Set-Location)

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

PS> Set-Location -Path C:\Windows

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

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

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

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

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

PS> Set-Location -Path .. -PassThru

Path

----

C:\

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

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

Path
----
HKLM:\SOFTWARE

После этого можно перейти в родительский каталог, который является корневым каталогом Windows PowerShell на диске HKLM:, используя относительный путь:

PS> Set-Location -Path .. -PassThru

Path
----
HKLM:\

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

cd -Path C:\Windows

chdir -Path .. -PassThru

sl -Path HKLM:\SOFTWARE -PassThru

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

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

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

 PS> Get-Location

Path
----
C:\Documents and Settings\PowerUser 
Примечание.

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

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

 PS> Push-Location -Path "Local Settings"

После этого можно добавить папку "Local Settings" в стек и перейти в папку "Temp", выполнив команду:

PS> Push-Location -Path Temp

Можно проверить, что каталог был изменен, выполнив команду Get-Location:

PS> Get-Location

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

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

PS> Pop-Location
PS> Get-Location

Path
----
C:\Documents and Settings\me\Local Settings

Как и в случае с командлетом Set-Location, можно использовать параметр -PassThru при вводе командлета Pop-Location для отображения каталога, в который был осуществлен переход:

PS> Pop-Location -PassThru

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

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

Set-Location \\FS01\Public

или

Push-Location \\FS01\Public

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

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

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

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




Содержание