Перейти к содержимому

Как в powershell создать каталог

  • автор:

Прямое управление элементами

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

В выходных данных команды Get-Command -Noun Item показано, что в PowerShell существует девять командлетов типа Item.

Get-Command -Noun Item 
CommandType Name Definition ----------- ---- ---------- Cmdlet Clear-Item Clear-Item [-Path] . Cmdlet Get-Item Get-Item [-Path] . Cmdlet Invoke-Item Invoke-Item [-Path] . Cmdlet New-Item New-Item [-Path] . Cmdlet Remove-Item Remove-Item [-Path] . Cmdlet Set-Item Set-Item [-Path] . 

Создание новых элементов

Чтобы создать новый элемент в файловой системе, используйте New-Item командлет . Включите параметр Path с путем к элементу и параметр ItemType со значением file или directory .

Например, чтобы создать каталог с именем New.Directory в каталоге C:\Temp , введите:

New-Item -Path c:\temp\New.Directory -ItemType Directory 
 Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2006-05-18 11:29 AM New.Directory 

Чтобы создать файл, измените значение параметра ItemType на file . Например, чтобы создать каталог с именем file1.txt в каталоге New.Directory , введите:

New-Item -Path C:\temp\New.Directory\file1.txt -ItemType file 
 Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2006-05-18 11:44 AM 0 file1 

Тот же метод можно использовать для создания нового раздела реестра. На самом деле, раздел реестра создать проще, так как единственный тип элементов в реестре Windows — это раздел. (Записи реестра являются свойствами элементов.) Например, чтобы создать ключ с именем _Test в подразделе , введите CurrentVersion :

New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\_Test 
 Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion SKC VC Name Property --- -- ---- -------- 0 0 _Test <> 

При вводе пути реестра не забудьте добавить двоеточие ( : ) в имена дисков Windows PowerShell — HKLM: и HKCU: . Без двоеточия PowerShell не распознает имя диска в пути.

Почему значения реестра не являются элементами

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

Например, раздел реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run обычно содержит записи реестра, представляющие приложения, которые выполняются при запуске системы.

Однако при использовании для Get-ChildItem поиска дочерних элементов в ключе все, что вы увидите OptionalComponents , это подраздел ключа:

Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Run 
 Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run SKC VC Name Property --- -- ---- -------- 3 0 OptionalComponents <> 

Хотя было бы удобно рассматривать записи реестра как элементы, нельзя указать путь к записи реестра таким образом, чтобы гарантировать ее уникальность. Нотация пути не различает подраздел реестра с именем Run и запись реестра (по умолчанию) в подразделе Выполнить . Кроме того, так как имена записей реестра могут содержать символ обратной косой черты ( \ ), если записи реестра были элементами, то вы не могли использовать нотацию пути, чтобы отличить запись реестра с именем Windows\CurrentVersion\Run от подраздела, расположенного в этом пути.

Переименование существующих элементов

Чтобы изменить имя файла или папки, используйте командлет Rename-Item . Следующая команда изменяет имя файла file1.txt на fileOne.txt .

Rename-Item -Path C:\temp\New.Directory\file1.txt fileOne.txt 

Командлет Rename-Item может изменить имя файла или папки, но не может переместить элемент. Произойдет сбой следующей команды, так как она попытается переместить файл из каталога New.Directory во временный каталог.

Rename-Item -Path C:\temp\New.Directory\fileOne.txt c:\temp\fileOne.txt 
Rename-Item : can't rename because the target specified isn't a path. At line:1 char:12 + Rename-Item  

Перемещение элементов

Чтобы переместить файл или папку, используйте командлет Move-Item .

Например, следующая команда перемещает каталог New.Directory из C:\temp каталога в корневой C: каталог диска. Чтобы убедиться, что элемент перемещен, включите параметр PassThru командлета Move-Item . Без PassThru Move-Item командлет не отображает никаких результатов.

Move-Item -Path C:\temp\New.Directory -Destination C:\ -PassThru 
 Directory: Microsoft.PowerShell.Core\FileSystem::C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2006-05-18 12:14 PM New.Directory 

Копирование элементов

Если вы знакомы с операциями копирования в других оболочках, поведение командлета Copy-Item в PowerShell может оказаться необычным. При копировании элемента из одного расположения в другое Copy-Item не копирует его содержимое по умолчанию.

Например, если скопировать New.Directory каталог с диска C: в C:\temp каталог, команда будет выполнена успешно, но файлы в каталоге New.Directory не будут скопированы.

Copy-Item -Path C:\New.Directory -Destination C:\temp 

Если отобразить содержимое C:\temp\New.Directory , там не будет файлов:

PS> Get-ChildItem -Path C:\temp\New.Directory PS> 

Почему командлет Copy-Item не копирует содержимое в новое расположение?

Командлет Copy-Item был разработан как универсальный; он предназначен не только для копирования файлов и папок. Кроме того, даже при копировании файлов и папок может потребоваться копировать только контейнер без элементов внутри него.

Чтобы скопировать все содержимое папки, включите параметр Recurse командлета Copy-Item в команду. Если вы уже скопировали каталог без содержимого, добавьте параметр Force, который позволит перезаписать пустую папку.

Copy-Item -Path C:\New.Directory -Destination C:\temp -Recurse -Force -Passthru 
 Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2006-05-18 1:53 PM New.Directory Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2006-05-18 11:44 AM 0 file1 

Удаление элементов

Чтобы удалить файлы и папки, используйте командлет Remove-Item . Командлеты PowerShell, такие как Remove-Item , которые могут вносить значительные необратимые изменения, часто запрашивают подтверждение при вводе команд. Например, при попытке удалить папку New.Directory вам предлагается подтвердить команду, так как папка содержит файлы:

Remove-Item C:\temp\New.Directory 
Confirm The item at C:\temp\New.Directory has children and the -recurse parameter was not specified. If you continue, all children will be removed with the item. Are you sure you want to continue? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): 

Так как ответ Yes является ответом по умолчанию, чтобы удалить папку вместе файлами, нажмите клавишу ВВОД . Чтобы удалить папку без подтверждения, используйте параметр -Recurse.

Remove-Item C:\temp\New.Directory -Recurse 

Выполнение элементов

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

Предположим, вы запускаете следующую команду:

Invoke-Item C:\WINDOWS 

Откроется окно проводника, расположенное в C:\Windows , как если бы вы дважды щелкнули папку C:\Windows .

При вызове файла Boot.ini в системе, предшествующей Windows Vista:

Invoke-Item C:\boot.ini 

Если тип файла .ini связан с Блокнотом, файл boot.ini будет открыт в Блокноте.

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Создание в Powershell директорий и файлов с New-Item их перенос и копирование

Создание файлов и папок с Powershell New-Item с копированием и переименованием

Для работы с файлами в Powershell есть около 10 команд. С помощью команды New-Item можно создать файл или папку в Powershell, жесткую и мягкую ссылку. Copy-Item и Move-Item выполняют копирование и перемещение объектов. В этой стать мы рассмотрим все эти операции, а так же удаление директорий и файлов включая сетевые пути, на примерах.

Навигация по посту

  • Создание файлов
    • Создание со вложенными директориями
    • Перезапись
    • Запись данных
    • Мягкие и жесткие ссылки
    • Создание множества файлов
    • Использование масок для копирования
    • Дополнительные параметры фильтрации

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

    В следующем примере мы создадим файл с расширением '.txt':

    New-Item file.txt

    Создание файлов в Powershell New-Item

    По умолчанию файл создается в той директории откуда был запущен сам Powershell. Изменить путь создания файла можно указав путь в Path:

    New-Item -Path 'C:\file.txt'

    Создание файлов по пути с Powershell New-Item

    Каждая папка так же является файлом, но для ее создания в Powershell нужно указывать тип 'Directory' в 'ItemType':

    New-Item -Path 'C:\Dir\' -ItemType Directory

    Создание каталогов с Powershell New-Item

    Создание со вложенными директориями

    Мы можем создать множество папок не указывая дополнительных параметров:

    New-Item -Path 'C:\Dir1\Dir2\Dir3\' -ItemType Directory

    Если мы захотим создать директорию и файл, то получим ошибку:

    New-Item -Path 'C:\Dir1\Dir2\Dir3\file.txt'
    • New-Item : Could not find a part of the path

    Исправить эту ошибку можно указав параметр Force, который создаст весь путь целиком:

    New-Item -Path 'C:\Dir1\Dir2\Dir3\file.txt' -Force

    Создание вложенных папок с Powershell New-Item

    Перезапись

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

    • New-Item : The file 'C:\Dir1\Dir2\Dir3\file.txt' already exists.
    • New-Item : An item with the specified name C:\Dir1\Dir2\Dir3\ already exists.

    Указывая Force - файлы перезаписываются удаляя все содержимое. В случае с папками ничего удалено не будет.

    New-Item -Path 'C:\Dir1\Dir2\Dir3\file.txt' -Force

    Перезапись файлов с Powershell New-Item

    Запись данных

    Еще один из способа перезаписи файлов в Powershell - использование символа перенаправления вывода '>'. Если объект уже существует - он будет перезаписан, иначе будет создан новый файл:

    'test' > file.txt Get-Content .\file.txt

    Запись в файл с Powershell New-Item

    Почти такой же результат будет если добавить в команду параметр Value. Результат следующего примера будет аналогичен предыдущему:

    New-Item -Path 'C:\file.txt' -Value 'test' Get-Content 'C:\file.txt'

    Запись в файл с Powershell New-Item

    Мягкие и жесткие ссылки

    Кроме файлов и директорий в ItemType можно указать следующие типы ссылок:

    • SymbolicLink (мягкая ссылка) - обычный ярлык на папку или директорию;
    • Junction - старый тип ссылок (до Windows Vista);
    • HardLink (жесткая ссылка) - ссылка на объект в файловой системе. Не работает с директориями.

    Каждый файл можно представить как ссылку на объект файловой системы. Ярлык устанавливает связь с именем файла (ссылка на ссылку). При переименовании оригинального файла или его удалении ярлык перестает работать.

    Жесткая ссылка работает иначе. Она ссылается на объект файловой системы, а не на имя. Поэтому при удалении или переименовании оригинального файла эта связь не потеряется. Такие ссылки можно представить как копии оригинальных фалов, но которые не занимают дополнительное место на диске. Жесткие ссылки работают в рамках одного раздела и их нельзя использовать на каталогах. Сам объект файловой системы (файл) будет существовать до последней такой ссылки.

    В следующем примере я создаю жесткую ссылку, где 'old_file.txt' - имя существующего файла, а 'new_link.txt' - имя нового:

    New-Item -Path 'C:\new_link.txt' -ItemType HardLink -Value 'C:\old_file.txt'

    Создание жестких ссылок с Powershell New-Item

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

    Параметр Path может принимать несколько значений. Это значит, что одной командой мы можем создать несколько объектов:

    New-Item -Path 'C:\doc.ini','C:\data.ini'

    Создание нескольких файлов с Powershell New-Item

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

    Вам так же будет интересно:

    Открываем файл и читаем его содержимое с Get-Content в Powershell

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

    В следующем примере, с помощью Powershell, будет скопирован файл 'C:\data.txt' в директорию 'C:\Catalog\':

    Copy-Item -Path 'C:\data.ini' -Destination 'C:\Catalog\'

    Перемещение объектов выполняется так же, но с использованием Move-Item:

    Move-Item -Path 'C:\data.ini' -Destination 'C:\Catalog\'

    Если в перемещаемой папке уже существует файл с этим именем, то мы получим ошибку:

    • Move-Item : Cannot create a file when that file already exists

    Для исправления этой ситуации можно использовать параметр Force или перемещать файл под другим именем. Новое имя можно указать в Destination:

    Move-Item -Path 'C:\oldname.ini' -Destination 'C:\Catalog\newname.ini'

    Каталоги переносятся и копируются так же. Знак '\' в конце Destination говорит, что мы хотим перенести папку внутрь указанной. Отсутствие знака '\' говорит, что это новое имя директории:

    Copy-Item -Path 'C:\folder\' -Destination 'C:\folder2'

    Path - принимает список, а это значит, что мы можем указывать несколько значений через запятую.

    Использование масок для копирования и перемещения

    Во многих командах Powershell доступны следующие специальные символы:

    • * - говорит, что в этом месте есть неизвестное количество неизвестных символов;
    • ? - в этом месте есть один неизвестный символ;
    • [A,B,C] - в этом месте есть одна из следующих букв A,B,C.

    Например так мы скопируем все объекты с расширением 'txt' из одной папки в другую:

    Copy-Item -Path 'D:\*.txt' -Destination 'D:\Catalog\'

    Перемещение сработает так же.

    Предыдущий вариант сработает, если мы ищем файлы в текущей директории. Для копирования в Powershell внутри всех вложенных каталогов нужно использовать рекурсивный поиск, который доступен только в Copy-Item. Рекурсивный поиск устанавливается ключом Recurse. В следующем примере будет найден и скопирован файл hosts. В качестве * я указал один из элементов неизвестного пути:

    Copy-Item -Path 'D:\Windows\System32\drivers\*\host[a,s]' -Destination 'D:\Catalog\' -Recurse

    Копирование файлов с Powershell Copy-Item

    Дополнительные параметры фильтрации

    Если предыдущих примеров, где мы находили файлы с неизвестным название, не достаточно, то можно использовать дополнительные параметры. Они доступны в обеих командах Copy-Item и Move-Item:

    • Include - включает объекты с этим упоминанием;
    • Exclude - работает аналогично предыдущему, но исключает объекты;
    • Filter - включает объекты указанные в этом параметре.

    Я не вижу смысла использовать все параметры описанные выше в одной команде, но в них есть отличия. Filter будет работать быстрее, так как он работает и фильтрует данные в момент их получения. Include и Exclude сработают после получения всех файлов, но каждое значение для них можно указывать через запятую. Для Include и Exclude так же важно указывать Path с '*' в конце, например 'C:\dir\*'.

    Например мы хотим скопировать все объекты с расширением 'txt' и 'jpg'. Это можно сделать так:

    Copy-Item -Path 'D:\*' -Include '*.txt','*.jpg' -Destination 'D:\Catalog\'

    Копирование множества файлов с Powershell Copy-Item

    Я бы не рекомендовал использовать Filter в обеих командах. Более удобный способ - это искать файлы с Get-ChildItem, а затем их копировать и перемещать в нужное место. В следующем примере будут перенесены все объекты формата '.txt' и '.jpg' в каталог Directory:

    # Копирование Get-ChildItem 'D:\Home\*' -Include '*.txt','*.jpg' -Recurse | Copy-Item -Destination 'D:\Catalog\' # Перенос Get-ChildItem 'D:\Home\*' -Include '*.txt','*.jpg' -Recurse | Move-Item -Destination 'D:\Catalog\'

    Вам так же будет интересно:

    Создание и изменение в Powershell NTFS разрешений ACL

    Переименование файлов и директорий

    Для переименовывания в Powershell используется Rename-Item. В следующем примере мы укажем новое имя в параметре NewName:

    Rename-Item -Path 'D:\SomeData.ini' -NewName 'NewData.ini'

    В NewName можно указать путь, но он должен соответствовать источнику. При следующем написании будет ошибка:

    Rename-Item 'D:\SomeData.ini' -NewName 'D:\SomePath\NewData.ini'
    • Rename-Item : Cannot rename the specified target, because it represents a path or device name.

    Для массового переименовывания объектов можно использовать конвейер с 'Get-ChildItem'. Например нам нужно поменять расширения файлов с ''.jpg" на ".png" - это можно сделать так:

    Get-ChildItem -Path 'D:\pictures\*' -Include '*.jpg' | Rename-Item -NewName

    Переименовывание файлов с Powershell Rename-Item

    Удаление

    В следующем примере мы удалим файл:

    Remove-Item -Path 'C:\pictures\1.png'

    Пустые каталоги в Powershell удаляются так же. Если в папке находятся другие файлы будет запрошено разрешение на удаление.

    Remove-Item 'C:\pictures\'

    Удаление файлов с Powershell Remove-Item

    Избежать таких вопросов можно использовав рекурсию в виде параметра Recurse:

    Remove-Item -Path 'C:\pictures\' -Recurse

    Если нужно удалить все файлы внутри каталога, то нужно добавить знак '*'. Если внутри каталога будут находится другие папки с файлами, то запросится подтверждение:

    Remove-Item 'C:\pictures\*'

    У команды есть параметры, описанные ранее, в виде:

    Работа с сетевыми папками и SMB

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

    '\\server\folder\file'

    Он сработает со всеми командами, как для источника так и для назначения:

    # Копирования Copy-Item -Path '\\localhost\C$\*.txt' -Destination '\\localhost\C$\NewCatalog\' # Перенос Move-Item -Path '\\localhost\C$\*.txt' -Destination '\\localhost\C$\NewCatalog\'

    Выполнение команд под другим пользователем

    Любая команда выполняется от имени пользователя, который открыл консоль Powershell. Хоть в командах и присутствует параметр 'Credential', но при его использовании вы будете получать ошибку:

    • The FileSystem provider supports credentials only on the New-PSDrive cmdlet. Perform the operation again without specifying credentials.

    Есть несколько способов обойти эти ограничения использовав методы WMI и CIM. В Powershell так же доступен сервис PSRemoting, который создан для выполнения задач удаленно. Мы можем использовать две команды:

    • New-PSItem - подключение к компьютеру и дальнейшая работы с ним;
    • Invoke-Command - одноразовое выполнение команды.

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

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

    $credential = Get-Credential

    Запрос учетных данных пользователя Powershell Get-Credential

    После заполнения этой переменной нужно будет передать ее в параметр Credential. Примеры по работе с файлами удаленно от другого пользователя:

    # Переменная, которая хранит нужного пользователя $credential = Get-Credential # Удаленное копирование от другого пользователя Invoke-Command -ComputerName 'localhost' -Credential $credential -ScriptBlock < Copy-Item -Path 'C:\*.txt' -Destination 'C:\new_directory\' -Force ># Удаленное создание объекта Invoke-Command -ComputerName 'localhost' -Credential $credential -ScriptBlock

    Работа с файлами и папками

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

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

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

    Get-ChildItem -Path C:\ -Force 

    Команда перечисляет только непосредственно содержащиеся элементы, например команду dir в cmd.exe оболочке UNIX или ls в ней. Чтобы отобразить элементы в вложенной папке, необходимо указать параметр Recurse . Следующая команда выводит список всех элементов на C: диске:

    Get-ChildItem -Path C:\ -Force -Recurse 

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

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

    Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object -FilterScript

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

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

    if (Test-Path -Path $PROFILE)

    Команда Test-Path проверка, существует ли скрипт профиля.

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

    if (Test-Path -Path $PROFILE)

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

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

    Copy-Item C:\temp\test1 -Recurse C:\temp\DeleteMe 

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

    Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination C:\temp\text 

    Вы по-прежнему можете выполнять собственные команды, такие как xcopy.exe и robocopy.exe копировать файлы.

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

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

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

    New-Item -Path 'C:\temp\New Folder' -ItemType Directory 

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

    New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType File 

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

    Удаление всех файлов и папок в папке

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

    Remove-Item -Path C:\temp\DeleteMe 
    Confirm The item at C:\temp\DeleteMe has children and the Recurse parameter wasn't specified. If you continue, all children will be removed with the item. Are you sure you want to continue? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): 

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

    Remove-Item -Path C:\temp\DeleteMe -Recurse 

    Сопоставление локальной папки как диска

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

    New-PSDrive -Name P -Root $env:ProgramFiles -PSProvider FileSystem 

    Как и при использовании сетевых дисков, диски, сопоставленные в PowerShell, сразу же видны оболочке PowerShell. Чтобы создать сопоставленный диск, видимый из проводник, используйте параметр "Сохранить". Однако с сохранением можно использовать только удаленные пути.

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

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

    Get-Content -Path $PROFILE # Load modules and change to the PowerShell-Docs repository folder Import-Module posh-git Set-Location C:\Git\PowerShell-Docs 

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

    PS> (Get-Content -Path $PROFILE).Length 3 

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

    $Computers = Get-Content -Path C:\temp\DomainMembers.txt 

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

    Совместная работа с нами на GitHub

    Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

    Пакетное создание папок в PowerShell и Bash Windows 10

    Если вам нужно создать группу папок в Windows, вместо того чтобы нажимать на ленте Проводника «Создать папку», можете воспользоваться встроенной консолью PowerShell. Этот способ позволит вам сэкономить время. Откройте любым удобным для вас способом PowerShell, а сделать это можно через меню Пуск, через поиск, через диалоговое окошко «Выполнить» и через меню Win + X, предварительно заменив консолью стандартную командную строку.

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

    2016-10-01_13-26-01

    Сама же команда создания папок выглядит следующим образом:

    2016-10-01_13-27-31

    «Расшифруем» значения в круглых скобках. Выражение 1..30 означает, что будет создано 30 папок, %) – это имя папки с переменной $_, на место которой будет подставляться порядковый номер очередного создаваемого каталога.

    2016-10-01_13-28-26

    Для группового создания папок в Windows 10 можно также использовать новый инструмент – консоль Ubuntu Bash. Переход в нужное расположение в Bash выполняется с помощью команды cd, например, cd /mnt/d/Public, где d – буква диска, а создание группы папок командой mkdir dir.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *