Cómo crear un archivo en PowerShell
En PowerShell, hay un par de formas de crear un archivo. El método más común es utilizar el cmdlet new-item. Este cmdlet no sólo se puede utilizar para crear archivos sino también carpetas. Pero lo nuevo no siempre es la mejor opción.
Otras opciones para crear un archivo en PowerShell son por ejemplo redirigir los resultados de un cmdlet a un archivo, o podemos usar Set-Content para crear un archivo y almacenar los resultados.
En este artículo, veremos las diferentes opciones y le daré algunos consejos sobre cómo crear archivos.
Crear archivo en PowerShell
Comencemos con lo básico, para crear un nuevo archivo en PowerShell usaremos el cmdlet New-Item. Este cmdlet se puede utilizar para crear archivos, carpetas o enlaces simbólicos. Nos centraremos en la creación de un archivo en este artículo.
Para crear un archivo vacío, al menos especificaremos el nombre del archivo y estableceremos la propiedad -ItemType en file. Si no especifica la ruta donde desea crear el archivo, el archivo se creará en el directorio actual.
New-Item -Name "test01.txt" -ItemType File
# Create a file in c:\temp
New-Item -Path "c:\temp" -Name "test01.txt" -ItemType File
El parámetro de ruta también acepta comodines. Ahora podrías pensar, ¿por qué necesitaría un comodín en la ruta, pero esto te permite, por ejemplo, crear un nuevo archivo en cada subcarpeta de la ruta?
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.txtEl cmdlet de elemento nuevo no creará un archivo si ya existe. En algunos casos, es posible que desee sobrescribir el archivo o asegurarse de que el script continúe sin generar ningún error. Si desea sobrescribir un archivo si ya existe, puede utilizar el parámetro -force.
Esto sobrescribirá el archivo si existe, lo que también significa que se perderá cualquier contenido del archivo:
New-Item -Path "c:\temp" -Name "test01.txt" -ItemType File -ForceOtra opción es comprobar si el archivo existe, esto lo podemos hacer con el cmdlet 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
}Como puede ver en el ejemplo anterior, en realidad no tenemos que especificar el nombre del archivo, también podemos incluirlo en la ruta del archivo. El cmdlet New-Item seguirá creando el archivo requerido.
Crear un archivo con contenido
Como se mencionó al principio, existen otros métodos para crear un archivo en PowerShell. Estos métodos se pueden utilizar cuando no solo desea crear el archivo sino que también desea agregarle contenido. Por ejemplo, cuando recupera datos con un cmdlet y desea almacenarlos en un archivo de texto, podemos usar el cmdlet Out-File o usar un operador de redirección.
El cmdlet Out-File redirigirá los resultados del cmdlet al archivo especificado. Si el archivo no existe, lo creará. Digamos que queremos obtener todos los usuarios locales de nuestra computadora y almacenarlos en un archivo de texto:
Get-LocalUser | Select name | Out-File c:\temp\localusers.txt
# Or with the redirect operator
Get-LocalUser | Select name > c:\temp\localusers.txtLea más sobre el cmdlet Out-File y cómo agregar contenido, por ejemplo, en este artículo.
También podemos crear un archivo y guardar el contenido con el cmdlet New-Item o el cmdlet Set-Content. Ambos cmdlets funcionan prácticamente igual, solo el cmdlet Set-Content reemplazará el contenido cuando el archivo ya existe, mientras que New-Item arrojará un error cuando el archivo ya existe.
# 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"Crear múltiples archivos
Para crear varios archivos tenemos dos opciones: podemos especificar cada archivo dentro del parámetro ruta o usar un bucle ForEach. Si solo necesita crear dos o tres archivos, puede especificarlos en el parámetro de ruta:
New-Item -Path "c:\temp\test01.txt","c:\temp\test02.txt" -ItemType FilePero una opción más legible es usar un pequeño bucle ForEach y una matriz con los archivos que deseas crear. De esta manera, es más fácil agregar o cambiar archivos en la matriz y también agregarle algo de lógica cuando sea necesario.
# 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"
}Otra opción, cuando no desea especificar los nombres de los archivos, es iterar sobre un índice y crear algunos archivos de texto usando el número de índice:
1..10 | ForEach-Object {
New-Item -Path "C:\temp\" -Name "$_.txt" -ItemType file
}Crear archivos especiales
Hasta ahora sólo hemos creado archivos TXT. Pero con PowerShell, no estamos limitados únicamente a archivos TXT. También podremos crear archivos CSV, JSON, HTML o XML por ejemplo. Para hacer esto necesitaremos asegurarnos de que el contenido del archivo esté convertido al formato correcto.
Básicamente, puede crear cualquier tipo de archivo con el cmdlet New-Item. Si, por ejemplo, establece el tipo de archivo en
Esto significa que si desea crear un archivo CSV, por ejemplo, deberá utilizar el cmdlet Export-CSV. O para un archivo XML, necesitará utilizar el cmdlet Export-CliXml:
$xmlData | Export-CliXml -Path "c:\temp\test.xml" -Encoding UTF8Concluyendo
Crear archivos en PowerShell es bastante fácil con el cmdlet de elemento nuevo. Asegúrese de que el contenido de su archivo coincida con el tipo de archivo utilizando los cmdlets correctos para almacenar los datos dentro del archivo.
Espero que este artículo te haya resultado útil. Si tienes alguna pregunta, deja un comentario a continuación.
