При перемещении по папкам в проводнике 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. Об этом будет рассказано далее.