Ejercicio: Parámetros
Una manera de hacer que los scripts sean flexibles consiste en usar parámetros para que los usuarios puedan proporcionar entradas cuando se ejecute el script. En este ejercicio, creará un script de copia de seguridad y le agregará parámetros.
Nota:
Este ejercicio es opcional. Si desea completar este ejercicio, deberá crear una suscripción de Azure antes de comenzar. Si no tiene una cuenta de Azure o no quiere crear una en este momento, puede leer las instrucciones para que comprenda la información que se presenta.
Nota:
En esta unidad, usará Azure Cloud Shell como terminal. Puede acceder a Cloud Shell mediante Azure Portal o el inicio de sesión de Cloud Shell. No tienes que instalar nada en tu PC o portátil para usarlo.
Creación de un script de copia de seguridad
Una tarea común es crear una copia de seguridad. Una copia de seguridad suele ser un archivo comprimido que almacena todos los archivos que pertenecen a una aplicación, por ejemplo. Cuando instaló PowerShell, obtuvo el cmdlet Compress-Archive, que puede ayudarle a completar esta tarea.
Abra Azure Cloud Shell y ejecute estos comandos de Bash:
mkdir app cd app touch index.html app.js cd ..Ahora debería tener un directorio denominado app. Ya está listo para trabajar con PowerShell.
En el mismo terminal, inicie un shell de PowerShell (si aún no se ha iniciado). Para ello, ejecute
pwsh:pwshCree un archivo de script denominado Backup.ps1 en el directorio actual y ábralo en el editor de código.
touch Backup.ps1 code Backup.ps1Agregue este contenido al archivo y guárdelo. Puede usar CTRL-S en Windows y Linux o CMD+S en Mac para guardar.
$date = Get-Date -format "yyyy-MM-dd" Compress-Archive -Path './app' -CompressionLevel 'Fastest' -DestinationPath "./backup-$date" Write-Host "Created backup at $('./backup-' + $date + '.zip')"El script invoca
Compress-Archivey usa tres parámetros:-
-Pathes el directorio de los archivos que quiere comprimir. -
-CompressionLevelespecifica cuánto se deben comprimir los archivos. -
-DestinationPathes la ruta de acceso al archivo comprimido resultante.
-
Ejecute el script:
./Backup.ps1Debería ver este resultado:
Created backup at ./backup-<current date as YYYY-MM-DD>.zip
Adición de parámetros al script
Si agrega parámetros al script, los usuarios podrán proporcionar valores cuando se ejecute. Agregará parámetros al script de copia de seguridad para habilitar la configuración de las ubicaciones de los archivos de origen y del archivo ZIP resultante.
Agregue el código siguiente a la parte superior del archivo Backup.ps1 .
Nota:
Use el comando
code Backup.ps1para abrir el archivo si el editor no está abierto.Param( [string]$Path = './app', [string]$DestinationPath = './' )Ha agregado dos parámetros al script:
$Pathy$DestinationPath. También ha indicado valores predeterminados para que los usuarios no tengan que proporcionar valores. Los usuarios pueden invalidar los valores predeterminados si es necesario. Debe ajustar el script para que use estos parámetros. Lo hará a continuación.Cambie el código del archivo para usar los parámetros y luego guarde el archivo. Backup.ps1 ahora debería tener este aspecto:
Param( [string]$Path = './app', [string]$DestinationPath = './' ) $date = Get-Date -format "yyyy-MM-dd" Compress-Archive -Path $Path -CompressionLevel 'Fastest' -DestinationPath "$($DestinationPath + 'backup-' + $date)" Write-Host "Created backup at $($DestinationPath + 'backup-' + $date + '.zip')"Para cambiar el nombre del directorio de la aplicación a webapp , ejecute este comando:
mv app webappCambiar el nombre del directorio de la aplicación simula el hecho de que no todos los directorios de los que tendrá que realizar una copia de seguridad se llamará aplicación.
Ya no puede confiar en el valor predeterminado de
$Path. Deberá proporcionar un valor mediante la consola al ejecutar el script.Quite el archivo de copia de seguridad y reemplace
<current date as YYYY-MM-DD>por la fecha actual:rm backup-<current date as YYYY-MM-DD>.zipVa a quitar este archivo para asegurarse de que recibe un mensaje en el que se indica que el valor
$Pathno existe. De lo contrario, recibiría un mensaje en el que se indicaría que el archivo ZIP ya existe y el problema que intentamos corregir quedaría oculto.Ejecute el script sin proporcionar parámetros. (El script usará los valores predeterminados para los parámetros).
./Backup.ps1Verá un mensaje de error similar al siguiente:
Line | 8 | Compress-Archive -Path $Path -CompressionLevel 'Fastest' -Destination … | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The path './app' either does not exist or is not a valid file system path. Created backup at ./backup-<current date as YYYY-MM-DD>.zipEl script le notifica que no encuentra el directorio ./app. Ahora, cuando proporcione un valor al parámetro
$Path, verá la ventaja que supone agregar parámetros al script.Ejecute el script para probarlo:
./Backup.ps1 -Path './webapp'Verá un mensaje similar al que recibió anteriormente:
Created backup at ./backup-<current date as YYYY-MM-DD>.zipAhora puede usar parámetros si el directorio del que desea realizar una copia de seguridad no se denomina ./app o si desea colocar el archivo comprimido en algún lugar distinto del directorio actual.
¡Enhorabuena! Ha creado un script de copia de seguridad que puede usar siempre que quiera crear una copia de seguridad de un directorio de aplicación o cualquier otro directorio importante. Después, ha identificado partes del script que podría ser necesario cambiar con frecuencia y ha reemplazado los valores estáticos por valores de parámetro. De este modo, lo más probable es que no tenga que cambiar el propio script cuando cambien sus requisitos (por ejemplo, si el nombre de la aplicación cambia o si tiene que cambiar la ruta de acceso de destino).