Na naše PowerShell společenství fóra, v poslední době jsme obdrželi dotazy, jestli je možné uložit PowerShell proměnné v externích souborech, a pokud ano, jak se to dělá. Je skutečně možné ukládat proměnné do externích souborů pro použití PowerShell. Tyto externí proměnné mohou být uloženy v různých typech souborů. Jejich uložení do souboru PowerShell je jedním z nejjednodušších, protože tyto soubory můžete jednoduše dot source.
pokryjeme následující metody pro ukládání proměnných:
- Soubory Skriptu
- Textové Soubory
- JSON Soubory
- XML Soubory
příklady uvedené v tomto příspěvku jsou docela jednoduché, ale to neznamená, že to není možné uložit poměrně komplexní proměnné v externích souborech. Pokud chcete experimentovat s ukládáním externích proměnných, můžete si stáhnout ukázkové soubory pro tento příspěvek zde.
soubory skriptů
Dot sourcing může být nejjednodušší způsob ukládání externích proměnných-ale není to vždy nejbezpečnější. Když je soubor dot Source říkáme PowerShell spustit tento skript. Pokud je v souboru nějaký škodlivý kód, spustí se také tento kód.
V addtion dot získávání, budete také muset zajistit, že externí proměnné skriptu PowerShell je podepsána, a že Vzdálené Spuštění je povoleno na vašem počítači.
Dot sourcing může být užitečné, pokud potřebujeme získat informace o něčem dynamicky. U ostatních možností popsaných v tomto příspěvku bude nutné data uložená v typech souborů ručně změnit.
1234 |
# zde tečka zdroj externí proměnné PowerShell soubor. "C:\Test\BlogPosts\ExternalVariables.ps1" Write-Host $External_Variable1 $External_Variable2
|
Zde je to, co je v ExternalVariables.ps1 soubor:
#Deklarace Externích proměnných
$External_Variable1 = ‚Člověk‘
$External_Variable2 = ‚Technologie‘
Textové Soubory
Vnější proměnné mohou být také uloženy v několika textových souborů a formátů, jako prostý text v obecné .txt soubor pomocí cmdlet Get-Content. Když importujeme proměnné tímto způsobem, nespustíme žádný kód, takže není problém, pokud soubory neustále nesledujete, abyste získali informace.
následující tři obrázky jsou příklady různých způsobů ukládání informací do jednoduchého textového souboru:
12345678910111213 |
$ScriptDir = Split-Path $scénář:MyInvocation.MyCommand.Cesta$ScriptDir + = " \ExternalVariables.txt" # Použít obsah, aby se všechny čáry, které jsou v txt souborů $External_Variables = Get-Content-Path $ScriptDir #Informace z ExternalVariables přijde jako pole #Tak vytisknout všechny řetězce v $program budeme používat foreach loopforeach ($řetězce $External_Variables){Write-Host $string}
|
Zde je to, co je v ExternalVariables.txt soubor:
„PowerShell Studio“
„PrimalScript“
„Verze Připomenout“
Stejně jako pole, můžeme ukládat hash tabulek v textové soubory. Chcete-li získat naši hash tabulku z textového souboru, budeme muset pipe výstup Get-Content do rutiny ConvertFrom-StringData převést výstup do tabulky hash.
1234567891011121314 |
$ScriptDir = Split-Path $scénář:MyInvocation.MyCommand.Cesta$ScriptDir + = " \ExternalVariablesHashTable.txt"# Dostat obsah z Externí Proměnná textového souboru# Tento soubor je obchod v plánu textu a není v žádném zvláštním formátu # používáme "raw" parametr zde v Dostat-Obsahu tak, že když jsme získat obsah# souboru tak, že naše hashtable není převeden na objekt$program = Get-Content-raw-Path $ScriptDir | ConvertFrom-společnost stringdata write-host "`nType proměnné `$program ' n ' "$program.GetType() write-host "`nPrinting `$program" $program
|
Zde je to, co je v ExternalVariablesHashTable.txt:
Firma=Sapien Technologies
Produkt=PowerShell Studio
Ukládání informací do textového souboru, jako to je pohodlný způsob, jak udržet informace v lidském čitelném formátu. Textové soubory také přicházejí s výhodou, že nejsou spustitelné, takže pokud se stane, že je škodlivý kód uložený v souboru, který pravidelně nespravujete, nebude proveden.
JSON soubor
je také možné ukládat externí proměnné ve formátu JSON. Jedinou námitkou je, že budeme muset znovu poslat výstup Get-Content do jiné rutiny; nicméně tentokrát je to ConvertFrom-Json spíše než ConvertFrom-StringData. Pro ty neobeznámený s JSON, nebo je potřeba oprášit formát, prosím, navštivte www.JSON.org.
1234567891011121314151617 |
$ScriptDir = Split-Path $scénář:MyInvocation.MyCommand.Cesta$ScriptDir + = " \jsonfile.json"#Získávání informací z json souboru#míjíme výstup z Get-Obsah ConvertFrom-Json Rutiny$JsonObject = Get-Content $ScriptDir | ConvertFrom-Json #teď máme pole, což znamená, že máme na index#prvek použít$JsonObject.Uživatelé #Když indexovány můžeme nazvat atributy elementsWrite-Host "Atributy jednotlivě printed"$JsonObject.Users.Name$JsonObject.Users.Age$JsonObject.Users.City$JsonObject.Users.Country$JsonObject.Users.UserId
|
Zde je to, co je v JSON Souboru:
{
„Uživatelé“:
}
XML Soubor
Pokud budeme ukládat naše proměnné v XML formátu, můžeme přidat komentáře do proměnné soubor, pokud je to nutné. Jediné dva formáty souborů, o kterých budeme hovořit v tomto příspěvku, který umožňuje komentáře, jsou XML nebo PS1. JSON a normální TXT soubory neumožňují Komentáře. Pro stručný přehled formátu XML, navštivte w3schools.com/xml.
123456789 |
$ScriptDir = Split-Path $scénář:MyInvocation.MyCommand.Cesta$ScriptDir + = " \XMLFile.xml"#Přečtěte si všechny informace z našich proměnných XML souboru#Budeme muset obsazení proměnné, jako když jsme ukládat všechny informace o souboru v $XML_Variable = Get-Content-Path $ScriptDir #Odkazování na Jídlo Objekt pole uložené v rámci Snídaně Objekt$XML_Variable.Snídaně.Jídlo | Format-List
|
Zde je to, co je v XML souboru:
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
900Berry-Berry Belgické Vafle
$8.95
Belgické vafle pokryté různé čerstvým ovocem a šlehačkou
900
Při výběru mezi XML a JSON, ukládání formátů, přijde na to, který z nich je známější. Vzhledem k tomu, že hlavní rozdíl mezi nimi spočívá v tom, že XML umožňuje komentáře, je to jen otázka preference. Všechny tyto možnosti jsou životaschopné způsoby, jak ukládat informace do externích souborů, které mají být buď čteny jiným programem, nebo použity stejným programem později. Jak složité, ať už je dynamické nebo ne, a kolik informací je třeba uložit, bude diktovat formát, který se má použít.
Export do Souborů
Stejně jako import informací s PowerShell, je také možné exportovat informace a objekty do externího souboru z programu využíváme. PowerShell Studio 2018 přichází s úryvky, které usnadňují export informací-jednoduše předejte cestu externího souboru a objektu odpovídající funkci exportu a úryvek se postará o všechno ostatní. Budeme se zabývat exportem do souborů pomocí úryvků v budoucím příspěvku na blogu.