Windows powershell перейти в папку

Обновлено: 05.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

или диспетчер конфигурации служб

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

Работа с файлами и папками. Получение списка файлов и папок, содержащихся в папке.

Извлечь все элементы непосредственно из папки можно с помощью командлета Get-ChildItem . Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает непосредственное содержимое диска C Windows PowerShell (которое совпадает с содержимым физического диска C Windows):

Эта команда выводит только элементы, содержащиеся на диске непосредственно, так же как и команда DIR оболочки Cmd.exe или команда ls оболочки UNIX. Для показа вложенных элементов необходимо также указать параметр -Recurse . (Время выполнения этой операции будет очень велико.) Для вывода всего содержимого диска C введите:

Командлет Get-ChildItem позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Сложную фильтрацию на основе других свойств элементов можно выполнить с помощью Where-Object .

Следующая команда находит все исполняемые файлы в папке Program Files, которые были в последний раз изменены после 1 октября 2005 г. и размер которых не менее одного мегабайта и не более десяти мегабайт:

Копирование файлов и папок

Копирование выполняется с помощью командлета Copy-Item . Следующая команда создает резервную копию C:\boot.ini в C:\boot.bak:

Если целевой файл уже существует, то попытка копирования завершается неудачей. Чтобы перезаписать имеющийся целевой файл, используйте параметр Force.

Эта команда работает, даже если целевой объект доступен только для чтения.

Так же выполняется и копирование папок. Эта команда копирует папку C:\temp\test1 в новую папку C:\temp\DeleteMe рекурсивно.

Можно также скопировать избранные элементы. Следующая команда копирует все файлы TXT, содержащиеся в папке C:\data , в папку C:\temp\text :

Для копирования элементов файловой системы можно использовать и другие средства. В Windows PowerShell по-прежнему работают команды XCOPY, ROBOCOPY и такие COM-объекты, как Scripting.FileSystemObject. Например, можно воспользоваться COM-классом Scripting.FileSystem сервера сценариев Windows для создания резервной копии файла C:\boot.ini в файле C:\boot.bak :

Создание файлов и папок

Создание новых элементов осуществляется одинаковым образом всеми поставщиками Windows PowerShell. Если поставщик Windows PowerShell поддерживает более одного типа элементов (например, поставщик Windows PowerShell FileSystem различает каталоги и файлы), необходимо указать тип элемента.

Эта команда создает папку C:\temp\New Folder :

Эта команда создает пустой файл C:\temp\New Folder\file.txt .

При использовании параметра Force с командой New-Item для создания папки, которая уже существует, она не перезапишет и не заменит папку. Будет просто возвращен имеющийся объект папки. Однако, если использовать New-Item -Force в уже имеющимся файле, файл будет полностью перезаписан.

Удаление всех файлов и папок, содержащихся в папке

Удалить вложенные элементы можно с помощью командлета Remove-Item , однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. Например, при попытке удаления папки C:\temp\DeleteMe , которая содержит другие элементы, Windows PowerShell предварительно предложит подтвердить удаление этой папки:

Если подтверждение для каждого вложенного элемента нежелательно, задайте параметр Recurse:

Подключение локальной папки как диска

Отобразить локальную папку можно с помощью команды New-PSDrive . Следующая команда создает локальный диск P: , корневым каталогом которого является локальный каталог Program Files, отображающийся только в сеансе PowerShell:

Как и при использовании сетевых дисков, диски, отображенные в Windows PowerShell, немедленно становятся доступными оболочке Windows PowerShell. Чтобы создать подключенный диск, отображающийся в проводнике, нужен параметр -Persist . Но с этим параметром можно использовать только удаленные пути.

Чтение текстового файла в массив

Одним из наиболее общих форматов хранения текстовых данных является файл, отдельные строки которого рассматриваются как отдельные элементы. Командлет Get-Content используется для чтения всего файла за один шаг, как показано далее:

Командлет Get-Content сразу рассматривает данные, считанные из файла, как массив с одним элементом на строку содержимого файла. Убедиться в этом можно, проверив свойство Length полученного содержимого:

Эта команда наиболее полезна для непосредственного ввода в Windows PowerShell информационных списков. Например, можно хранить в файле C:\temp\domainMembers.txt список имен компьютеров или IP-адресов по одному имени на каждую строку файла. Вы можете использовать командлет Get-Content , чтобы извлечь содержимое файла и поместить его в переменную $Computers :

Теперь переменная $Computers представляет собой массив, содержащий в каждом элементе имя компьютера.

Работа с файлами, папками и разделами реестра

Перечисление файлов, папок и разделов реестра (Get-ChildItem)

Так как получение коллекции элементов из определенного расположения является обычной задачей, командлет Get-ChildItem разработан специально для возврата всех элементов, найденных в контейнере, например в папке.

Если необходимо вернуть все файлы и папки, которые находятся непосредственно в папке C:\Windows, введите:

Списки выглядят аналогично тем спискам, которые появляются при вводе команды dir в Cmd.exe или команды ls в командной оболочке UNIX.

С помощью параметров командлета Get-ChildItem можно создавать очень сложные списки. Далее рассмотрим несколько сценариев. Синтаксис командлета Get-ChildItem можно увидеть, введя:

Эти параметры можно скомбинировать и сопоставить для получения настраиваемых выходных данных.

Перечисление всех элементов в контейнере (-Recurse)

Чтобы увидеть оба элемента в папке Windows и все элементы во вложенных папках, используйте параметр Recurse для Get-ChildItem. В списке отображается все, что находится в папке Windows, а также элементы в ее вложенных папках. Пример:

Фильтрация элементов по имени (-Name)

Чтобы отобразить только имена элементов, используйте параметр Name для Get-Childitem:

Принудительное перечисление скрытых элементов (-Force)

В выходных данных команды Get-ChildItem не отображаются элементы, которые обычно невидимы в проводнике или Cmd.exe. Чтобы показать скрытые элементы, используйте параметр Force для Get-ChildItem. Пример:

Этот параметр называется Force, так как позволяет принудительно переопределить обычное поведение команды Get-ChildItem. Параметр Force широко используется для принудительного выполнения действия командлетом. Тем не менее, он не будет выполнять действия, компрометирующие систему безопасности.

Сопоставление имен элементов с подстановочными знаками

Команда Get-ChildItem допускает подстановочные знаки в пути к перечисляемым элементам.

Так как сопоставление с подстановочными знаками обрабатывается подсистемой Windows PowerShell, все командлеты, которые принимают подстановочные знаки, используют одну нотацию и имеют одно поведение сопоставления. В нотацию подстановочных знаков Windows PowerShell входит:

  • Звездочка (*) — соответствует нулю или большему количеству вхождений любого символа.
  • знак вопроса (?) — соответствует ровно одному символу;
  • Открывающая квадратная скобка ([) и закрывающая квадратная скобка (]) — заключают в себя набор символов для сопоставления.

Далее приводится несколько примеров работы спецификации из подстановочных знаков.

Чтобы найти в каталоге Windows все файлы, имеющие суффикс .log и ровно пять символов в основном имени, введите следующую команду:

Чтобы найти в каталоге Windows все файлы с именами, начинающимися на букву x, введите:

Чтобы найти все файлы с именами, начинающимися на x или z, введите:

Исключение элементов (-Exclude)

Вы можете исключить определенные элементы с помощью параметра Exclude для Get-ChildItem. Это позволит вам выполнить сложную фильтрацию в одном операторе.

Смешение параметров Get-ChildItem

В одной команде можно использовать несколько параметров Get-ChildItem. Перед тем как комбинировать параметры, убедитесь, что понимаете принципы сопоставления подстановочных знаков. Например, следующая команда не возвращает результатов:

Результаты отсутствуют, даже если существуют две библиотеки, которые начинаются на букву z в папке Windows.

Результаты не возвращены, так как подстановочный знак указан как часть пути. Хотя команда и была рекурсивной, командлет Get-ChildItem ограничил элементы до тех, которые находятся в папке Windows с именами, заканчивающимися на .dll.

Чтобы указать рекурсивный поиск для файлов, имена которых соответствуют специальному шаблону, используйте параметр -Include.

Работа с записями реестра. Создание списков записей реестра.

Существует несколько способов просмотра реестра. Самый простой — получить имена свойств, связанные с разделом. Например, чтобы просмотреть имена записей в разделе реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion , используйте Get-Item . Разделы реестра содержат свойство с универсальным именем Property, которое является списком записей реестра в разделе. Следующая команда выбирает свойство Property и расширяет элементы так, чтобы они отображались в списке:

Чтобы просмотреть записи реестра в более удобочитаемой форме, используйте Get-ItemProperty .

Все свойства Windows PowerShell раздела имеют префиксы PS, например PSPath, PSParentPath, PSChildName и PSProvider.

Для создания ссылки на текущее расположение можно использовать нотацию *.* . Set-Location можно использовать для изменения значения на контейнер реестра CurrentVersion.

Кроме того, можно использовать встроенный диск HKLM PSDrive с Set-Location .

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

Расширение пути работает так же, как и в файловой системе, поэтому в этом расположении можно получить перечисление ItemProperty для HKLM:\SOFTWARE\Microsoft\Windows\Help с помощью Get-ItemProperty -Path ..\Help .

Получение одной записи реестра

Если необходимо получить конкретную запись в разделе реестра, можно использовать один из нескольких возможных подходов. Этот пример получает значение DevicePath в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion .

Вместе с Get-ItemProperty используйте параметр Path, чтобы указать имя раздела и параметр Name, а также имя записи DevicePath.

Эта команда возвращает стандартные свойства Windows PowerShell, а также свойство DevicePath.

Хотя Get-ItemProperty содержит параметры Filter, Include и Exclude, их нельзя использовать для фильтрации по имени свойства. Эти параметры относятся к разделам реестра (путям элементов), а не записям реестра. Записи реестра — это свойства элементов.

Другой вариант — использовать средство командной строки Reg.exe. Для получения справки по reg.exe введите reg.exe /? в командной строке. Чтобы найти запись DevicePath, используйте reg.exe, как показано в следующей команде:

Настройка одной записи реестра

Если необходимо изменить определенную запись в разделе реестра, можно использовать один из нескольких подходов. Этот пример изменяет запись Path в разделе HKEY_CURRENT_USER\Environment . Запись Path указывает расположение для поиска исполняемых файлов.

  1. Получите текущее значение записи Path с помощью Get-ItemProperty .
  2. Добавьте новое значение, отделив его с помощью ; .
  3. Используйте Set-ItemProperty с указанным разделом, именем записи и значением, чтобы изменить запись реестра.

Хотя Set-ItemProperty содержит параметры Filter, Include и Exclude, их нельзя использовать для фильтрации по имени свойства. Эти параметры относятся в разделам реестра (путям элементов), а не к записям реестра (свойствам элементов).

Другой вариант — использовать средство командной строки Reg.exe. Для получения справки по reg.exe введите reg.exe /? . в командной строке.

В следующем примере запись Path изменяется за счет удаления пути, добавленного в предыдущем примере. Get-ItemProperty по-прежнему используется для получения текущего значения, исключая анализ строки, возвращаемой reg query . Методы SubString и LastIndexOf используются для получения последнего добавленного пути в запись Path.

Создание новых записей реестра

Чтобы добавить новую запись реестра с именем PowerShellPath в раздел CurrentVersion, используйте New-ItemProperty с путем к разделу, именем записи и значением записи. В этом примере используется значение переменной Windows PowerShell $PSHome , в которой хранится путь к каталогу установки Windows PowerShell.

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

Значение PropertyType должно быть именем элемента перечисления Microsoft.Win32.RegistryValueKind из следующей таблицы:

ТАБЛИЦА 1
Значение PropertyType Значение
Двоичные данные Двоичные данные
DWord Число, которое является допустимым UInt32
ExpandString Строка, которая может содержать динамически раскрывающиеся переменные среды
MultiString Многострочная строка
String Любое строковое значение
QWord 8 байтов двоичных данных

Запись реестра можно добавить в несколько расположений, указав массив значений для параметра Path:

Кроме того, можно перезаписать существующее значение записи реестра, добавив параметр Force в любую команду New-ItemProperty .

Переименование записей реестра

Чтобы переименовать запись PowerShellPath в PSHome, используйте Rename-ItemProperty .

Чтобы отобразить переименованное значение, добавьте параметр PassThru в команду.

Удаление записей реестра

Чтобы удалить записи реестра PSHome и PowerShellPath, используйте Remove-ItemProperty .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Открываем Windows PowerShell и вводим следующую команду: cd desktop

Эта команда говорит компьютеру: перейди в каталог (в папку) desktop. То есть в «Рабочий стол» (по-русски).

Чтобы убедиться, что мы находимся в папке «Рабочий стол», нам надо ввести уже известную нам команду pwd :

Результат ввода этой команды:

Теперь вводим команду mkdir 1 . Эта команда говорит компьютеру: создай в текущем каталоге папку (каталог) с именем 1.

Результат будет такой:

Mode LastWriteTime Length Name
d---- 12.03.2019 12:23 1


PS С:\Users\Boris1985\desktop> _

То есть компьютер создал в папке desktop новую папку 1 и сообщил об этом нам.

Чтобы убедиться, что так все и произошло, сверните все окна и посмотрите на рабочем столе – появилась папка 1 или нет. Должна появиться!

Теперь давайте создадим несколько вложенных одна в другую папок.

Посмотрите на Рабочем столе внутри папки 1 – есть ли в ней вложенные папки 2, 3 и 4?

Теперь давайте перейдем сразу в 4-ю папку.

Проверьте с помощью команды pwd , где вы находитесь.

А теперь перейдем на один уровень вверх. Для этого введем команду cd..

И опять проверьте каталог, где вы сейчас находитесь – командой pwd . Вы сейчас должны находиться папке 3. Точно также пройдите выше по папкам - до папки desktop. Для этого вводим:

Домашнее задание

  • напечатайте в Windows PowerShell по 10 раз команды: cd, pwd, cd.. и mkdir
  • проверьте - появились ли на рабочем столе созданные вами папки?

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

Создал ярлык powershell консоли в Windows 10, хочу чтобы она запускалась от администратора и в определенной папке. Подскажите как сделать?

Я пробовал параметр запуска указывать, не работает:

введите сюда описание изображения

Также не работает рабочая папка в свойствах ярлыка:


19.7k 6 6 золотых знаков 33 33 серебряных знака 76 76 бронзовых знаков


3,227 3 3 золотых знака 24 24 серебряных знака 42 42 бронзовых знака

Используйте PowerShell Profiles:

Находясь в Powershell дайте команду на создание профиля:

Откройте профиль на редактирование:

Впишите в открывшемся редакторе команду перехода в нужный каталог:

Закройте консоль Powershell и попробуйте открыть снова. Вуаля - вы в папке f:\ !

PS Статьи в помощь:


28.4k 16 16 золотых знаков 49 49 серебряных знаков 114 114 бронзовых знаков

В проводнике Windows перейдите в адресную строку (Alt + D или Ctrl + L). Введите powershell или powershell_ise и нажмите Enter.

Заходите в папку, зажимаете клавишу shift + правую кнопку мыши и затем в контекстном меню нажимаете Открыть окно команд (или, наверное будет по другому написано - Открыть Powershell ).


Для powershell Core
pwsh.exe -wd "c:\your_directory"

Для powershell version <=5.1 (встроенная в windows)

Команда для реестра или при непосредственном запуске powershell
powershell -NoExit -command

Команда для "cmd подобных" ярлыки, запуск через bat файлы и другие варианты
powershell -NoExit -Command "& "
или
powershell -NoExit -Command "& Set-Location -Path \"c:\\your_directory\""
или
powershell -NoExit -Command Set-Location -Path "c:\your_directory"

Для ярлыка конкретно
"absolute_path\powershell.exe" -NoExit -Command "& "

Запуск от имени администратора, правая клавиша мыши - Запуск от имени администратора. Если хотите чтобы ярлык запускал сразу как от имени администратора, то свойства ярлыка=>дополнительно=>запуск от имени администратора или копайте в сторону команды runas и объединяйте команды.

Читайте также: