SAPIEN Technologies

Sur nos forums de la communauté PowerShell, nous avons récemment reçu des questions demandant s’il est possible de stocker des variables PowerShell dans des fichiers externes, et si oui, comment cela se fait. Il est en effet possible de stocker des variables dans des fichiers externes à utiliser par PowerShell. Ces variables externes peuvent être stockées dans une variété de types de fichiers. Les stocker dans un fichier PowerShell est l’un des plus faciles car vous pouvez simplement source de points ces fichiers.

Nous couvrirons les méthodes suivantes pour stocker des variables:

  • Fichiers de script
  • Fichiers texte
  • Fichiers JSON
  • Fichiers XML

Les exemples présentés dans cet article sont assez simples, mais cela ne signifie pas qu’il n’est pas possible de stocker des variables assez complexes dans des fichiers externes. Si vous souhaitez expérimenter le stockage de variables externes, vous pouvez télécharger les exemples de fichiers pour cet article ici.

Fichiers de script

L’approvisionnement par points peut être le moyen le plus simple de stocker des variables externes — mais ce n’est pas toujours le plus sûr. Lorsqu’un fichier est source de points, nous demandons à PowerShell d’exécuter ce script. S’il y a un code malveillant dans le fichier, ce code s’exécutera également.

Dans l’ajout à l’approvisionnement par points, vous devrez également vous assurer que le script PowerShell de variables externes est signé et que l’exécution à distance est activée sur votre machine.

L’approvisionnement par points peut être utile si nous avons besoin d’obtenir des informations sur quelque chose de manière dynamique. Pour les autres options discutées dans cet article, les données stockées dans les types de fichiers devront être modifiées manuellement.

1234

# Ici, nous pointons la source du fichier PowerShell des variables externes. "C:\Test\BlogPosts\ExternalVariables.ps1 "Write-Host $External_Variable1 $External_Variable2

Voici ce qui se trouve dans le fichier ExternalVariables.ps1:

# Déclaration des variables externes
ExternExternal_Variable1=’Sapien’
TechnologiesExternal_Variable2=’Technologies’

Fichiers texte

Les variables externes peuvent également être stockées dans un certain nombre de fichiers texte et de formats, tels que le texte brut en général.fichier txt à l’aide de l’applet de commande Get-Content. Lorsque nous importons des variables de cette façon, nous n’exécutons aucun code, ce n’est donc pas un problème si vous ne surveillez pas constamment les fichiers pour obtenir des informations.

Les trois images suivantes sont des exemples de différentes façons de stocker des informations dans un simple fichier texte:

12345678910111213

$ ScriptDir = Split-Pathscriptscript: MyInvocation.Mon commandant.Chemin PathScriptDir+="\ExternalVariables.txt" # Utiliser le contenu pour obtenir toutes les lignes qui sont dans les fichiers txt $External_Variables = Get-Content-Chemin $ScriptDir #les Informations de La ExternalVariables vient comme un tableau #Afin d'imprimer toutes les chaînes dans $programme, nous pouvons utiliser un foreach loopforeach ($string en $External_Variables){Write-Host $string}

Voici ce qui est dans le ExternalVariables.fichier txt:

 » PowerShell Studio « 
« PrimalScript »
« Rappel de version »

Tout comme un tableau, nous pouvons stocker des tables de hachage dans des fichiers texte. Pour obtenir notre table de hachage à partir d’un fichier texte, nous devrons acheminer la sortie du Get-Content vers l’applet de commande ConvertFrom-StringData pour convertir la sortie en une table de hachage.

1234567891011121314

$ ScriptDir = Split-Pathscriptscript: MyInvocation.Mon commandant.Chemin PathScriptDir+="\ExternalVariablesHashTable.txt " # Obtenir le contenu du fichier texte de la variable externe # Ce fichier est stocké dans le texte du plan et n'est dans aucun format spécial # Nous utilisons le paramètre "raw" ici dans Get-Content afin que lorsque nous obtenons le contenu # du fichier afin que notre table de hachage ne soit pas convertie en un objetprogramprogram = Get-Content-raw-Path hereScriptDir|ConvertFrom-StringData write-host" 'nType de la variable 'programprogram'n"programprogram.GetType() write-host "'NPrinting'programprogram"programprogram

Voici ce qui est dans ExternalVariablesHashTable.txt:

Company=Sapien Technologies
Product=PowerShell Studio

Stocker des informations dans un fichier texte comme celui-ci est un moyen pratique de conserver des informations dans un format lisible par l’homme. Les fichiers texte ont également l’avantage de ne pas être exécutables, donc s’il y a du code malveillant stocké dans un fichier que vous ne gérez pas régulièrement, il ne sera pas exécuté.

Fichier JSON

Il est également possible de stocker des variables externes au format JSON. La seule mise en garde étant que nous devrons à nouveau diriger la sortie de Get-Content vers une autre applet de commande; cependant, cette fois, c’est ConvertFrom-Json plutôt que ConvertFrom-StringData. Pour ceux qui ne connaissent pas JSON ou qui ont besoin de modifier le format, veuillez visiter www.JSON.org.

1234567891011121314151617

$ ScriptDir = Split-Pathscriptscript: MyInvocation.Mon commandant.Chemin PathScriptDir+="\jsonfile.json " # Obtenir des informations à partir du fichier json # Nous transmettons la sortie de Get-Content à l'applet de commande ConvertFrom-Json$JsonObject = Get-Content #ScriptDir | ConvertFrom-Json # En ce moment, nous avons un tableau ce qui signifie que nous devons indexer # un élément pour l'utiliserJJsonObject.Utilisateurs # Une fois indexés, nous pouvons appeler les attributs des "attributs elementsWrite-Host" individuellement printed"$JsonObject.Users.Name$JsonObject.Users.Age$JsonObject.Users.City$JsonObject.Users.Country$JsonObject.Users.UserId

Voici ce qui se trouve dans le fichier JSON:

{
 » Utilisateurs »:
}

Fichier XML

Si nous stockons nos variables au format XML, nous pouvons ajouter des commentaires au fichier de variables si nécessaire. Les deux seuls formats de fichiers dont nous parlerons dans cet article qui permettent les commentaires sont XML ou PS1. Les fichiers JSON et TXT normaux ne permettent pas de commentaires. Pour un aperçu concis du format XML, visitez w3schools.com/xml.

123456789

$ ScriptDir = Split-Pathscriptscript: MyInvocation.Mon commandant.Chemin PathScriptDir+="\XMLFile.xml " # Lisez toutes les informations de notre fichier XML de variables # Nous devrons convertir la variable comme lorsque nous y stockons toutes les informations du fichierXXML_Variable = Get-Content-Path $ScriptDir # Référençant le tableau d'objets Alimentaires stocké dans l'Objet Petit-déjeunerXXML_Variable.Menu du petit déjeuner.Nourriture / Format - Liste

Voici ce qui se trouve dans le fichier 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

Gaufres belges aux baies
8Berry.95
Gaufres belges recouvertes de baies fraîches assorties et de crème fouettée
900

Lorsque vous choisissez entre les formats de stockage XML et JSON, il s’agit de savoir lequel est le plus familier. Puisque la principale différence entre eux est que XML autorise les commentaires, c’est juste une question de préférence. Toutes ces options sont des moyens viables de stocker des informations dans des fichiers externes pour être lues par un autre programme ou utilisées ultérieurement par le même programme. La complexité, la dynamique ou non, et la quantité d’informations à stocker dicteront le format à utiliser.

Exportation vers des fichiers

Tout comme l’importation d’informations avec PowerShell, il est également possible d’exporter des informations et des objets vers un fichier externe à partir du programme que nous utilisons. PowerShell Studio 2018 est livré avec des extraits de code qui facilitent grandement l’exportation des informations — il suffit de transmettre le chemin du fichier externe et de l’objet à la fonction d’exportation correspondante et l’extrait de code s’occupera de tout le reste. Nous couvrirons l’exportation vers des fichiers à l’aide d’extraits de code dans un futur article de blog.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

More: