Как создать файл в PowerShell
В PowerShell есть несколько способов создать файл. Наиболее распространенный метод - использовать командлет new-item. Этот командлет можно использовать не только для создания файлов, но и папок. Однако new-item не всегда является наилучшим вариантом.
Другие варианты создания файла в PowerShell, например, это перенаправление результатов cmdlet в файл, или мы можем использовать команду Set-Content для создания файла и хранения результатов.
В этой статье мы рассмотрим различные варианты, и я дам вам несколько советов по созданию файлов.
PowerShell создать файл
Давайте начнем с основ: чтобы создать новый файл в PowerShell, мы будем использовать командлет New-Item. Этот командлет можно использовать для создания файлов, папок или символических ссылок. В этой статье мы сосредоточимся на создании файла.
Для создания пустого файла мы по крайней мере укажем имя файла и установим свойство -ItemType в значение файл. Если вы не укажете путь, где хотите создать файл, то файл будет создан в текущем каталоге.
New-Item -Name "test01.txt" -ItemType File
Create a file in c:\temp
New-Item -Path "c:\temp" -Name "test01.txt" -ItemType File
Параметр пути также принимает подстановочные знаки. Теперь вы можете подумать, зачем мне нужен подстановочный знак в пути, но это позволяет вам, например, создать новый файл в каждой подпапке пути:
New-Item -Path C:\Temp\* -Name temp.txt -ItemType File
Result
C:\Temp\One\temp.txt
C:\Temp\Three\temp.txt
C:\Temp\Two\temp.txtКоманда new-item не создаст файл, если он уже существует. В некоторых случаях вы можете просто захотеть перезаписать файл или убедиться, что ваш скрипт продолжает работать без ошибок. Если вы хотите перезаписать файл, если он уже существует, вы можете использовать параметр -force.
Это перезапишет файл, если он существует, что также означает, что любое содержимое в файле будет потеряно:
New-Item -Path "c:\temp" -Name "test01.txt" -ItemType File -ForceДругой вариант - проверить, существует ли файл, мы можем сделать это с помощью команды Test-Path:
$path = "c:\temp\test1.txt"
Create the folder is the path doesn't exist
If (-not(test-path -Path $path)) {
New-Item -Path $path -ItemType File
}Как вы можете видеть в приведенном выше примере, на самом деле нам не нужно указывать имя файла, мы также можем включить его в путь к файлу. Команда New-Item тогда все равно создаст необходимый файл.
Создайте файл с содержимым
Как упоминалось в начале, есть и другие методы создания файла в PowerShell. Эти методы можно использовать, когда вы хотите не только создать файл, но и добавить в него содержимое. Например, когда вы извлекаете данные с помощью cmdlet и хотите сохранить их в текстовом файле, то мы можем использовать cmdlet Out-File или использовать оператор перенаправления.
Команда Out-File перенаправит результаты команды в указанный файл. Если файл не существует, он будет создан. Допустим, мы хотим получить всех локальных пользователей с нашего компьютера и сохранить их в текстовом файле:
Get-LocalUser | Select name | Out-File c:\temp\localusers.txt
Or with the redirect operator
Get-LocalUser | Select name > c:\temp\localusers.txtУзнайте больше о Out-File cmdlet и о том, как, например, добавлять содержимое в этой статье.
Мы также можем создать файл и сохранить содержимое с помощью командлета New-Item или командлета Set-Content. Оба командлета работают практически одинаково, только командлет Set-Content заменит содержание, если файл уже существует, в то время как New-Item выдаст ошибку, если файл уже существует.
Create a file and set the content
Set-Content -Path c:\temp\newFile.txt -Value "New file with Content"
Or use New-Item to create the file with content
New-Item -Path c:\temp\ -name "newFile.txt" -Value "New file with Content"Создание нескольких файлов
Чтобы создать несколько файлов, у нас есть два варианта: мы можем либо указать каждый файл внутри параметра path, либо использовать цикл ForEach. Если вам нужно создать только два или три файла, вы можете просто указать их в параметре path:
New-Item -Path "c:\temp\test01.txt","c:\temp\test02.txt" -ItemType FileНо более читаемым вариантом является использование небольшого цикла ForEach и массива с файлами, которые вы хотите создать. Таким образом, легче добавлять или изменять файлы в массиве, а также добавлять некоторую логику, когда это необходимо.
Specify the directory where you want to create the files
$targetDirectory = "C:\temp\"
Create an array of file names
$fileNames = @("File1.txt", "File2.txt", "File3.txt")
Loop through each file name and create a file with content
foreach ($fileName in $fileNames) {
New-Item -Path $targetDirectory -Name $filename -ItemType file
$filePath = Join-Path -Path $targetDirectory -ChildPath $fileName
Write-Host "Created file: $filePath"
}Еще один вариант, когда вы не хотите указывать имена файлов, - это пройти по индексу и создать несколько текстовых файлов, используя номер индекса:
1..10 | ForEach-Object {
New-Item -Path "C:\temp\" -Name "$_.txt" -ItemType file
}Создание специальных файлов
До настоящего времени мы создали только TXT-файлы. Но с помощью PowerShell мы не ограничены только TXT-файлами. Мы также можем создавать, например, CSV, JSON, HTML или XML файлы. Для этого нам нужно убедиться, что содержимое файла преобразовано в правильный формат.
В основном, вы можете создать любой тип файла с помощью команды New-Item. Если вы, например, зададите тип файла как .pdf, то вы получите файл “PDF” в указанной директории. Единственная проблема заключается в том, что вы не можете его открыть, потому что содержимое файла не в правильном формате.
Это значит, что если вы хотите создать файл CSV, вам нужно будет использовать cmdlet Export-CSV. А для файла XML вам нужно будет использовать cmdlet Export-CliXml:
$xmlData | Export-CliXml -Path "c:\temp\test.xml" -Encoding UTF8Заключение
Создание файлов в PowerShell довольно просто с помощью команды new-item. Убедитесь, что содержимое вашего файла соответствует типу файла, используя правильные команды для хранения данных внутри файла.
Надеюсь, вы нашли эту статью полезной. Если у вас есть вопросы, просто оставьте комментарий ниже.
