SAPIEN Technologies

på Våre PowerShell-fellesskapsfora har vi nylig mottatt spørsmål som spør om Det er mulig å lagre PowerShell-variabler i eksterne filer, og i så fall hvordan er det gjort. Det er faktisk mulig å lagre variabler i eksterne filer For PowerShell å bruke. Disse eksterne variablene kan lagres i en rekke filtyper. Lagre dem i En PowerShell-fil er en av de enkleste fordi du bare kan dot kilde disse filene.

vi vil dekke følgende metoder for å lagre variabler:

  • Skriptfiler
  • Tekstfiler
  • JSON-Filer
  • XML-Filer

eksemplene som vises i dette innlegget er ganske enkle, men det betyr ikke at det ikke er mulig å lagre ganske komplekse variabler i eksterne filer. Hvis du vil eksperimentere med lagring av eksterne variabler, kan du laste ned eksempelfilene for dette innlegget her.

Skriptfiler

Dot sourcing kan være den enkleste måten å lagre eksterne variabler på—men Det er ikke alltid den sikreste. Når en fil er prikk hentet, forteller Vi PowerShell å utføre det skriptet. Hvis det er skadelig kode i filen, vil den koden også kjøre.

i tillegg til dot sourcing må du også sørge for at det eksterne variablene PowerShell-skriptet er signert og At Ekstern Kjøring er aktivert på maskinen.

Dot sourcing kan være nyttig hvis vi trenger å få informasjon om noe dynamisk. For de andre alternativene som er omtalt i dette innlegget, må dataene som er lagret i filtypene, endres manuelt.

1234

# Her dot vi kilden Til Eksterne variabler PowerShell-Filen. "C:\Test\BlogPosts\ExternalVariables.ps1" Skriv-Host $External_Variable1 $External_Variable2

Her er hva som er I ExternalVariables.ps1 filen:

#Erklæring Av Eksterne variabler
$External_Variable1 = ‘Sapien’
$External_Variable2 = ‘Teknologier’

Tekstfiler

Eksterne variabler kan også lagres i en rekke tekstfiler og formater, for eksempel ren tekst i en generell .txt-fil ved Hjelp Av Cmdleten Get-Content. Når vi importerer variabler på denne måten, kjører vi ingen kode, så det er ikke et problem hvis du ikke overvåker filene hele tiden for å få informasjon.

følgende tre bilder er eksempler på forskjellige måter å lagre informasjon på i en enkel tekstfil:

12345678910111213

$ScriptDir = Split-Bane $script: MyInvocation.MyCommand.Sti$ScriptDir + = " \ ExternalVariables.txt " # Bruk få innhold for å få alle linjene som er i txt-filene $ External_Variables = Get-Content-Path $ScriptDir #Informasjonen fra ExternalVariables kommer inn som en matrise # Så for å skrive ut alle strengene i $program bruker vi en foreach loopforeach ($string i $External_Variables){Write-Host $string}

Her er det Som er I Det Eksternevariabler.txt-fil:

«PowerShell Studio»
«PrimalScript»
«Versjon Tilbakekalling»

akkurat som en matrise, kan vi lagre hash tabeller i tekstfiler. For å få vår hash-tabell fra en tekstfil, må vi pipe utgangen Av Get-Innholdet Til Cmdleten ConvertFrom-StringData for å konvertere utgangen til et hash-bord.

1234567891011121314

$ScriptDir = Split-Bane $script: MyInvocation.MyCommand.Sti$ScriptDir + = " \ExternalVariablesHashTable.txt "# Få innholdet I Den Eksterne Variable tekstfilen # denne filen er lagret i plan tekst og er ikke i noe spesielt format # vi bruker " raw "parameteren her I Get-Innhold slik at når vi får innholdet# av filen slik at vår hashtable ikke konverteres til et objekt$program = Get-Content-raw-Path $ScriptDir | ConvertFrom-StringData write-host "'nType av variabelen' $program ' $program.GetType () skrive-vert "`nPrinting '$program " $program

Her er det Som Er I Eksterntvariableshashtable.txt:

Company=Sapien Technologies
Product=PowerShell Studio

Lagring av informasjon i en tekstfil som dette er en praktisk måte å holde informasjon i et lesbart format. Tekstfiler kommer også med fordelen av ikke å være kjørbar, så hvis det skjer å være skadelig kode lagret i en fil du ikke regelmessig administrere det vil ikke bli henrettet.

Json-Fil

det er også mulig å lagre eksterne variabler I et json-format. Den eneste advarselen er at vi må igjen pipe utgangen Av Get-Content til en annen cmdlet; men denne gangen Er Det ConvertFrom-Json i stedet For ConvertFrom-StringData. For de som ikke er kjent MED JSON eller trenger å friske opp formatet, vennligst besøk www.JSON.org.

1234567891011121314151617

$ScriptDir = Split-Bane $script: MyInvocation.MyCommand.Sti$ScriptDir + = " \jsonfile.json " #Få informasjon fra json-filen # vi sender utdataene Fra Get-Content Til ConvertFrom-Json Cmdlet$JsonObject = Get-Content $ScriptDir /ConvertFrom-Json # Akkurat nå har Vi en matrise som betyr at vi må indeksere # et element for å bruke det$JsonObject.Brukere #når indeksert vi kan kalle attributtene til elementsWrite-Host "Attributter individuelt printed"$JsonObject.Users.Name$JsonObject.Users.Age$JsonObject.Users.City$JsonObject.Users.Country$JsonObject.Users.UserId

Her er hva SOM er I Json-Filen:

{
«Brukere»:
}

XML-Fil

hvis vi lagrer våre variabler I ET XML-format, kan vi legge til kommentarer til variabelfilen om nødvendig. De eneste to filformatene som vi skal snakke om i dette innlegget som tillater kommentarer ER XML eller PS1. JSON og normale txt-filer tillater ikke kommentarer. For en kortfattet oversikt OVER XML-formatet, besøk w3schools.com/xml.

123456789

$ScriptDir = Split-Bane $script: MyInvocation.MyCommand.Sti$ScriptDir + = " \XMLFile.xml " # Les i all informasjon fra våre variabler XML-fil # vi må kaste variabelen som når vi lagrer all filinformasjonen i den $XML_Variable = Get-Content-Path $ScriptDir # Refererer Til Matobjektet array lagret i Frokostobjektet$XML_Variable.Frokost_menu.Mat / Format-Liste

Her er HVA SOM er I XML-filen:


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

Bær-Bær Belgiske Vafler
$8.95
Belgiske vafler dekket med assorterte friske bær og pisket krem
900

når du velger MELLOM XML og json lagringsformater, kommer det ned til hvilken som er mer kjent. Siden hovedforskjellen mellom DEM er AT XML tillater kommentarer, er det bare et spørsmål om preferanse. Alle disse alternativene er levedyktige måter å lagre informasjon i eksterne filer som enten kan leses av et annet program eller brukes av det samme programmet på et senere tidspunkt. Hvor komplisert, om det er dynamisk eller ikke, og hvor mye informasjon som må lagres, vil diktere formatet som skal brukes.

Eksportere Til Filer

på samme måte som å importere informasjon Med PowerShell, er det også mulig å eksportere informasjon og objekter til en ekstern fil fra programmet vi bruker. PowerShell Studio 2018 kommer med utdrag som gjør eksport av informasjon mye enklere – bare passere banen til den eksterne filen og objektet til den tilsvarende eksportfunksjonen og kodebiten vil ta seg av alt annet. Vi vil dekke Eksport Til Filer ved Hjelp Av Utdrag i en fremtidig blogginnlegg.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.

More: