Прямое управление элементами
Элементы, отображаемые на дисках 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 есть около 10 команд. С помощью команды New-Item можно создать файл или папку в Powershell, жесткую и мягкую ссылку. Copy-Item и Move-Item выполняют копирование и перемещение объектов. В этой стать мы рассмотрим все эти операции, а так же удаление директорий и файлов включая сетевые пути, на примерах.
Навигация по посту
- Создание файлов
- Создание со вложенными директориями
- Перезапись
- Запись данных
- Мягкие и жесткие ссылки
- Создание множества файлов
- Использование масок для копирования
- Дополнительные параметры фильтрации
Создание файлов
В следующем примере мы создадим файл с расширением '.txt':
New-Item file.txt
По умолчанию файл создается в той директории откуда был запущен сам Powershell. Изменить путь создания файла можно указав путь в Path:
New-Item -Path 'C:\file.txt'
Каждая папка так же является файлом, но для ее создания в Powershell нужно указывать тип 'Directory' в 'ItemType':
New-Item -Path 'C:\Dir\' -ItemType Directory
Создание со вложенными директориями
Мы можем создать множество папок не указывая дополнительных параметров:
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
Перезапись
Ключ 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 - использование символа перенаправления вывода '>'. Если объект уже существует - он будет перезаписан, иначе будет создан новый файл:
'test' > file.txt Get-Content .\file.txt
Почти такой же результат будет если добавить в команду параметр Value. Результат следующего примера будет аналогичен предыдущему:
New-Item -Path 'C:\file.txt' -Value 'test' Get-Content 'C:\file.txt'
Мягкие и жесткие ссылки
Кроме файлов и директорий в 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'
Создание множества файлов и директорий
Параметр Path может принимать несколько значений. Это значит, что одной командой мы можем создать несколько объектов:
New-Item -Path 'C:\doc.ini','C:\data.ini'
Можно использовать сочетания директорий и файлов, добавляя ключ 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
Дополнительные параметры фильтрации
Если предыдущих примеров, где мы находили файлы с неизвестным название, не достаточно, то можно использовать дополнительные параметры. Они доступны в обеих командах 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\'
Я бы не рекомендовал использовать 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

Удаление
В следующем примере мы удалим файл:
Remove-Item -Path 'C:\pictures\1.png'Пустые каталоги в Powershell удаляются так же. Если в папке находятся другие файлы будет запрошено разрешение на удаление.
Remove-Item 'C:\pictures\'
Избежать таких вопросов можно использовав рекурсию в виде параметра 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
После заполнения этой переменной нужно будет передать ее в параметр 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\DeleteMeConfirm 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-DocsGet-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.

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

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

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