SAPIEN Technologies

En nuestros foros de la comunidad de PowerShell, hemos recibido recientemente preguntas que nos preguntan si es posible almacenar variables de PowerShell en archivos externos y, en caso afirmativo, cómo se hace. De hecho, es posible almacenar variables en archivos externos para que PowerShell las use. Estas variables externas se pueden almacenar en una variedad de tipos de archivos. Almacenarlos en un archivo de PowerShell es uno de los más fáciles, ya que solo puede generar puntos en el origen de estos archivos.

Cubriremos los siguientes métodos para almacenar variables:

  • Archivos de script
  • Archivos de texto
  • Archivos JSON
  • Archivos XML

Los ejemplos que se muestran en esta publicación son bastante simples, pero eso no significa que no sea posible almacenar variables bastante complejas en archivos externos. Si desea experimentar con el almacenamiento de variables externas, puede descargar los archivos de ejemplo para esta publicación aquí.

Archivos de script

El aprovisionamiento de puntos puede ser la forma más fácil de almacenar variables externas, pero no siempre es la más segura. Cuando un archivo es de origen punteado, le decimos a PowerShell que ejecute ese script. Si hay algún código malicioso en el archivo, ese código también se ejecutará.

Además del aprovisionamiento de puntos, también deberá asegurarse de que el script de PowerShell de variables externas esté firmado y de que la Ejecución remota esté habilitada en el equipo.

El abastecimiento de puntos puede ser útil si necesitamos obtener información sobre algo dinámicamente. Para las otras opciones discutidas en esta publicación, los datos almacenados en los tipos de archivos tendrán que cambiarse manualmente.

1234

# Aquí tenemos el origen de las variables externas del archivo PowerShell. "C:\Test\BlogPosts\ExternalVariables.ps1" Write-Host $External_Variable1 $External_Variable2

Aquí es lo que está en el ExternalVariables.archivo ps1:

#Declaración de variables externas
Extern External_Variable1 = «Sapien»
Technologies External_Variable2 = «Tecnologías’

Los archivos de texto

Las variables externas también se pueden almacenar en varios archivos de texto y formatos, como texto plano en general .archivo txt con el cmdlet Get-Content. Cuando importamos variables de esta manera, no ejecutamos ningún código, por lo que no es un problema si no monitoreas constantemente los archivos para obtener información.

Las tres imágenes siguientes son ejemplos de diferentes formas de almacenar información en un archivo de texto simple:

12345678910111213

$ScriptDir = Split-Path script script: MyInvocation.Mi mando.Path Path ScriptDir + = " \ExternalVariables.txt" # Uso de contenidos para obtener todas las líneas que están en los archivos txt $External_Variables = Get-Content -Ruta $scriptdir por #la Información de La ExternalVariables viene como una matriz #Para imprimir todas las cadenas de caracteres en $programa que se utiliza un foreach loopforeach ($cadena $External_Variables){Write-Host $cadena}

Aquí es lo que está en el ExternalVariables.archivo txt:

«PowerShell Studio»
«PrimalScript»
«Recuperación de versiones»

Al igual que una matriz, podemos almacenar tablas hash en archivos de texto. Para obtener nuestra tabla hash de un archivo de texto, tendremos que canalizar la salida del Get-Content al cmdlet ConvertFrom-StringData para convertir la salida en una tabla hash.

1234567891011121314

$ScriptDir = Split-Path script script: MyInvocation.Mi mando.Path Path ScriptDir + = " \ExternalVariablesHashTable.txt" # Obtener el contenido del archivo de texto de la variable externa# Este archivo se almacena en el texto del plan y no está en ningún formato especial # Usamos el parámetro "raw" aquí en Get-Content para que cuando obtengamos el contenido# del archivo para que nuestra tabla hash no se convierta en un objeto program program = Get-Content-raw-Path Sc ScriptDir | ConvertFrom-StringData write-host "`Tipo de variable `program program'n"program program.GetType() host de escritura "'NPrinting' program program " program program

Esto es lo que está en ExternalVariablesHashTable.txt:

Company = Sapien Technologies
Product = PowerShell Studio

Almacenar información en un archivo de texto como este es una forma conveniente de mantener la información en un formato legible por humanos. Los archivos de texto también tienen la ventaja de no ser ejecutables, por lo que si hay código malicioso almacenado en un archivo que no administras regularmente, no se ejecutará.

Archivo JSON

También es posible almacenar variables externas en formato JSON. La única advertencia es que tendremos que canalizar una vez más la salida de Get-Content a otro cmdlet; sin embargo, esta vez es ConvertFrom-Json en lugar de ConvertFrom-StringData. Para aquellos que no están familiarizados con JSON o necesitan repasar el formato, visite www.JSON.org.

1234567891011121314151617

$ScriptDir = Split-Path script script: MyInvocation.Mi mando.Path Path ScriptDir + =" \ jsonfile.json " # Obteniendo información del archivo json # Pasamos la salida de Get-Content al Cmdlet ConvertFrom-Json J JSONObject = Get-Content #ScriptDir | ConvertFrom-Json#Ahora mismo tenemos un array que significa que tenemos que indexar # un elemento para usarlo J JSONObject.Usuarios #Cuando se indexan, podemos llamar a los atributos de los atributos elementsWrite-Host "individualmente printed"$JsonObject.Users.Name$JsonObject.Users.Age$JsonObject.Users.City$JsonObject.Users.Country$JsonObject.Users.UserId

Esto es lo que hay en el archivo JSON:

{
«Usuarios»:
}

Archivo XML

Si almacenamos nuestras variables en un formato XML, podemos agregar comentarios al archivo de variables si es necesario. Los únicos dos formatos de archivo de los que hablaremos en este post que permite comentarios son XML o PS1. Los archivos JSON y TXT normales no permiten comentarios. Para obtener una visión general concisa del formato XML, visite w3schools.com/xml.

123456789

$ScriptDir = Split-Path script script: MyInvocation.Mi mando.Path Path ScriptDir + = " \XMLFile.xml " # Leer en toda la información de nuestras variables Archivo XML # Necesitaremos convertir la variable como cuando almacenamos toda la información del archivo en ella X XML_Variable =Get-Content-Path Sc ScriptDir #Hacer referencia a la matriz de Objetos Alimento almacenada dentro del Objeto Desayuno X XML_Variable.Menu de desayuno.Lista de Alimentos / Formato

Esto es lo que hay en el archivo XML:


Belgian Waffles
.95
Two of our famous Belgian Waffles with plenty of real maple syrup
650
Strawberry Belgian Waffles
.95
Light Belgian waffles covered with strawberries and whipped cream
900

Gofres belgas de bayas y bayas
$8.95
Gofres belgas cubiertos con una variedad de bayas frescas y crema batida
900

Al elegir entre formatos de almacenamiento XML y JSON, se trata de cuál es el más familiar. Dado que la principal diferencia entre ellos es que XML permite comentarios, es solo una cuestión de preferencia. Todas estas opciones son formas viables de almacenar información en archivos externos para ser leídos por otro programa o utilizados por el mismo programa en un momento posterior. Qué tan complejo, si es dinámico o no, y cuánta información debe almacenarse dictarán el formato a usar.

Exportar a archivos

Al igual que importar información con PowerShell, también es posible exportar información y objetos a un archivo externo desde el programa que estamos utilizando. PowerShell Studio 2018 viene con fragmentos de código que facilitan mucho la exportación de información: simplemente pase la ruta del archivo externo y el objeto a la función de exportación correspondiente y el fragmento se encargará de todo lo demás. Cubriremos la Exportación a Archivos usando fragmentos en una publicación de blog futura.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

More: