Pasar varios parámetros para que funcionen en PowerShell
La función, en general, contiene código para realizar determinadas tareas y devolver un valor. Las funciones se utilizan principalmente para reutilizar la funcionalidad.
En PowerShell, la función contiene una sola línea o un script para realizar una tarea, podemos manejar la funcionalidad en función pasando múltiples parámetros para funcionar en PowerShell.
En este artículo, analizaremos cómo pasar múltiples parámetros a una función en PowerShell con ejemplos.
PowerShell: pasar varios parámetros para funcionar
En la función de PowerShell, podemos pasar múltiples conjuntos de parámetros con diferentes tipos de datos. Estos parámetros pueden ser obligatorios u opcionales.
Veremos, por ejemplo, cómo crear una carpeta y un archivo en una ubicación específica usando la función PowerShell.
Declaración del problema: Cree una función para crear un directorio si no existe.
La función debe aceptar múltiples parámetros como obligatorios.
En la función, debe verificar si existe una carpeta o no y crear un directorio usando el parámetro Nombre de carpeta especificado.
La función debe verificar si existe un archivo y crear un archivo nuevo si no utiliza el parámetro de nombre de archivo proporcionado.
Nombre de la función - Crear directorio
Múltiples parámetros:
FolderName: tipo de datos de cadena, contiene la ruta del nombre de la carpeta
FileName: tipo de datos de cadena, parámetro obligatorio, contiene la ruta del nombre del archivo
TempFile: tipo de datos de cadena, parámetro opcional, contiene la ruta del nombre del archivo
Solución:
Consulte el script de PowerShell a continuación para conocer el enunciado del problema anterior para pasar múltiples parámetros para funcionar en PowerShell.
# function to create directory and create file
Function Create-Directory()
{
# Create multiple parameters
# Mandatory parameter, set true
# Optional parameter, set false
# string data type and parameter name
Param
(
[Parameter(Mandatory = $true)] [string] $FolderName,
[Parameter(Mandatory = $true)] [string] $FileName,
[Parameter(Mandatory = $false)] [string] $TempFile
)
try
{
# Check if folder exists
if(Get-Item -Path $FolderName -ErrorAction Ignore)
{
# Check optional parameter value as by default optional parameter has null value
if($TempFile)
{
# Check if file exists
if(Get-Item -Path $TempFile -ErrorAction Ignore){
Write-Host $TempFile "file already exists!"
}
else
{
#Create temp file
New-Item -Verbose $TempFile -ItemType File
Write-Host -f Green $TempFile "file created successfully!"
}
}
else
{
Write-Host "File name path Parameter is null/optional"
}
}
else
{
#PowerShell Create directory if not exists
New-Item -Verbose $FolderName -ItemType Directory
Write-Host -f Green $FolderName "folder created successfully!"
New-Item -Verbose $FileName -ItemType File
Write-Host -f Green $FileName "file created successfully!"
}
}
catch
{
$ErrorMsg = $_.Exception.Message + " error raised while creating folder!"
Write-Host $ErrorMsg -BackgroundColor Red
}
}
#Parameters - Pass multiple parameters to the function
$FolderName="D:\Logs-FTP01";
$FileName= "D:\Logs-FTP01\NewFile.txt";
$TempFile= "D:\Logs-FTP01\Temp.txt";
Create-Directory $FolderName $FileName $TempFile
En el script de PowerShell anterior, tenemos
$FolderName: contiene la ruta de la carpeta (parámetro obligatorio)
$FileName - contiene la ruta del archivo (parámetro obligatorio)
$TempFile: contiene la ruta del archivo temporal (parámetro opcional)
Hemos creado la función Crear-Directorio según la guía de funciones de PowerShell (nombre de caso en pascal con un verbo y un sustantivo)
Usando la palabra clave Param, hemos creado tres parámetros.
Los parámetros $Foldername y $Filename son obligatorios ya que hemos establecido el conjunto obligatorio en $true.
El parámetro $TempFile se ha establecido obligatoriamente en $false. En PowerShell, de forma predeterminada, todos los parámetros son opcionales.
Dentro de una función, tenemos que verificar si existe una carpeta o no usando el cmdlet Get-Item.
Si no existe una carpeta, cree un directorio y cree un archivo.
Hemos utilizado el parámetro -ErrorAction para Ignorar cualquier mensaje de error si el directorio no existe.
Si existe una carpeta, cree un nombre de archivo temporal dentro de la ruta del nombre de la carpeta.
Necesitamos verificar el valor de $TempFile ya que los parámetros opcionales tienen un valor nulo predeterminado.
Podemos llamar a las funciones usando el nombre de la función y tres parámetros creados anteriormente como se muestra a continuación
#Parameters - Pass multiple parameters to the function
$FolderName="D:\Logs-FTP01";
$FileName= "D:\Logs-FTP01\NewFile.txt";
$TempFile= "D:\Logs-FTP01\Temp.txt";
Create-Directory $FolderName $FileName $TempFileUsando el método anterior, podemos crear una función en PowerShell y pasar múltiples conjuntos de parámetros para funcionar en PowerShell.
El resultado del script anterior es el siguiente
Consejo interesante: ¡Cómo obtener una lista de parámetros para cmdlet en PowerShell!
Conclusión
Espero que el artículo detallado anteriormente sobre cómo pasar múltiples parámetros para funcionar usando PowerShell sea útil y educativo para usted.
De forma predeterminada, los parámetros en la función PowerShell son opcionales. Para que sean parámetros obligatorios, utilice Obligatorio y configúrelo en $true.
Los parámetros opcionales tienen valores nulos predeterminados.
Puede encontrar más temas sobre los comandos de PowerShell Active Directory y los conceptos básicos de PowerShell en la página de inicio de ShellGeek.
