SAPIEN Technologies

Nei nostri forum della comunità PowerShell, abbiamo recentemente ricevuto domande che chiedono se è possibile memorizzare variabili PowerShell in file esterni e, in tal caso, come è fatto. È infatti possibile memorizzare le variabili in file esterni da utilizzare per PowerShell. Queste variabili esterne possono essere memorizzate in una varietà di tipi di file. Memorizzarli in un file PowerShell è uno dei più facili perché si può solo dot origine questi file.

Tratteremo i seguenti metodi per memorizzare le variabili:

  • File di script
  • File di testo
  • File JSON
  • File XML

Gli esempi mostrati in questo post sono piuttosto semplici, ma ciò non significa che non sia possibile memorizzare variabili abbastanza complesse in file esterni. Se vuoi sperimentare con la memorizzazione di variabili esterne puoi scaricare i file di esempio per questo post qui.

File di script

Dot sourcing può essere il modo più semplice per memorizzare variabili esterne—ma non è sempre il più sicuro. Quando un file viene fornito con punti, stiamo dicendo a PowerShell di eseguire quello script. Se c’è qualche codice dannoso nel file, allora anche quel codice verrà eseguito.

In aggiunta al dot sourcing, sarà anche necessario assicurarsi che lo script PowerShell variabili esterne sia firmato e che l’esecuzione remota sia abilitata sul computer.

Dot sourcing può essere utile se abbiamo bisogno di ottenere informazioni su qualcosa in modo dinamico. Per le altre opzioni discusse in questo post, i dati memorizzati nei tipi di file dovranno essere modificati manualmente.

1234

# Qui puntiamo fonte il file PowerShell variabili esterne. "C:\Test\BlogPosts\ExternalVariables.ps1" Write-Host Extern External_Variable1 Extern External_Variable2

Ecco cosa c’è nel file ExternalVariables. ps1:

#Dichiarazione di variabili Esterne
$External_Variable1 = ‘Sapien’
$External_Variable2 = ‘Tecnologie’

i File di Testo

variabili Esterne possono anche essere memorizzati in un certo numero di file di testo e formati, come testo normale in generale .file txt utilizzando il cmdlet Get-Content. Quando importiamo le variabili in questo modo, non stiamo eseguendo alcun codice, quindi non è un problema se non si monitorano costantemente i file per ottenere informazioni.

Le seguenti tre immagini sono esempi di diversi modi di memorizzare le informazioni in un semplice file di testo:

12345678910111213

$ScriptDir = Split-Path script script: MyInvocation.MiComando.Percorso Sc ScriptDir + = " \ ExternalVariables.txt" # Utilizzare il contenuto per ottenere tutte le righe presenti nel file txt $External_Variables = Get-Content -Percorso di $ScriptDir #Le Informazioni dal ExternalVariables arriva come un array #Così per stampare tutte le stringhe in $programma usare un foreach loopforeach ($stringa $External_Variables){Write-Host, $stringa}

Qui è che cosa è in ExternalVariables.file txt:

“PowerShell Studio”
“PrimalScript”
“Richiamo versione”

Proprio come un array, possiamo memorizzare tabelle hash in file di testo. Per ottenere la nostra tabella hash da un file di testo, dovremo convogliare l’output del Get-Content nel cmdlet ConvertFrom-StringData per convertire l’output in una tabella hash.

1234567891011121314

$ScriptDir = Split-Path script script: MyInvocation.MiComando.Percorso Sc ScriptDir + = " \ ExternalVariablesHashTable.txt"# Ottenere il contenuto di una Variabile Esterna file di testo# Questo file è un archivio nel piano di testo e non è in alcun formato speciale # usiamo il "raw" qui parametro in Get-Content in modo che quando si ottiene il contenuto# del file in modo che la nostra tabella non viene convertito in un oggetto$programma = Get-Content -raw-Percorso di $ScriptDir | ConvertFrom-StringData write-host "`ntipo della variabile `$programma n"$programma.GetType () write-host "'NPrinting' program program "program program

Ecco cosa c’è in ExternalVariablesHashTable.txt:

Company=Sapien Technologies
Product=PowerShell Studio

Memorizzare le informazioni in un file di testo come questo è un modo conveniente per conservare le informazioni in un formato leggibile dall’uomo. Anche i file di testo hanno il vantaggio di non essere eseguibili, quindi se ci sono codici dannosi memorizzati in un file che non gestisci regolarmente non verrà eseguito.

File JSON

È anche possibile memorizzare variabili esterne in un formato JSON. L’unico avvertimento è che dovremo ancora una volta convogliare l’output di Get-Content su un altro cmdlet; tuttavia questa volta è ConvertFrom-Json piuttosto che ConvertFrom-StringData. Per chi non ha familiarità con JSON o ha bisogno di rispolverare il formato, si prega di visitare il sito www.JSON.org.

1234567891011121314151617

$ScriptDir = Split-Path script script: MyInvocation.MiComando.Percorso Sc ScriptDir + = " \ jsonfile.json" # Ottenere informazioni dal file json # Passiamo l'output da Get-Content a ConvertFrom-Json Cmdlet J JsonObject = Get-Content Sc ScriptDir / ConvertFrom-Json #In questo momento abbiamo un array che significa che dobbiamo indicizzare#un elemento per usarlo J JsonObject.Gli utenti di #Quando indicizzati possiamo chiamare gli attributi del elementsWrite-Host "Attributi individualmente printed"$JsonObject.Users.Name$JsonObject.Users.Age$JsonObject.Users.City$JsonObject.Users.Country$JsonObject.Users.UserId

Qui è che cosa c’è nel File JSON:

{
“Utenti”:
}

File XML

Se siamo negozio il nostro variabili in un formato XML, siamo in grado di aggiungere commenti ai file variabile, se necessario. Gli unici due formati di file di cui parleremo in questo post che consente commenti sono XML o PS1. I file JSON e TXT normali non consentono commenti. Per una panoramica concisa del formato XML, visitare w3schools.com/xml.

123456789

$ScriptDir = Split-Path script script: MyInvocation.MiComando.Percorso Sc ScriptDir + = " \ XMLFile.xml" # Leggere tutte le informazioni dal nostro file XML variabili#Avremo bisogno di lanciare la variabile come quando memorizziamo tutte le informazioni del file in esso $XML_Variable = Get-Content-Path Sc ScriptDir #Riferimento alla matrice di oggetti alimentari memorizzati all'interno dell'oggetto Colazione X XML_Variable.Colazione_menu.Cibo / Formato-Lista

Ecco cosa c’è nel file 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

Cialde belghe Berry-Berry
$8.95
Cialde belghe ricoperte di frutti di bosco freschi assortiti e panna montata
900

Quando si sceglie tra i formati di archiviazione XML e JSON, si scende a quello che è più familiare. Poiché la principale differenza tra loro è che XML consente commenti, è solo una questione di preferenza. Tutte queste opzioni sono modi praticabili per memorizzare le informazioni in file esterni per essere letti da un altro programma o utilizzati dallo stesso programma in un secondo momento. Quanto complesso, se è dinamico o meno, e quante informazioni devono essere memorizzate detterà il formato da utilizzare.

Esportazione in file

Proprio come l’importazione di informazioni con PowerShell, è anche possibile esportare informazioni e oggetti in un file esterno dal programma che stiamo utilizzando. PowerShell Studio 2018 è dotato di snippet che rendono l’esportazione delle informazioni molto più semplice: basta passare il percorso del file esterno e dell’oggetto alla funzione di esportazione corrispondente e lo snippet si occuperà di tutto il resto. Tratteremo l’esportazione in file utilizzando frammenti in un futuro post sul blog.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

More: