Búsqueda de sitios web

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 $TempFile

Usando 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.

Artículos relacionados