Вывести содержимое каталога windows в powershell

I'm trying this but it doesn't print anything: Dir -Recurse "C:temp" | Select Fullname Looks like this command just selects file names. I want to see them in console.

Concerning your code in the question.

Your command should have worked as is. You are, in fact, already calling Get-ChildItem. If you check Get-Alias you will see what I’m trying to tell you.

PS C:usersCameronDownloads> Get-Alias dir

CommandType     Name                                               ModuleName                                                                                               
-----------     ----                                               ----------                                                                                               
Alias           dir -> Get-ChildItem  

You code translates to

Get-ChildItem -Recurse "C:temp" | Select Fullname

Again, I’m not sure why your code does not generate output since that is perfectly fine on a folder that contains files or directories. Might be an issue with the positional parameter maybe? What is your PowerShell version? ( Use Get-Host).

The code you have would send all file paths to console. Did you want that output somewhere else?

About the accepted answer

Pretty sure this code will double up output if you have folders in the path since directory will output to the second Get-ChildItem

Dir -Recurse c:path | Get-Childitem

Consider the following folder tree

C:TEMPTEST
│   File1.txt
│   File2.txt
│
└───Folder1
        File3.txt

Consider the two command run against that folder tree.

PS C:usersCameronDownloads> Dir -Recurse c:temptest | Select Fullname

FullName                                                                                                                                                                    
--------                                                                                                                                                                    
C:temptestFolder1                                                                                                                                                        
C:temptestFile1.txt                                                                                                                                                      
C:temptestFile2.txt                                                                                                                                                      
C:temptestFolder1File3.txt                                                                                                                                              



PS C:usersCameronDownloads> Dir -Recurse c:temptest | Get-Childitem | Select Fullname

FullName                                                                                                                                                                    
--------                                                                                                                                                                    
C:temptestFolder1File3.txt                                                                                                                                              
C:temptestFile1.txt                                                                                                                                                      
C:temptestFile2.txt                                                                                                                                                      
C:temptestFolder1File3.txt   

The second command shows two files called File3.txt when in reality there is only one.

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

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

Получение текстового файла с содержимым папки в командной строке

Получение списка файлов в командной строке

Сначала о том, как сделать текстовый документ, содержащий список файлов в нужной папке, вручную.

  1. Запустите командную строку от имени администратора.
  2. Введите cd x:folder где x:folder — полный путь к папке, список файлов из которой нужно получить. Нажмите Enter.
  3. Введите команду dir /a /-p /o:gen >files.txt (где files.txt — текстовый файл, в котором будет сохранен список файлов). Нажмите Enter.
  4. Если использовать команду с параметром /b (dir /a /b /-p /o:gen >files.txt), то в полученном списке будет отсутствовать любая дополнительная информация о размерах файлов или дате создания — только список имен.

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

Полученный текстовый файл со списком

Кроме этого, для пользователей русскоязычной версии Windows следует учитывать то, что файл сохраняется в кодировке Windows 866, то есть в обычном блокноте вместо русских символов вы увидите иероглифы (но можно использовать альтернативный текстовый редактор для просмотра, например, Sublime Text).

Получаем список файлов с помощью Windows PowerShell

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

Сохранение списка файлов в текстовый файл в PowerSehll

Примеры команд:

  • Get-Childitem -Path C:Folder — вывод списка всех файлов и папок, находящихся в папке Folder на диске C в окне Powershell.
  • Get-Childitem -Path C:Folder | Out-File C:Files.txt — создание текстового файла Files.txt со списком файлов в папке Folder.
  • Добавление параметра -Recurse к первой описанной команде выводит в списке также содержимое всех вложенных папок.
  • Параметры -File и -Directory позволяют получить список только файлов или только папок соответственно.

Список файлов, полученный в PowerShell

Выше перечислены далеко не все параметры Get-Childitem, но в рамках описываемой в этом руководстве задачи, думаю, их будет достаточно.

Утилита Microsoft Fix it для печати содержимого папки

На странице https://support.microsoft.com/ru-ru/kb/321379 присутствует утилита Microsoft Fix It, добавляющая в контекстное меню проводника пункт «Print Directory Listing», выводящий список файлов в папке на печать.

Вывод списка файлов на печать через контекстное меню

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

Дополнительно, на той же странице показан порядок ручного добавления команды вывода списка файлов в проводник, при этом вариант для Windows 7 подойдет и для Windows 8.1 и 10. А если вам не требуется вывод на печать, вы можете немного подправить предлагаемые Microsoft команды, удалив параметр /p в третьей строке и полностью убрав четвертую.

I’ve been trying to find a script that recursively prints all files and folders within a directory like this where the backslash is used to indicate directories:

Source code
Source codeBase
Source codeBasemain.c
Source codeBaseprint.c
List.txt

I’m using PowerShell 3.0 and most other scripts I’ve found do not work (though they didn’t anything like what I’m asking).

Additionally: I need it to be recursive.

asked Mar 1, 2013 at 19:24

Melab's user avatar

MelabMelab

2,4747 gold badges28 silver badges48 bronze badges

What you are likely looking for is something to help distinguish a file from a folder. Luckily there is a property call PSIsContainer that is true for folder and false for files.

dir -r  | % { if ($_.PsIsContainer) { $_.FullName + "" } else { $_.FullName } }

C:Source codeBase
C:Source codeList.txt
C:Source codeBasemain.c
C:Source codeBaseprint.c

If the leading path information is not desirable, you can remove it easily enough using -replace:

dir | % { $_.FullName -replace "C:\","" }

Hopefully this gets you headed off in the right direction.

answered Mar 1, 2013 at 20:02

Goyuix's user avatar

GoyuixGoyuix

23.3k14 gold badges83 silver badges127 bronze badges

5

It could be like:

$path = "c:Source code"
DIR $path -Recurse | % { 
    $_.fullname -replace [regex]::escape($path), (split-path $path -leaf)
}

Following the @Goyuix idea:

$path = "c:source code"
DIR $path -Recurse | % {
    $d = ""
    $o = $_.fullname -replace [regex]::escape($path), (split-path $path -leaf)
    if ( -not $_.psiscontainer) {
        $d = [string]::Empty 
    }
    "$o$d"
}

Peter Mortensen's user avatar

answered Mar 1, 2013 at 19:45

CB.'s user avatar

CB.CB.

57.7k8 gold badges157 silver badges157 bronze badges

2

dir | % {
   $p= (split-path -noqualifier $_.fullname).substring(1)
   if($_.psiscontainer) {$p+''} else {$p}
}

answered Mar 1, 2013 at 21:25

Shay Levy's user avatar

Shay LevyShay Levy

118k30 gold badges180 silver badges202 bronze badges

This one shows full paths, as some of the other answers do, but is shorter:

ls -r | % { $_.FullName + $(if($_.PsIsContainer){''}) }

However, the OP I believe asked for relative paths (i.e. relative to the current directory) and only @C.B.’s answer addressed that point. So by just adding a substring we have this:

ls -r | % { $_.FullName.substring($pwd.Path.length+1) + $(if($_.PsIsContainer){''}) }

answered Mar 28, 2013 at 16:48

Michael Sorens's user avatar

Michael SorensMichael Sorens

34.8k25 gold badges118 silver badges170 bronze badges

Not powershell, but you can use the following within command prompt to recursively list files into a textfile:

dir *.* /s /b /a:-d > filelist.txt

answered Nov 16, 2016 at 2:17

Tim's user avatar

TimTim

7167 silver badges9 bronze badges

0

PowerShell Command For Directory List into Txt File:

For Full Path Directory List (Folder & File) to text file:

ls -r | % { $_.FullName + $(if($_.PsIsContainer){''}) } > filelist.txt

For Relative Path Directory List (Folder & File) to text file:

ls -r | % { $_.FullName.substring($pwd.Path.length+1) + $(if($_.PsIsContainer){''}) } > filelist.txt

answered Aug 23, 2017 at 9:35

drmkjaiswal's user avatar

(ls $path -r).FullName | % {if((get-item "$_").psiscontainer){"$_"}else{$_}}

Only use in PS 3.0

answered Mar 1, 2013 at 21:33

E.V.I.L.'s user avatar

E.V.I.L.E.V.I.L.

2,06013 silver badges14 bronze badges

You can achieve this through the get-childitem command in PowerShell. Refer to the below syntax:

Get-ChildItem «Folder name or Path» -Recurse | select FullName > list.txt

This will help you write all the plain files and folders names recursively onto a file called list.txt
Refer to this for more information. https://ss64.com/ps/get-childitem.html

Answering late, but it might help someone!

answered Dec 8, 2021 at 3:01

UCN's user avatar

0

I made an improved version of the code submitted (since the code output are inside powershell which has an output limit)

  1. Shift + Right Click in the folder you’re trying to scan files and folder on
  2. copy and paste this (just edit your_pc_name)

dir -r | % { if ($.PsIsContainer) { $.FullName + «» } else { $_.FullName } } | Out-File -FilePath c:usersyour_pc_namedesktopOUTPUT.txt

This will print all the files and folders into a txt file in your dekstop.

extra tips:

  1. copy the output and paste it in excel
  2. use ctrl + f to search for the filename you wanted.

This help me a lot in searching for a large database of files.

answered Oct 9, 2022 at 4:08

N0517V's user avatar

I’ve been trying to find a script that recursively prints all files and folders within a directory like this where the backslash is used to indicate directories:

Source code
Source codeBase
Source codeBasemain.c
Source codeBaseprint.c
List.txt

I’m using PowerShell 3.0 and most other scripts I’ve found do not work (though they didn’t anything like what I’m asking).

Additionally: I need it to be recursive.

asked Mar 1, 2013 at 19:24

Melab's user avatar

MelabMelab

2,4747 gold badges28 silver badges48 bronze badges

What you are likely looking for is something to help distinguish a file from a folder. Luckily there is a property call PSIsContainer that is true for folder and false for files.

dir -r  | % { if ($_.PsIsContainer) { $_.FullName + "" } else { $_.FullName } }

C:Source codeBase
C:Source codeList.txt
C:Source codeBasemain.c
C:Source codeBaseprint.c

If the leading path information is not desirable, you can remove it easily enough using -replace:

dir | % { $_.FullName -replace "C:\","" }

Hopefully this gets you headed off in the right direction.

answered Mar 1, 2013 at 20:02

Goyuix's user avatar

GoyuixGoyuix

23.3k14 gold badges83 silver badges127 bronze badges

5

It could be like:

$path = "c:Source code"
DIR $path -Recurse | % { 
    $_.fullname -replace [regex]::escape($path), (split-path $path -leaf)
}

Following the @Goyuix idea:

$path = "c:source code"
DIR $path -Recurse | % {
    $d = ""
    $o = $_.fullname -replace [regex]::escape($path), (split-path $path -leaf)
    if ( -not $_.psiscontainer) {
        $d = [string]::Empty 
    }
    "$o$d"
}

Peter Mortensen's user avatar

answered Mar 1, 2013 at 19:45

CB.'s user avatar

CB.CB.

57.7k8 gold badges157 silver badges157 bronze badges

2

dir | % {
   $p= (split-path -noqualifier $_.fullname).substring(1)
   if($_.psiscontainer) {$p+''} else {$p}
}

answered Mar 1, 2013 at 21:25

Shay Levy's user avatar

Shay LevyShay Levy

118k30 gold badges180 silver badges202 bronze badges

This one shows full paths, as some of the other answers do, but is shorter:

ls -r | % { $_.FullName + $(if($_.PsIsContainer){''}) }

However, the OP I believe asked for relative paths (i.e. relative to the current directory) and only @C.B.’s answer addressed that point. So by just adding a substring we have this:

ls -r | % { $_.FullName.substring($pwd.Path.length+1) + $(if($_.PsIsContainer){''}) }

answered Mar 28, 2013 at 16:48

Michael Sorens's user avatar

Michael SorensMichael Sorens

34.8k25 gold badges118 silver badges170 bronze badges

Not powershell, but you can use the following within command prompt to recursively list files into a textfile:

dir *.* /s /b /a:-d > filelist.txt

answered Nov 16, 2016 at 2:17

Tim's user avatar

TimTim

7167 silver badges9 bronze badges

0

PowerShell Command For Directory List into Txt File:

For Full Path Directory List (Folder & File) to text file:

ls -r | % { $_.FullName + $(if($_.PsIsContainer){''}) } > filelist.txt

For Relative Path Directory List (Folder & File) to text file:

ls -r | % { $_.FullName.substring($pwd.Path.length+1) + $(if($_.PsIsContainer){''}) } > filelist.txt

answered Aug 23, 2017 at 9:35

drmkjaiswal's user avatar

(ls $path -r).FullName | % {if((get-item "$_").psiscontainer){"$_"}else{$_}}

Only use in PS 3.0

answered Mar 1, 2013 at 21:33

E.V.I.L.'s user avatar

E.V.I.L.E.V.I.L.

2,06013 silver badges14 bronze badges

You can achieve this through the get-childitem command in PowerShell. Refer to the below syntax:

Get-ChildItem «Folder name or Path» -Recurse | select FullName > list.txt

This will help you write all the plain files and folders names recursively onto a file called list.txt
Refer to this for more information. https://ss64.com/ps/get-childitem.html

Answering late, but it might help someone!

answered Dec 8, 2021 at 3:01

UCN's user avatar

0

I made an improved version of the code submitted (since the code output are inside powershell which has an output limit)

  1. Shift + Right Click in the folder you’re trying to scan files and folder on
  2. copy and paste this (just edit your_pc_name)

dir -r | % { if ($.PsIsContainer) { $.FullName + «» } else { $_.FullName } } | Out-File -FilePath c:usersyour_pc_namedesktopOUTPUT.txt

This will print all the files and folders into a txt file in your dekstop.

extra tips:

  1. copy the output and paste it in excel
  2. use ctrl + f to search for the filename you wanted.

This help me a lot in searching for a large database of files.

answered Oct 9, 2022 at 4:08

N0517V's user avatar

При работе на компьютере иногда возникает необходимость получить полный список файлов и папок в каталоге или даже целом томе. Понадобиться он может для самых разных целей, например, для каталогизации, для сравнения, для использования в какой-то базе данных и так далее. В большинстве случаев приходится иметь дело с большим числом объектов, поэтому нечего и думать, чтобы составить такой список вручную.

Если создание списка файлов вручную представляется едва ли возможным, то какая есть тому альтернатива, какие программные инструменты лучше всего подойдут для этих целей? Решений существует несколько, все они очень просты и удобны. Получить список файлов и папок можно с помощью обычной командной строки, с помощью PowerShell, штатного Проводника, любого браузера, а также с помощью сторонних специализированных утилит.

Получаем список файлов и папок в командной строке

Для чтения содержимого каталогов в старой доброй командной строке предусмотрена команда dir, её то как раз мы и будем использовать. Итак, запускаем консоль CMD, командой cd Буква диска:/путь (если нужно перейти в другой диск, добавляем после cd ключ /d) переходим в нужное расположение и выполняем эти две команды:

chcp 1251
dir /b /s > D:filelist.tхt

Список файлов и папок в командной строке

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

Текстовый лог

Если нужно получить список только файлов (без вложенных каталогов), достаточно использовать только ключ /b.

Примечание: в Windows 8.1 и 7 для быстрого перехода в папку в командной строке, зажмите Shift, кликните ПКМ по папке и выберите в контекстном меню опцию «Открыть окно команд».

Список файлов и папок в PowerShell

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

Get-Childitem -Path D:Тест -Recurse | Out-File D:filelist.tхt

PowerShell

А можно и проще. Зажав Shift, кликаем по папке ПКМ, выбираем в меню «Открыть PowerShell здесь».

Открыть PowerShell здесь

И выполняем в открывшемся окне консоли команду Get-Childitem -Recurse | Out-File D:filelist.tхt.

Get-Childitem

Необходимость использования параметра -Path с указанием пути в данном случае отпадает.

Получение списка файлов или папок в Проводнике

Этот способ позволяет получить список либо файлов, либо папок в конкретном расположении. Заходим в целевую папку, выделяем в ней все файлы или папки, зажимаем Shift, кликаем правой кнопкой мыши и выбираем в меню опцию «Копировать как путь».

Копировать как путь

Пути и имена выделенных объектов будут переданы в буфер обмена, откуда вы уже сможете перенести их в текстовый файл.

Получение списка файлов с помощью DirLister

Для получения хорошо структурированного списка объектов файловой системы можно воспользоваться бесплатной портативной утилитой DirLister, скачав её с официального сайта:

www.barrysoft.it/blog/software/dirlister

Запустив утилиту, укажите в разделе «Directory To Scan» путь к сканируемому каталогу или диску, в разделе «Output File» выберите расположение для сохранения списка.

DirLister

Здесь же можно задать параметры сканирования — выбрать формат, указать, нужно ли включать в список вложенные директории и скрытые объекты, задать поиск по маске. После нажатия кнопки «Make List» список будет сохранён в выбранном расположении.

Используем для получения списка файлов браузер

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

Список файлов в браузере

Рекурсивно пройтись по всем вложенным каталогам, правда, не получится да и для копирования путей и имён файлов и переноса их в отдельный файл придется использовать Ctrl + C и Ctrl + V.

Загрузка…

0 / 0 / 0

Регистрация: 30.05.2017

Сообщений: 11

1

10.02.2018, 19:59. Показов 17487. Ответов 1


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

Вывести содержимое каталога Windows по указанному формату на экран и в текстовый файл: только файлы; сортировать по размеру; Размер >10000.

Заранее большое спасибо, за помощь.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



KDE777

1882 / 1106 / 426

Регистрация: 22.01.2016

Сообщений: 3,050

11.02.2018, 11:46

2

Лучший ответ Сообщение было отмечено VadimAlekseev как решение

Решение

Цитата
Сообщение от VadimAlekseev
Посмотреть сообщение

Вывести содержимое каталога Windows по указанному формату на экран и в текстовый файл: только файлы; сортировать по размеру; Размер >10000.

PowerShell
1
Get-ChildItem -Path $env:SystemRoot -File | Where-Object Length -gt 10000 | Sort-Object name | Select-Object name | Tee -FilePath C:Templist.txt



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

11.02.2018, 11:46

Помогаю со студенческими работами здесь

Создать текстовый файл с не менее 20 целых чисел в диапазоне от -10 до 20, вывести содержимое на экран
Создать текстовый файл, в который записать не менее 20 целых чисел в

диапазоне от -10 до 20….

Работа со строками (Создать текстовый файл, вывести содержимое на экран, определить длину каждого предложения)
Создать текстовый файл . в который вписать 3 предложения .
Прочитать этот файл , вывести его…

Создать папку User6 в корневом каталоге диска D и вывести в текстовый файл содержимое папки C:Windows
С помощью бат-файла создать папку User6 в корневом каталоге диска D и вывести в текстовый файл…

Вывести в текстовый файл таблицу по указанному правилу
Написать программу, выводящую в текстовый файл таблицу 8×8. Элементы таблицы определяются…

Вывести на экран содержимое каталога со всеми его подкаталогами
Есть папка с музыкой (music). В ней еще одна папка, тоже с музыкой. Задача программы прочитать все,…

Написать bat-файл, выдающий содержимое файлов с расширением txt из текущего каталога на устройстве с: на экран
в) Написать bat-файл, выдающий содержимое файлов с расширением txt из текущего каталога на…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

2

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

Содержание

  1. Показать файлы в папке Windows
  2. MS-DOS и командная строка Windows
  3. Пример вывода команды dir
  4. Вывести список файлов в каталоге Windows PowerShell
  5. Перечислите файлы в каталоге Linux и Unix
  6. Показать файлы на Apple MacOS

Показать файлы в папке Windows

Пользователи Microsoft Windows, которые хотят перечислить файлы на компьютере, могут открыть Мой компьютер или Проводник Windows и открыть диск C: . При попадании на диск C: все файлы и папки в корневом каталоге вашего основного жесткого диска отображаются в списке и должны напоминать пример, показанный ниже.

В Windows большинство ваших программ хранятся в папке Program Files, а ваши документы часто сохраняются в папке «Мои документы».

Файлы и папки в корневом каталоге

MS-DOS и командная строка Windows

MS-DOS и командная строка Windows

Чтобы вывести список файлов в командной строке MS-DOS или в командной строке Windows, используйте команду dir.

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

Пример вывода команды dir

По умолчанию команда dir выводит список файлов и каталогов для текущего каталога. В приведенном ниже примере мы находимся в каталоге Windows, поэтому отображаются только файлы и каталоги в каталоге Windows.

C:  Windows> 
Том dir на диске C не имеет метки.
 Серийный номер тома 6464-D47C

Каталог c:  windows

13.04.2016, 06:24 <DIR>.
13.04.2016, 06:24 <DIR> ..
30.10.2015 01:24 <DIR> addins
17.04.2016, 07:10 19 326 PFRO.log
30.10.2015 01:18 32 200 Professional.xml
23.12.2015, 04:30 <DIR> Подготовка
30.10.2015 01:17 320,512 regedit.exe
17.12.2015, 08:09 <DIR> Регистрация
18.04.2016 11:28 <DIR> rescache
17.12.2015, 08:04 <DIR> Ресурсы
07.06.2010 15:27 1 251 944 RtlExUpd.dll
...
13.07.2009 23:09 403 win.ini
17.04.2016, 07:10 <DIR> WinSxS
30.10.2015 01:18 11,264 write.exe
              32 файл (ов) 839,433,436 байт
              81 Dir (s) 341,846,921,216 байт бесплатно

Если в одном каталоге слишком много файлов, вы также можете показывать файлы по одной странице за раз, используя команду dir с ключом / p.

dir / p

Вы можете перечислить файлы, которые соответствуют только определенным критериям, используя подстановочные знаки в команде dir. Ниже приведены несколько дополнительных примеров команды dir с подстановочными знаками.

dir * .txt

В приведенном выше примере отображаются только файлы с расширением .txt.

реж *. *

В приведенном выше примере отображаются только файлы, начинающиеся с буквы «а».

Смотрите наше определение подстановочного знака для получения дополнительной информации об этом термине и дополнительных примерах.

dir c:  windows

В приведенном выше примере эта команда выводит список файлов в каталоге C: Windows независимо от текущего каталога или диска.

Вывести список файлов в каталоге Windows PowerShell

Как и командная строка Windows, Windows PowerShell может использовать команду dir для вывода списка файлов в текущем каталоге. PowerShell также может использовать команды ls и gci для вывода списка файлов в другом формате.

Перечислите файлы в каталоге Linux и Unix

Вывод файлов в каталоге Linux и Unix

Чтобы вывести список файлов в командной строке Linux или Unix, используйте команду ls, как показано ниже. Если вам нужны дополнительные примеры и синтаксис команды ls, см. страницу справки команды ls.

[~ / public_html / rss] # ls 
./ ../ history.rss questions.rss jargon.rss newjarg.rss newpages.rss newqa.rss

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

Вы можете перечислить файлы, которые соответствуют только определенным критериям, используя подстановочные знаки в команде ls. Ниже приведены несколько дополнительных примеров команды dir с подстановочными знаками.

ls * .txt

В приведенном выше примере отображаются только файлы с расширением .txt.

ls r *

В вышеприведенном примере отображаются только файлы, начинающиеся с буквы «r».

ls [aeiou] *

В примере приведенном выше отображаются только файлы, начинающиеся с гласной (a, e, i, o, u).

ls ~ / public_html

В примере выше команда ls перечисляет все файлы в каталоге public_html, который является частью вашего домашнего каталога, который представлен тильдой. Если этот каталог не существует, вы получите сообщение об ошибке.

Тильда это ярлык. Без ярлыка вам нужно будет ввести полное имя каталога. Например, если ваше имя пользователя было «надежда», ваш домашний каталог будет / home / hope. Вы можете увидеть полный рабочий каталог, в котором вы находитесь, с помощью команды pwd.

Показать файлы на Apple MacOS

Пользователи Apple могут просматривать файлы через Finder. Если вы находитесь в Терминале, посмотрите шаги Linux, которые также работают в Терминале.

Рассказываем про Windows PowerShell — технологию для автоматизации рутинных задач, пришедшую на смену bat-файлам.

Работа с консолью Microsoft Windows

Ранее мы рассматривали командные интерпретаторы COMMAND.CMD и CMD.EXE, обеспечивающие автоматизацию задач в семействе операционных систем Microsoft Windows. Фактически данные интерпретаторы не получали обновлений с начала 2000-х годов и существуют в современных операционных системах для обеспечения совместимости.

Подробнее о bat-файлах →

Хотя современные операционные системы предлагают богатый на функции графический интерфейс, ряд однотипных задач быстрее решается через консоль. Более того, серверные редакции ОС не предоставляют графический интерфейс по умолчанию, поэтому интерпретатор командной строки является неотъемлемой частью практически любой операционной системы.

Помимо отсутствия обновлений, CMD.EXE имеет ограниченный функционал. Он не позволяет писать сложную логику и полностью отказаться от использования графического интерфейса. Корпорация Microsoft пыталась решить эти проблемы с помощью инструмента под названием Microsoft Script Host, который имел интеграцию со скриптовыми языками JScript и VBScript.

Однако Microsoft Script Host имел ряд собственных проблем:

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

Все это побуждало Microsoft сделать командный интерпретатор с нуля.

В 2003 году корпорация Microsoft начала разработку нового инструмента — Microsoft Shell (MSH), или Monad. Спустя три года и три бета-версии Monad была официально выпущена под новым названием Windows PowerShell 1.0 на Windows XP и Windows Vista. По ходу развития командная оболочка меняла свои названия на PowerShell Core и PowerShell.

При создании PowerShell разработчики задались целью создать инструмент, который позволил бы с легкостью использовать множество разнородных интерфейсов, предоставляемых операционной системой. Новый инструмент должен быть консистентным и легким для администратора, несмотря на количество технологий «под капотом». Например, PowerShell предоставляет доступ к API .NET-фреймворка, но не требует от администратора знания .NET.

Как и любой командный интерпретатор, PowerShell умеет запускать исполняемые файлы и имеет встроенные команды. Однако у PowerShell встроенные команды имеют название «командлет», появившееся от английского cmdlet.

Что такое командлет?

В основе взаимодействия с PowerShell лежат объекты, а не текст, как у CMD.EXE и командных интерпретаторов в *nix-системах. Такой подход меняет взгляд на организацию встроенных команд.

Командлет — это встроенная команда в PowerShell, выполняющая одну задачу и реализованная на .NET. Имя командлета соответствует правилу Глагол-Существительное, которое можно читать как Действие-Объект.

Самый важный командлет, о котором необходимо узнать в первую очередь, — Get-Help. Он отображает справочную информацию о PowerShell и командлетах.

# Получить общую справку по PowerShell
Get-Help

# Получить справку по командлету Get-Content
Get-Help Get-Content

# Получить справку по командлету Get-Help
Get-Help Get-Help

Если вам кажется, что использовать большие буквы в названии командлетов — это перебор, для вас есть хорошие новости. Все команды в PowerShell являются регистронезависимыми. Иными словами, перечисленные ниже написания эквивалентны:

Get-Help Get-Help
get-help get-help
GET-HELP GET-HELP
GeT-hElP gEt-HeLp

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

В первой версии PowerShell все командлеты были реализованы на .NET, но начиная с версии 2.0 появилась возможность писать командлеты с использованием синтаксиса PowerShell.

Основы программы PowerShell

Перейдем к практике. PowerShell является кроссплатформенным инструментом и может быть запущена на Linux и macOS, но в данной статье будет рассматриваться только «родное» окружение — Windows.

Как запустить?

Программа в меню

Запуск PowerShell можно произвести из меню поиска около кнопки Пуск, набрав powershell.

PowerShell в меню

Аналогично можно запустить PowerShell через диалоговое окно Выполнить…, которое открывается через сочетание клавиш Windows + R.

Если по каким-то причинам у вас не установлен PowerShell, то необходимо сделать это, следуя инструкции в базе знаний Microsoft.

Установка PowerShell

В случае успеха откроется синее окно. Windows PowerShell готов к вашим командам.

Синтаксис

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

Get-Help Get-Command -Online

Данная команда откроет в браузере вкладку с описанием командлета Get-Command в базе знаний Microsoft. Разберем подробнее:

  • Get-Help – команда, в данном случае командлет,
  • Get-Command – первый позиционный аргумент, который передается командлету,
  • -Online – ключ, то есть именованный аргумент.

Обратите внимание, что в CMD.EXE именованные аргументы, то есть ключи, для встроенных команд начинались с символа слэш (/). У командлетов аргументы начинаются со знака минус. Использование знака / в PowerShell недопустимо и будет интерпретировано как ошибка.

Хотя PowerShell во многом похож на CMD.EXE, он имеет несколько существенных отличий. Во-первых, обращение к переменным производится через символ доллар, а не через знак процента. Во-вторых, PowerShell позволяет определять функции. Например:

function Get-Version {
    $PSVersionTable.PSVersion
}

Данный код объявит функцию Get-Version, которая обращается к системной переменной (объекту) PSVersionTable и возвращает значение поля PSVersion. Проще говоря, выводит версию PowerShell.

Именование командлетов может быть неочевидным для администраторов с опытом работы с другими командными интерпретаторами. Поэтому рассмотрим основные команды Windows PowerShell.

Основные команды языка Windows PowerShell

В следующей таблице перечислены основные команды PowerShell и их аналоги в *nix-подобных системах и CMD.EXE. В версии PowerShell 7 количество командлетов превышает полторы тысячи!

Командлет (псевдоним) Команда в *nix Команда в CMD.exe Описание
Get-Location (pwd) pwd Выводит путь до текущего каталога
Set-Location (cd) cd cd Меняет текущий каталог
Get-ChildItem (ls) ls dir Выводит содержимое текущего каталога
Get-ChildItem find find Производит поиск файлов по заданным критериям
Copy-Item (cp) cp cp Копирует файл
Remove-Item (rm) rm rm Удаляет файл
New-Item (mkdir) mkdir mkdir Создает каталог
New-Item touch Создает пустой файл
Get-Content (cat) cat Выводит файлы
Get-Content tail Выводит последние 10 строк
Where-Object grep Производит фильтрацию
Create-Volume
Format-Volume
mkfs Форматирует раздел
Test-Connection ping ping.exe Отправляет ICMP-запросы, «пингует»
Get-Help (man) man help Показывает справку

После работы в консоли *nix командлет для популярного действия, смены каталога, выглядит громоздко и непривычно. К счастью, командлеты имеют псевдонимы (алиасы), которые могут не следовать правилу именования командлетов. Список известных псевдонимов можно получить с помощью командлета Get-Alias.

Хотя таблица, представленная выше, значительно облегчит назначение командлетов, не стоит ожидать от командлетов поведения как в *nix-системах. Так, например, в PowerShell командлет Get-Content создан для вывода содержимого одного файла на экран, в то время как на *nix-системах утилита cat изначально использовалась для конкатенации (процесса соединения) нескольких файлов с последующим выводом на экран.

Очевидно, что возможности PowerShell значительно больше, чем CMD.exe. Опытный администратор знает, что некоторые задачи из таблицы можно решить в CMD.exe, несмотря на отсутствие специальных команд. Однако эти команды требуют опыта или смекалки.

Утилита ping

Отдельно хочется отметить командлет Test-Connection, который делает то же самое, что утилита ping, но не имеет такого алиса. Разница между утилитой и командлетом в формате вывода: утилита выводит текст, а командлет возвращает объект, который можно использовать в конвейерах.

Конвейер PowerShell: особенности и параметры

По своей задумке конвейеры в PowerShell не отличаются от конвейеров в *nix-системах: они перенаправляют вывод одной команды на ввод другой. Как отмечалось ранее, в PowerShell происходит взаимодействие не с текстом, а с объектами. При выводе на экран объект трансформируется в таблицу, чтобы человеку было удобнее читать, но не всегда таблица выводит все поля объекта.

Особенность конвейеров PowerShell заключается в том, что конвейер передает результат не целиком, а по одному объекту. Командлет Test-Connection выводит четыре объекта: по одному на каждый ICMP-запрос. Если подключить командлет к конвейеру, то можно увидеть подтверждение этому тезису. Воспользуемся командлетом Select-Object, чтобы выбрать колонку со временем запроса.

Test-Connection selectel.ru | Select-Object ‘Time(ms)’

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

Test-connection

Но как же так? Дело в том, что отображение объекта при выводе на экран не всегда соответствует имени поля в объекте. Чтобы получить полный список полей в объекте, необходимо вызвать командлет Get-Member.

PS C:Userssun> Test-connection selectel.ru | Get-Member


   TypeName: System.Management.ManagementObject#rootcimv2Win32_PingStatus

Name                           MemberType     Definition
----                           ----------     ----------
PSComputerName                 AliasProperty  PSComputerName = __SERVER
Address                        Property       string Address {get;set;}
BufferSize                     Property       uint32 BufferSize {get;set;}
NoFragmentation                Property       bool NoFragmentation {get;set;}
PrimaryAddressResolutionStatus Property       uint32 PrimaryAddressResolutionStatus {get;set;}
ProtocolAddress                Property       string ProtocolAddress {get;set;}
ProtocolAddressResolved        Property       string ProtocolAddressResolved {get;set;}
RecordRoute                    Property       uint32 RecordRoute {get;set;}
ReplyInconsistency             Property       bool ReplyInconsistency {get;set;}
ReplySize                      Property       uint32 ReplySize {get;set;}
ResolveAddressNames            Property       bool ResolveAddressNames {get;set;}
ResponseTime                   Property       uint32 ResponseTime {get;set;}
ResponseTimeToLive             Property       uint32 ResponseTimeToLive {get;set;}
RouteRecord                    Property       string[] RouteRecord {get;set;}
RouteRecordResolved            Property       string[] RouteRecordResolved {get;set;}
SourceRoute                    Property       string SourceRoute {get;set;}
SourceRouteType                Property       uint32 SourceRouteType {get;set;}
StatusCode                     Property       uint32 StatusCode {get;set;}
Timeout                        Property       uint32 Timeout {get;set;}
TimeStampRecord                Property       uint32[] TimeStampRecord {get;set;}
TimeStampRecordAddress         Property       string[] TimeStampRecordAddress {get;set;}
TimeStampRecordAddressResolved Property       string[] TimeStampRecordAddressResolved {get;set;}
TimestampRoute                 Property       uint32 TimestampRoute {get;set;}
TimeToLive                     Property       uint32 TimeToLive {get;set;}
TypeofService                  Property       uint32 TypeofService {get;set;}
__CLASS                        Property       string __CLASS {get;set;}
__DERIVATION                   Property       string[] __DERIVATION {get;set;}
__DYNASTY                      Property       string __DYNASTY {get;set;}
__GENUS                        Property       int __GENUS {get;set;}
__NAMESPACE                    Property       string __NAMESPACE {get;set;}
__PATH                         Property       string __PATH {get;set;}
__PROPERTY_COUNT               Property       int __PROPERTY_COUNT {get;set;}
__RELPATH                      Property       string __RELPATH {get;set;}
__SERVER                       Property       string __SERVER {get;set;}
__SUPERCLASS                   Property       string __SUPERCLASS {get;set;}
ConvertFromDateTime            ScriptMethod   System.Object ConvertFromDateTime();
ConvertToDateTime              ScriptMethod   System.Object ConvertToDateTime();
IPV4Address                    ScriptProperty System.Object IPV4Address {get=$iphost = [System.Net.Dns]:...
IPV6Address                    ScriptProperty System.Object IPV6Address {get=$iphost = [System.Net.Dns]:...

Можно визуально оценить список и найти поле ResponseTime. Также в начале указан тип данного объекта, Win32_PingStatus, информацию о котором можно поискать в базе знаний Microsoft. В документации не только перечислены поля, но и их назначение. Таким образом, конечный вид конвейера будет таким:

Test-connection selectel.ru | Select-Object ResponseTime

Хотя PowerShell побуждает к интерактивной работе, его основное предназначение — автоматизировать рутинные задачи. Значит, необходимо писать скрипты.

Используйте PowerShell в работе с выделенным сервером

Соберите сервер в конфигураторе под свои задачи. Или выберите из более 100 готовых.

Подобрать

Интегрированная среда разработки

Среда разработки

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

PowerShell-скрипты — это текстовые файлы с расширением .ps1.

Windows PowerShell ISE — это интегрированная среда сценариев PowerShell, включающая в себя:

  • редактор PowerShell-скриптов с автодополнением,
  • окно для интерактивного выполнения командлетов в скрипте,
  • список доступных командлетов с поиском.
Перечень команд
Справка Test-Connection

Обратите внимание, что модуль ISE предоставляет графический интерфейс для генерации аргументов командлета. Помимо генерации команд, в функции модуля также входит вызов «справочника» по командлетам, аналогичного Get-Help, только в графическом интерфейсе.

После написания своего первого PowerShell-скрипта вы столкнетесь с некоторыми ограничениями. Во-первых, файл с расширением ps1 нельзя запустить «двойным кликом» по файлу. Необходимо открыть контекстное меню с помощью правой клавиши мыши и выбрать Запустить с помощью PowerShell.

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

Невозможно загрузить файл C:UserssunDocumentsHelloWorld.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/
?LinkID=135170.
    + CategoryInfo          : Ошибка безопасности: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess

По умолчанию запуск PowerShell-скриптов ограничен соответствующей политикой безопасности. Посмотреть текущее значение политики безопасности можно с помощью командлет Get-ExecutionPolicy:

PS C:Userssun> Get-ExecutionPolicy
Restricted

Список возможных значений:

  • Restricted — запуск запрещен,
  • AllSigned — разрешен только запуск подписанных доверенным разработчиком скриптов,
  • RemoteSigned — разрешен запуск подписанных и собственных скриптов,
  • Unrestricted — разрешен запуск любых скриптов.

По умолчанию стоит значение Restricted. В идеале необходимо подписывать скрипты, но для собственных нужд можно ограничиться значением RemoteSigned:

Set-ExecutionPolicy RemoteSigned

Для выполнения данной команды необходимо запустить PowerShell от имени администратора.

Выполнение задач в фоне

Консоль PowerShell

PowerShell позволяет выполнять задачи в фоновом режиме, эту функциональность обеспечивают командлеты с существительным Job:

  • Start-Job —  запустить команду или командлет в фоновом режиме,
  • Get-Job — показать состояние фоновых команд,
  • Wait-Job — дождаться завершения выполнения фоновой команды,
  • Receive-Job — получить результат выполнения команды.

Командлет Start-Job возвращает информацию о запущенном фоновом задании. Идентификатор, обозначенный в поле Id, является уникальным для сессии PowerShell.

Настройка удаленного выполнения

PowerShell позволяет реализовать удаленное выполнение командлетов, скриптов, но только на платформе Windows. Для включения возможности удаленного управления необходимо выполнить командлет Enable-PSRemoting с правами администратора.

Командлет Enter-PSSession запустит удаленную интерактивную сессию, а Invoke-Command выполнит команду на одном или нескольких удаленных компьютерах.

PowerShell – актуальные версии программы

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

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

Понравилась статья? Поделить с друзьями:
  • Вывести массив в windows forms c
  • Выделить область экрана скриншот windows 10
  • Вывести все файлы в директории windows
  • Выборочная только установка windows для опытных пользователей сохранятся ли файлы
  • Вы зашли в систему с временным профилем windows 10