Командлет «New-Item» создаёт новый элемент и устанавливает его значение. Типы элементов, которые могут быть созданы, зависят от местоположения элемента. Например, в файловой системе «New-Item» создаёт файлы и папки, в реестре «New-Item» создаёт ключи и записи реестра.
«New-Item» также может устанавливать значение элементов, которые он создаёт. Например, когда он создаёт новый файл, «New-Item» может добавить начальный контент в файл.
Кроме файлов и ключей реестра, New-Item может создавать символические ссылки, подробнее об этом сказано в статье «Создание жёстких и мягких ссылок с помощью PowerShell».
Создание файла в текущей директории
Создание файла с именем testfile1.txt и строкой внутри «Это текстовая строка в файле.» в текущей директории:
New-Item -Path . -Name "testfile1.txt" -ItemType "file" -Value "Это текстовая строка в файле."
Создание нескольких файлов:
New-Item -ItemType "file" -Path "c:ps-testtest.txt", "c:ps-testLogstest.log"
Создание директории
Создание директории в корне диска c: с именем «logfiles»:
New-Item -Path "c:" -Name "logfiles" -ItemType "directory"
Создание директории в другой директории (в папке «c:ps-test» будет создана подпапка «scripts»):
New-Item -ItemType "directory" -Path "c:ps-testscripts"
Создание профиля
New-Item -Path $profile -ItemType "file" -Force
Использование подстановочных символов для создания файлов в нескольких директориях
Проверяем содержимое папки:
Get-ChildItem -Path C:Temp
Пример вывода:
Directory: C:Temp Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 5/15/2019 6:45 AM 1 One d----- 5/15/2019 6:45 AM 1 Two d----- 5/15/2019 6:45 AM 1 Three
Создаём новые файлы:
New-Item -Path * -Name temp.txt -ItemType File | Select-Object FullName
Пример вывода:
FullName -------- C:TempOnetemp.txt C:TempThreetemp.txt C:TempTwotemp.txt
Командлет Get-ChildItem показывает три папки в каталоге «C:Temp». Используя подстановочные знаки, командлет New-Item создаёт файл` temp.txt` во всех каталогах текущего каталога. Командлет New-Item выводит созданные вами элементы, которые передаются в «Select-Object» для проверки путей вновь создаваемых файлов.
Создание символической ссылки на файл или папку
$link = New-Item -ItemType SymbolicLink -Path .link -Target .Notice.txt $link | Select-Object LinkType, Target
Вывод:
LinkType Target -------- ------ SymbolicLink {.Notice.txt}
В этом примере Target является псевдонимом для параметра Value. Цель символической ссылки может быть относительным путём. До PowerShell v6.2 цель должна быть полным путём.
Перезапись существующих папок
Использование параметра -Force в попытке пересоздать папки:
New-Item -Path .TestFolder -ItemType Directory New-Item -Path .TestFolderTestFile.txt -ItemType File New-Item -Path .TestFolder -ItemType Directory -Force
Вывод:
Directory: C: Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 5/1/2020 8:03 AM TestFolder
Проверка содержимого папки:
Get-ChildItem .TestFolder
Вывод:
Directory: C:TestFolder Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 5/1/2020 8:03 AM 0 TestFile.txt
Использование параметра -Force для перезаписи существующих файлов
Создание файла:
New-Item ./TestFile.txt -ItemType File -Value 'This is just a test file'
Вывод:
Directory: C:SourceTest Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 5/1/2020 8:32 AM 24 TestFile.txt
Команда для перезаписи:
New-Item ./TestFile.txt -ItemType File -Force
Вывод:
Directory: C:SourceTest Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 5/1/2020 8:32 AM 0 TestFile.txt
Примечание: при использовании New-Item с ключом -Force для создания разделов реестра команда будет вести себя так же, как и при перезаписи файла. Если раздел реестра уже существует, ключ и все свойства и значения будут перезаписаны пустым разделом реестра.
Связанные статьи:
- Создание жёстких и мягких ссылок с помощью PowerShell (100%)
- Как включить удалённый рабочий стол RDP в Windows Server 2019 (55.6%)
- Как управлять службами в Windows (55.6%)
- Как в PowerShell узнать, какой процесс или программа блокируют файл (55.6%)
- Как переименовать файл или папку в PowerShell (55.6%)
- Масштабирование и панорамирование видео в ActivePresenter (RANDOM — 50%)
Для работы с файлами в 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:Dir1Dir2Dir3' -ItemType Directory
Если мы захотим создать директорию и файл, то получим ошибку:
New-Item -Path 'C:Dir1Dir2Dir3file.txt'
- New-Item : Could not find a part of the path
Исправить эту ошибку можно указав параметр Force, который создаст весь путь целиком:
New-Item -Path 'C:Dir1Dir2Dir3file.txt' -Force
Перезапись
Ключ Force не только создает родительские объекты в виде папок, но и перезаписывает файлы. Если не указан параметр Force, а файл или папка уже существует — вы получите ошибки:
- New-Item : The file ‘C:Dir1Dir2Dir3file.txt’ already exists.
- New-Item : An item with the specified name C:Dir1Dir2Dir3 already exists.
Указывая Force — файлы перезаписываются удаляя все содержимое. В случае с папками ничего удалено не будет.
New-Item -Path 'C:Dir1Dir2Dir3file.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 тем самым избегая ошибок.
Копирование и перемещение папок и файлов
В следующем примере, с помощью 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:Catalognewname.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:WindowsSystem32drivers*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 используется Rename-Item. В следующем примере мы укажем новое имя в параметре NewName:
Rename-Item -Path 'D:SomeData.ini' -NewName 'NewData.ini'
В NewName можно указать путь, но он должен соответствовать источнику. При следующем написании будет ошибка:
Rename-Item 'D:SomeData.ini' -NewName 'D:SomePathNewData.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 {$PSItem.Name -replace '.jpg','.png'}
Удаление
В следующем примере мы удалим файл:
Remove-Item -Path 'C:pictures1.png'
Пустые каталоги в Powershell удаляются так же. Если в папке находятся другие файлы будет запрошено разрешение на удаление.
Remove-Item 'C:pictures'
Избежать таких вопросов можно использовав рекурсию в виде параметра Recurse:
Remove-Item -Path 'C:pictures' -Recurse
Если нужно удалить все файлы внутри каталога, то нужно добавить знак ‘*’. Если внутри каталога будут находится другие папки с файлами, то запросится подтверждение:
Remove-Item 'C:pictures*'
У команды есть параметры, описанные ранее, в виде:
- Include
- Exclude
- Filter
Работа с сетевыми папками и SMB
Для копирования и переноса данных по сети нужно использовать следующий формат:
'\serverfolderfile'
Он сработает со всеми командами, как для источника так и для назначения:
# Копирования
Copy-Item -Path '\localhostC$*.txt' -Destination '\localhostC$NewCatalog'
# Перенос
Move-Item -Path '\localhostC$*.txt' -Destination '\localhostC$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 {
New-Item -Path 'C:SomeData.txt'
}
…
Теги:
#powershell
description | ms.date | title |
---|---|---|
This article discusses how to deal with specific file and folder manipulation tasks using PowerShell. |
12/08/2022 |
Working with files and folders |
Navigating through PowerShell drives and manipulating the items on them is similar to manipulating
files and folders on Windows disk drives. This article discusses how to deal with specific file and
folder manipulation tasks using PowerShell.
Listing all files and folders within a folder
You can get all items directly within a folder using Get-ChildItem
. Add the optional Force
parameter to display hidden or system items. For example, this command displays the direct contents
of PowerShell Drive C:
.
Get-ChildItem -Path C: -Force
The command lists only the directly contained items, much like using the dir
command in cmd.exe
or ls
in a UNIX shell. To show items in subfolder, you need to specify the Recurse parameter.
The following command lists everything on the C:
drive:
Get-ChildItem -Path C: -Force -Recurse
Get-ChildItem
can filter items with its Path, Filter, Include, and Exclude
parameters, but those are typically based only on name. You can perform complex filtering based on
other properties of items using Where-Object
.
The following command finds all executables within the Program Files folder that were last modified
after October 1, 2005 and that are neither smaller than 1 megabyte nor larger than 10 megabytes:
Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object -FilterScript { ($_.LastWriteTime -gt '2005-10-01') -and ($_.Length -ge 1mb) -and ($_.Length -le 10mb) }
Copying files and folders
Copying is done with Copy-Item
. The following command backs up C:boot.ini
to C:boot.bak
:
Copy-Item -Path C:boot.ini -Destination C:boot.bak
If the destination file already exists, the copy attempt fails. To overwrite a pre-existing
destination, use the Force parameter:
Copy-Item -Path C:boot.ini -Destination C:boot.bak -Force
This command works even when the destination is read-only.
Folder copying works the same way. This command copies the folder C:temptest1
to the new folder
C:tempDeleteMe
recursively:
Copy-Item C:temptest1 -Recurse C:tempDeleteMe
You can also copy a selection of items. The following command copies all .txt
files contained
anywhere in C:data
to C:temptext
:
Copy-Item -Filter *.txt -Path c:data -Recurse -Destination C:temptext
You can still use other tools to perform file system copies. XCOPY, ROBOCOPY, and COM objects, such
as the Scripting.FileSystemObject, all work in PowerShell. For example, you can use the Windows
Script Host Scripting.FileSystem COM class to back up C:boot.ini
to C:boot.bak
:
(New-Object -ComObject Scripting.FileSystemObject).CopyFile('C:boot.ini', 'C:boot.bak')
Creating files and folders
Creating new items works the same on all PowerShell providers. If a PowerShell provider has more
than one type of item—for example, the FileSystem PowerShell provider distinguishes between
directories and files—you need to specify the item type.
This command creates a new folder C:tempNew Folder
:
New-Item -Path 'C:tempNew Folder' -ItemType Directory
This command creates a new empty file C:tempNew Folderfile.txt
New-Item -Path 'C:tempNew Folderfile.txt' -ItemType File
[!IMPORTANT]
When using the Force switch with theNew-Item
command to create a folder, and the folder
already exists, it won’t overwrite or replace the folder. It will simply return the existing
folder object. However, if you useNew-Item -Force
on a file that already exists, the file
is overwritten.
Removing all files and folders within a folder
You can remove contained items using Remove-Item
, but you will be prompted to confirm the
removal if the item contains anything else. For example, if you attempt to delete the folder
C:tempDeleteMe
that contains other items, PowerShell prompts you for confirmation before
deleting the folder:
Remove-Item -Path C:tempDeleteMe
Confirm
The item at C:tempDeleteMe 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"):
If you don’t want to be prompted for each contained item, specify the Recurse parameter:
Remove-Item -Path C:tempDeleteMe -Recurse
Mapping a local folder as a drive
You can also map a local folder, using the New-PSDrive
command. The following command creates a
local drive P:
rooted in the local Program Files directory, visible only from the PowerShell
session:
New-PSDrive -Name P -Root $env:ProgramFiles -PSProvider FileSystem
Just as with network drives, drives mapped within PowerShell are immediately visible to the
PowerShell shell. To create a mapped drive visible from File Explorer, use the Persist
parameter. However, only remote paths can be used with Persist.
Reading a text file into an array
One of the more common storage formats for text data is in a file with separate lines treated as
distinct data elements. The Get-Content
cmdlet can be used to read an entire file in one step,
as shown here:
PS> Get-Content -Path C:boot.ini
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional"
/noexecute=AlwaysOff /fastdetect
multi(0)disk(0)rdisk(0)partition(1)WINDOWS=" Microsoft Windows XP Professional
with Data Execution Prevention" /noexecute=optin /fastdetect
Get-Content
treats the data read from the file as an array, with one element per line of file
content. You can confirm this by checking the Length of the returned content:
PS> (Get-Content -Path C:boot.ini).Length
6
This command is most useful for getting lists of information into PowerShell. For example, you might
store a list of computer names or IP addresses in the file C:tempdomainMembers.txt
, with one
name on each line of the file. You can use Get-Content
to retrieve the file contents and put them
in the variable $Computers
:
$Computers = Get-Content -Path C:tempDomainMembers.txt
$Computers
is now an array containing a computer name in each element.
PowerShell — это оболочка или язык сценариев, разработанный Microsoft для автоматизации различных задач; например, администраторы используют этот инструмент для автоматизации административных задач. Более того, как язык, он используется для разработки и развертывания решений в гибких средах, непрерывной интеграции и непрерывном развертывании. В дистрибутивах на основе Linux сопоставимой оболочкой является Bash; и большинство команд Bash выполняются в PowerShell. Командная строка Windows (CMD) — это оболочка Windows по умолчанию, но теперь в последних сборках Windows 10 оболочка по умолчанию заменена на PowerShell.
PowerShell можно использовать для выполнения различных операций Windows, таких как создание папок, каталогов. Точно так же с текстовыми файлами можно работать с помощью PowerShell; мы можем редактировать текстовые файлы, чтобы добавлять или удалять содержимое из текстовых файлов.
Мы продемонстрируем различные способы создания и редактирования текстовых файлов с помощью PowerShell:
Как создавать и редактировать файлы с помощью PowerShell
Следующие шаги позволят вам создавать текстовые файлы с помощью PowerShell; кроме того, в этом разделе также рассматриваются различные способы редактирования текстовых файлов.
Шаг 1. Как создать текстовый файл с помощью PowerShell
При создании нового текстового файла в PowerShell следует учитывать две возможности:
Возможность 1: Создайте текстовый файл в текущем рабочем каталоге (PWD): для этого выполните следующую команду, чтобы создать новый файл: в приведенном ниже порядке будет создан текстовый файл с именем «file1”В текущем каталоге:
> Новый элемент file1.txt
Возможность 2: Если вы хотите получить новый файл в другой папке, вы должны указать полный путь; и убедитесь, что целевой каталог существует; В противном случае вы не сможете вносить изменения в неизвестный каталог или диск. Приведенная ниже команда создаст новый текстовый файл «файл2«В целевом каталоге диска»E“.
> Новый элемент E: MS file2.txt
После того, как вы создали текстовый файл, вы готовы перейти к шагу 2.
Шаг 2: Как писать внутри текстовых файлов с помощью PowerShell
Замечено, что у каждого трека есть свои плюсы и минусы, поэтому пользователи должны выбирать в соответствии со своими требованиями. Ниже приведены три метода, которые вы можете использовать для записи в текстовый файл:
Замена данных: Если вы хотите заменить существующее содержимое текстового файла новым, вы должны пойти на Способ 1.
Добавление содержимого: Однако, если вы хотите добавить несколько строк к существующему содержимому, вы должны следовать Способ 2.
Использование редактора nano для редактирования текстовых файлов в PowerShell: Если вы хотите добавить или удалить содержимое текстового файла несколько раз, рекомендуется учитывать Способ 3.
Способ 1:Замена данных
Прежде чем приступить к настройке содержимого, сначала; прочтите файл, используя следующую команду:
> Get-Content file1.txt
После выполнения результат показан ниже:
Если вы хотите написать в текстовом файле, выполните приведенную ниже команду, чтобы заменить текст в file1:
> Set-Content file1.txt ‘Привет, содержимое успешно заменено’
После успешного выполнения вашей команды прочтите содержимое вашего файла, чтобы проверить, был ли текст заменен или нет. Приведенная ниже команда распечатает содержимое «file1.txt”
> Get-Content file1.txt
Вы заметите, что текст был заменен:
Метод 2: добавление содержимого
В отличие от первого метода, второй метод добавит содержимое к существующим данным в файле; предыдущее содержимое также будет доступно в файле:
Чтобы добавить текст, выполните следующую команду: команда, приведенная ниже, добавит текст, записанный в одинарных кавычках, в file1.txt.
> Add-content file1.txt ‘вы добавили текст’
После выполнения вышеуказанной команды проверьте, добавлен ли текст; для этого выполните следующую команду, чтобы проверить. Вы обнаружите, что строка, записанная в одинарных кавычках, теперь добавляется как новая строка в file1.txt.
> Get-Content file1.txt
Метод 3: использование редактора nano для редактирования текстовых файлов в PowerShell
Другой способ внести изменения в текстовые файлы — использовать значок «нано»Редактор в PowerShell:
Значок «нано»Редактор недоступен для доступа в PowerShell; вы должны установить пакет. Перед этой установкой вы должны убедиться, что используете PowerShell с правами администратора; в противном случае установка не будет успешной. После запуска PowerShell от имени администратора; вы можете продолжить дальше:
Во-первых, вы должны установить «шоколадный» упаковка; «шоколадный»Поддерживает редактор nano. Итак, необходимо установить его перед добавлением редактора nano, и вы можете установить его с помощью команды, приведенной ниже:
> Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System. Сеть. WebClient) .DownloadString (‘ https://chocolatey.org/install.ps1’))
После успешной установки «шоколад» упаковка; теперь установите «нано»С помощью команды, приведенной ниже:
> choco install nano
Во время установки будет предложено нажать «Y”, Чтобы продолжить установку:
После успешного выполнения вышеуказанных команд перезапустите PowerShell:
После этого откройте целевой каталог вашего текстового файла в PowerShell: как только вы дойдете до каталога; проверьте наличие текстового файла; для этого выполните в PowerShell следующую команду:
> ls
После этого вы можете редактировать текстовый файл с помощью кнопки «нано»С помощью команды, приведенной ниже.
> нано файл1.txt
После выполнения вы обнаружите, что ваш текстовый файл будет открыт в редакторе, где вы можете добавить, удалить или заменить содержимое файла.
Редактор Nano позволяет редактировать, удалять и добавлять текст так же, как и другие текстовые редакторы. Например, если вы хотите добавить текст, начните писать после существующего текста. После добавления нажмите «Ctrl + X»Выйти из редактора; после этого действия нажмите «Y», Чтобы сохранить изменения, или нажмите«N», Чтобы отменить изменения. Более того, вы можете удалить существующий контент и сохранить изменения, как описано выше.
Управление файлами — важная часть повседневной работы. Вам нужно будет управлять доступом к общим папкам, регулярно выполнять их резервное копирование, а также выполнять другие стандартные операции с файлами и папками в системе Windows. Хорошей новостью является то, что вы можете легко управлять файлами с помощью PowerShell.
Фактически, этот инструмент может сократить объем ручной работы, связанной с управлением файлами. В этой статье TipsMake сосредоточится на том, как создавать файлы и папки в PowerShell.
- Создать файл
- Создайте файл после двойной проверки имени файла
- Перезаписать существующий файл
- Записать данные в новый файл
- Создать каталог
- Использовать исходную оболочку Windows PowerShell
- Использование класса .NET Framework
- Используйте объект
- Используйте функцию md
Создать файл
Чтобы создать новый файл, используйте командлет New. Обычно этот командлет используется для создания любого типа объекта в PowerShell. Все, что вам нужно сделать, это указать тип объекта, который вы хотите создать в этом командлете.
Вот как вы можете создавать файлы или папки в PowerShell с помощью команды New-Item.
New-Item -Path ‘SharedTestFoldertestfile1.txt’ — Файл типа элемента
Приведенная выше команда создаст новый файл с именем testfile1.txt. Здесь Itemtype — это файл, поэтому эта команда создаст его за вас, а содержимое оставит пустым. Другими словами, эта команда создаст для вас пустой текстовый файл.
Создайте файл после двойной проверки имени файла
Теперь, если у вас уже есть файл с таким именем, он будет перезаписан. Поэтому не забудьте дважды проверить имя файла перед созданием. Другой вариант — сделать так, чтобы сценарий автоматически проверял, существует ли другой файл с тем же именем, и будет создавать этот файл только в том случае, если там нет другого файла.
Пример такого сценария показан ниже.
$ filenames = Get-ChildItem SharedTestFolder * .txt | выберите -expand fullname $ filenames -match «testfile1.txt» If ($ filenames -eq ‘False’) {New -Item -Path ‘SharedTestFoldertestfile1.txt’ — ItemType File} else {exit}
Вышеупомянутый сценарий проверит, существует ли файл с таким же именем в том же каталоге, и если это так, он выйдет. В противном случае будет создан новый файл.
Перезаписать существующий файл
Ранее в статье было показано, как избежать перезаписи существующего файла. Но иногда вам нужно перезаписать файл, и это можно сделать с помощью параметра Force.
New-Item -Path ‘SharedTestFoldertestfile1.txt’ — Файл ItemType -Force
Эта команда заставит создать файл и перезаписать существующий, потому что вы сообщаете системе, что знаете, что делаете, и не нуждаетесь в предупреждении или запросе о перезаписанном файле. Хотя это звучит как хорошая идея, всегда есть вероятность, что вы получите ошибку и можете потерять данные, содержащиеся в существующих файлах. Вот почему не рекомендуется злоупотреблять этим параметром преобразования, а если это необходимо, будьте очень осторожны.
Записать данные в новый файл
В большинстве случаев вам не нужен пустой файл, потому что это бессмысленно. Вместо этого вам нужен файл, содержащий данные, и лучше всего иметь возможность регулярно добавлять в него контент.
Хорошей новостью является то, что PowerShell имеет встроенную команду Out-File для создания файлов и записи в них данных во время создания.
$ content = «Привет, мир! Это первая строка моего файла.» | out-file -filepath C: temptestfile1.txt
Это создаст файл с именем textfile1.txt в каталоге C: Temp, и он будет содержать ваше сообщение.
Записать данные в новый файл
Таким образом, существуют разные способы создания файла, учитывающие особенности, о которых вы должны помнить.
Далее мы перейдем к разделу создания каталога.
Создать каталог
Существует 4 способа создания папок в PowerShell, и выбор зависит от ваших потребностей в программировании.
Использовать исходную оболочку Windows PowerShell
Возможно, самый простой способ создать каталог — использовать исходную команду Windows PowerShell. Вы также можете использовать ту же команду, что и при создании файлов для создания папок, и, как вы и предполагали, просто изменить значение ItemType:
New-Item -Path ‘SharedTestFolder’ — Каталог ItemType
Эта команда возвращает объект с именем DirectoryInfo, который имеет режим каталога, время последней записи и длину имени.
Вы даже можете опустить параметр Path и указать имя пути напрямую. Результат будет таким же.
Новый элемент SharedTestFolder — каталог ItemType
Обязательно укажите значение ItemType.
Использование класса .NET Framework
Следующий вариант — создать каталог, используя пространство имен system.io и статический метод CreatDirectory в классе Directory.
Вы можете использовать следующую команду:
[system.io.directory]:: CreateDirectory («SharedTestFolder»)
Предупреждение. Это класс .NET Framework, и его использование в среде Windows PowerShell не рекомендуется. Выбор за вами, и эта команда поможет создать каталог. Как и в предыдущем варианте, команда вернет объект DirectoryInfo со всеми деталями каталога.
Используйте объект
Третий способ — использовать метод Object из Scripting.FileSystemObject. Обратите внимание, что это тот же метод, который используется в VBScript, преимущество которого заключается в том, что его можно быстро и относительно легко использовать для создания каталогов.
$ newdirectory = новый-объект -ComObject scripting.filesystemobject $ newdirectory.CreateFolder (‘SharedTestFolder’)
Эта команда вернет объект, содержащий путь к каталогу и другую информацию.
Используйте функцию md
Последний вариант — создать каталог с помощью функции md. Многие люди находят это удобным, потому что они часто использовали его в командной строке для создания разных папок. Кроме того, синтаксис довольно прост, и вам не нужно упоминать ItemType, потому что одного md достаточно, чтобы сообщить системе, что вы уже создаете каталог.
Используемая команда:
md SharedTestFolder
Эта команда также возвращает объект DirectoryInfo.