PowerShell – yhteisöfoorumeillamme olemme äskettäin saaneet kysymyksiä, joissa kysytään, onko mahdollista tallentaa PowerShell-muuttujia ulkoisiin tiedostoihin, ja jos on, miten se tehdään. On todellakin mahdollista tallentaa muuttujia ulkoisiin tiedostoihin Powershellia varten. Nämä ulkoiset muuttujat voidaan tallentaa useisiin tiedostotyyppeihin. Niiden tallentaminen PowerShell-tiedostoon on yksi helpoimmista, koska voit vain tehdä piste lähde nämä tiedostot.
käsittelemme seuraavia menetelmiä muuttujien tallentamiseksi:
- Skriptitiedostot
- tekstitiedostot
- JSON-tiedostot
- XML-tiedostot
esimerkit näkyvät tässä viestissä ovat melko yksinkertaisia, mutta se ei tarkoita, että se ei ole mahdollista tallentaa melko monimutkaisia muuttujia ulkoisiin tiedostoihin. Jos haluat kokeilla ulkoisten muuttujien tallentamista, voit ladata tämän viestin näytetiedostot täältä.
Skriptitiedostot
Pistehankinta voi olla helpoin tapa tallentaa ulkoisia muuttujia—mutta se ei ole aina turvallisin. Kun tiedosto on pisteestä peräisin, käskemme Powershellia suorittamaan kyseisen komentosarjan. Jos tiedostossa on haittakoodia, kyseinen koodi suoritetaan myös.
in addtion to dot sourcing, you will also need to ensure that the external variables PowerShell script is signed and that Remote Execution is enabled on your machine.
Pistehankinnasta voi olla apua, jos jostain pitää saada dynaamisesti tietoa. Muiden tässä viestissä käsiteltyjen vaihtoehtojen osalta tiedostotyyppeihin tallennetut tiedot on muutettava manuaalisesti.
1234 |
# täällä me dot lähde ulkoiset muuttujat PowerShell tiedosto. "C:\Test\BlogPosts\ExternalVariables.ps1" Write-Host $External_Variable1 $External_Variable2
|
tässä on mitä on ExternalVariables. ps1-tiedostossa:
#ulkoisten muuttujien julistus
$External_Variable1 = ”Sapien”
$External_Variable2 = ”Technologies’
tekstitiedostoja
ulkoisia muuttujia voidaan tallentaa myös useisiin tekstitiedostoihin ja-muotoihin, kuten selkotekstiin yleensä .txt-tiedosto Get-Content cmdlet-ohjelmalla. Kun tuomme muuttujia tällä tavalla, meillä ei ole käynnissä mitään koodia, joten se ei ole ongelma, jos et jatkuvasti seurata tiedostoja saada tietoja.
seuraavat kolme kuvaa ovat esimerkkejä erilaisista tavoista tallentaa tietoa yksinkertaiseen tekstitiedostoon:
12345678910111213 |
$ScriptDir = Split-Path $script: MyInvocation.Komentaja.Path$ScriptDir + = " \ ExternalVariables.txt " # Use get content to get all of the lines that are in the txt files $External_Variables = Get-Content-Path $ScriptDir #the Information from the ExternalVariables comes in as an array # So to print all of the strings in $program we use a foreach loopforeach ($string in $External_Variables){Write-Host $string}
|
tässä on, mitä on Ulkoisessavariables.txt-tiedosto:
”PowerShell Studio”
”PrimalScript”
”Version Recall”
aivan kuten array, voimme tallentaa hajautustaulut tekstitiedostoihin. Saada meidän hash taulukko tekstitiedostosta, meidän täytyy putki lähtö Get-Content ConvertFrom-StringData cmdlet muuntaa lähtö hash taulukko.
1234567891011121314 |
$ScriptDir = Split-Path $script: MyInvocation.Komentaja.Path$ScriptDir + = " \ ExternalVariablesHashTable.txt "# Getting 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 converted 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
|
tässä on se, mikä on Ulkoisessavariableshashtable.txt:
Company=Sapien Technologies
Product = PowerShell Studio
tietojen tallentaminen tällaiseen tekstitiedostoon on kätevä tapa säilyttää tieto ihmisen luettavassa muodossa. Tekstitiedostojen etuna on myös se, että ne eivät ole suoritettavia, joten jos tiedostoon on tallennettu haittakoodia, jota et hallitse säännöllisesti, sitä ei suoriteta.
JSON-tiedosto
on myös mahdollista tallentaa ulkoisia muuttujia JSON-muodossa. Ainoa varoitus on, että meidän täytyy jälleen putki lähtö Get-Content toiseen cmdlet; kuitenkin tällä kertaa se ConvertFrom-Json eikä ConvertFrom-StringData. Niille, jotka eivät tunne JSON tai täytyy harjata muodossa, käy www.JSON.org.
1234567891011121314151617 |
$ScriptDir = Split-Path $script: MyInvocation.Komentaja.Path$ScriptDir + = " \jsonfile.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 #Right now we have an array which means that we have to index#an element to use it$JsonObject.Users #When indexed we can call the attributes of the elementsWrite-Host "Attributes individually printed"$JsonObject.Users.Name$JsonObject.Users.Age$JsonObject.Users.City$JsonObject.Users.Country$JsonObject.Users.UserId
|
tässä on mitä JSON-tiedostossa on:
{
”käyttäjät”:
}
XML-tiedosto
jos Tallennamme muuttujamme XML-muodossa, voimme tarvittaessa lisätä muuttujatiedostoon kommentteja. Vain kaksi tiedostomuotoa, että puhumme tässä viestissä, joka mahdollistaa kommentit ovat XML tai PS1. JSON ja normaalit TXT-tiedostot eivät salli kommentteja. Saat tiiviin yleiskuvan XML-muodossa, vieraile w3schools.com/xml.
123456789 |
$ScriptDir = Split-Path $script: MyInvocation.Komentaja.Polku$ScriptDir + = " \XMLFile.xml " #Lue kaikki tiedot meidän muuttujia XML-tiedosto#meidän täytyy heittää muuttuja kun tallennamme kaikki tiedoston tiedot se $XML_Variable = Get-Content-Path $ScriptDir #viittaaminen ruoka objekti array tallennettu Aamiainen objekti$XML_Variable.Aamupala.Food | Format-List
|
tässä on mitä on XML-tiedosto:
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
900marjaiset belgialaiset vohvelit
$8.95
belgialaiset vohvelit, jotka on peitetty tuoreilla marjoilla ja kermavaahdolla
900
kun valitset XML ja JSON tallennusmuodot, se tulee alas kumpi on tutumpi. Koska suurin ero niiden välillä on, että XML sallii Kommentit, se on vain mieltymyskysymys. Kaikki nämä vaihtoehdot ovat toteuttamiskelpoisia tapoja tallentaa tietoja ulkoisiin tiedostoihin joko toisen ohjelman luettavaksi tai saman ohjelman käytettäväksi myöhemmin. Kuinka monimutkainen, onko se dynaaminen tai ei, ja kuinka paljon tietoa on tallennettava sanelee muoto käyttää.
viedään tiedostoihin
aivan kuten tuodaan tietoja Powershellilla, on myös mahdollista viedä tietoja ja esineitä ulkoiseen tiedostoon käyttämästämme ohjelmasta. PowerShell Studio 2018 sisältää katkelmia, jotka tekevät tietojen viennistä paljon helpompaa—yksinkertaisesti siirtää ulkoisen tiedoston ja objektin polku vastaavaan vientitoimintoon ja katkelma huolehtii kaikesta muusta. Käsittelemme vientiä tiedostoihin käyttäen katkelmia tulevassa blogikirjoituksessa.