SAPIEN Technologies

op onze PowerShell community forums hebben we onlangs vragen ontvangen met de vraag of het mogelijk is om PowerShell-variabelen op te slaan in externe bestanden, en zo ja, hoe wordt dit gedaan. Het is inderdaad mogelijk om variabelen op te slaan in externe bestanden die PowerShell kan gebruiken. Deze externe variabelen kunnen worden opgeslagen in een verscheidenheid van bestandstypen. Ze opslaan in een PowerShell-bestand is een van de makkelijkste omdat je gewoon dot bron van deze bestanden.

we behandelen de volgende methoden om variabelen op te slaan:

  • scriptbestanden
  • tekstbestanden
  • JSON-bestanden
  • XML-bestanden

de voorbeelden in dit bericht zijn vrij eenvoudig, maar dat betekent niet dat het niet mogelijk is om vrij complexe variabelen op te slaan in externe bestanden. Als u wilt experimenteren met het opslaan van externe variabelen kunt u de voorbeeldbestanden voor dit bericht hier downloaden.

scriptbestanden

Dot sourcing is misschien de makkelijkste manier om externe variabelen op te slaan—maar het is niet altijd de veiligste. Als een bestand dot sourced is vertellen we PowerShell om dat script uit te voeren. Als er een kwaadaardige code in het bestand, dan is die code zal ook draaien.

in aanvulling op dot sourcing, moet u er ook voor zorgen dat de externe variabelen PowerShell script is ondertekend en dat uitvoering op afstand is ingeschakeld op uw machine.

Dot sourcing kan nuttig zijn als we informatie over iets dynamisch moeten krijgen. Voor de andere opties besproken in dit bericht, de gegevens die zijn opgeslagen in de bestandstypen moet handmatig worden gewijzigd.

1234

# hier dot bron de externe variabelen PowerShell bestand. "C:\Test\BlogPosts\ExternalVariables.ps1" Write-Host $External_Variable1 $External_Variable2

hier is wat er in het ExternalVariables. ps1 bestand:

#Declaration of External variables
$External_Variable1 = “Sapien”
$External_Variable2 = “Technologies’

tekstbestanden

externe variabelen kunnen ook worden opgeslagen in een aantal tekstbestanden en formaten, zoals platte tekst in een algemeen .txt-bestand met behulp van de cmdlet Get-Content. Wanneer we variabelen op deze manier importeren, draaien we geen code, dus het is geen probleem als je niet constant de bestanden controleert om informatie te krijgen.

de volgende drie afbeeldingen zijn voorbeelden van verschillende manieren om informatie in een eenvoudig tekstbestand op te slaan:

12345678910111213

$ScriptDir = Split-Path $script: MyInvocation.MyCommand.Path$ScriptDir + = " \ ExternalVariables.txt" # Gebruik de inhoud te krijgen van alle lijnen die in het txt-bestanden $External_Variables = Get-Inhoud -Pad $Scriptmap #De Gegevens van de ExternalVariables komt in als een array #Dus alles afdrukken van de snaren in $programma gebruiken we een foreach loopforeach ($string in $External_Variables){Write-Host $string}

Hier is wat is de ExternalVariables.txt-bestand:

“PowerShell Studio”
“PrimalScript”
“versie terugroepen”

net als een array kunnen we hashtabellen opslaan in tekstbestanden. Om onze hash tabel uit een tekstbestand te krijgen, moeten we de uitvoer van de Get-Content naar de ConvertFrom-StringData cmdlet pijpen om de uitvoer naar een hash tabel te converteren.

1234567891011121314

$ScriptDir = Split-Path $script: MyInvocation.MyCommand.Path$ScriptDir + = " \ ExternalVariablesHashTable.txt" # Getting the content of the External Variable text file# This file is store in plan text and is not in any special format # We use the " raw "parameter here in Get-Content so that when we get the content# of the file so that our hashtable is not conversie to an object$program = Get-Content-raw-Path $ScriptDir / ConvertFrom-StringData write-host"`nType of the variable '$program ' n " $program.GetType () write-host "`nPrinting '$program " $program

hier is wat is in ExternalVariablesHashTable.txt:

Company = Sapien Technologies
Product = PowerShell Studio

het opslaan van informatie in een tekstbestand als dit is een handige manier om informatie in een voor mensen leesbaar formaat te bewaren. Tekstbestanden komen ook met het voordeel dat het niet uitvoerbaar is, dus als er toevallig kwaadaardige code is opgeslagen in een bestand dat u niet regelmatig beheert, wordt het niet uitgevoerd.

JSON-bestand

het is ook mogelijk om externe variabelen in een JSON-formaat op te slaan. Het enige voorbehoud is dat we de uitvoer van Get-Content opnieuw moeten doorsluizen naar een andere cmdlet; maar deze keer is het ConvertFrom-Json in plaats van ConvertFrom-StringData. Voor degenen die niet bekend zijn met JSON of moeten opfrissen op het formaat, bezoek www.JSON.org.

1234567891011121314151617

$ScriptDir = Split-Path $script: MyInvocation.MyCommand.Pad$ScriptDir + = " \jsonbestand.json" # Getting information from the json file # The we pass the output from Get-Content to ConvertFrom-Json Cmdlet$JsonObject = Get-Content $ScriptDir | ConvertFrom-Json #op dit moment hebben we een array wat betekent dat we#een element moeten indexeren om het te gebruiken$JsonObject.Gebruikers #Wanneer geïndexeerd kunnen we noemen de kenmerken van de elementsWrite-Host "- Kenmerken individueel printed"$JsonObject.Users.Name$JsonObject.Users.Age$JsonObject.Users.City$JsonObject.Users.Country$JsonObject.Users.UserId

Hier is wat is de JSON-Bestand:

{
“Gebruikers”:
}

XML-Bestand

Als we onze variabelen in een XML-formaat, we kunnen opmerkingen toevoegen aan de variabele bestand indien nodig. De enige twee bestandsformaten die we zullen praten over in deze post die het mogelijk maakt voor opmerkingen zijn XML of PS1. JSON en normale TXT-bestanden staan geen opmerkingen toe. Voor een beknopt overzicht van het XML-formaat, bezoek w3schools.com/xml.

123456789

$ScriptDir = Split-Path $script: MyInvocation.MyCommand.Pad$ScriptDir + = " \Xmlbestand.xml" # Lees alle informatie van onze variabelen XML-bestand#We zullen de variabele moeten casten als wanneer we alle bestandsinformatie erin opslaan $XML_Variable = Get-Content-Path $ScriptDir #refererend aan de Food Object array opgeslagen in het Breakfast Object$XML_Variable.Ontbijt menu.Voeding / Format-lijst

hier is wat er in het XML-bestand:


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

bessen-Belgische Bessenwafels
$8.95
Belgische wafels bedekt met diverse verse bessen en slagroom
900

bij het kiezen tussen XML en JSON opslag formaten, het komt neer op welke is meer vertrouwd. Aangezien het belangrijkste verschil tussen hen is dat XML commentaar toestaat, is het gewoon een kwestie van voorkeur. Al deze opties zijn haalbare manieren om informatie op te slaan in externe bestanden te worden gelezen door een ander programma of gebruikt door hetzelfde programma op een later tijdstip. Hoe complex, of het dynamisch is of niet, en hoeveel informatie moet worden opgeslagen, bepaalt het te gebruiken formaat.

exporteren naar bestanden

net als het importeren van informatie met PowerShell, is het ook mogelijk om informatie en objecten te exporteren naar een extern bestand vanuit het programma dat we gebruiken. PowerShell Studio 2018 wordt geleverd met fragmenten die het exporteren van informatie veel gemakkelijker maken—geef gewoon het pad van het externe bestand en het object door aan de bijbehorende exportfunctie en het fragment zorgt voor al het andere. We zullen exporteren naar bestanden met behulp van knipsels in een toekomstige blogpost.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

More: