Verklaring gebruiken in PowerShell

Verklaring Gebruiken In Powershell



PowerShell is een robuuste opdrachtregel-shell en scripttaal die meestal wordt gebruikt voor het besturen van computersystemen en het automatiseren van administratieve taken. Het gebruik van statements is een van de meest cruciale PowerShell-fundamentals. Met name de “ gebruik makend van ”-verklaring speelt een cruciale rol bij het beheer van bronnen en het waarborgen van een efficiënte code-uitvoering.

In dit artikel worden verschillende aspecten van de instructie 'using' in PowerShell onderzocht, inclusief de syntaxis, het doel en de praktische toepassingen.







Doel van de verklaring 'gebruiken'.

Met de instructie 'using' kunt u specificeren welke naamruimten in de sessie worden gebruikt. Door naamruimten toe te voegen, kunt u klassen uit scriptmodules en samenstellingen importeren en het gebruik van .NET-klassen en -leden vereenvoudigen.



MUST's van 'gebruiken' Verklaring

  • De 'using'-instructie moet vóór alle andere script- of module-instructies verschijnen. Het kan niet worden voorafgegaan door verklaringen zonder commentaar, inclusief parameters.
  • Variabelen mogen niet aanwezig zijn in de instructie 'using'.
  • De instructie 'using' moet niet worden verward met de scope-modifier 'using:' voor variabelen. Ze zijn allebei verschillend in hun doel en betekenis.

Syntaxis van de verklaring 'gebruiken'.



De syntaxis voor de instructie 'using' is:





naamruimte gebruiken < .NET-naamruimte >

Laten we het volgende voorbeeld bekijken:



met behulp van naamruimte System.IO

$ Bytes = [ Bestand ] ::ReadAllBytes ( 'D:\c sharp\Linuxhint1.txt' )
[ Bestandsinformatie ] ::nieuw ( 'D:\c sharp\Linuxhint1.txt' )

In de bovenstaande code hebben we eerst de naamruimte 'System.IO' genoemd. De tweede regel van het programma, [File]::ReadAllBytes(‘D:c sharpLinuxhint1.txt’), leest elke byte uit het aangeleverde bestand en plaatst deze in de variabele $Bytes. In de derde regel maakt [FileInfo]::new('D:c sharpLinuxhint1.txt') een nieuwe instantie van de FileInfo-klasse en retourneert het FileInfo-object.

Verklaring 'gebruiken' voor modules

We kunnen ook de instructie 'using' gebruiken voor het laden van klassen van een module.

Syntaxis

module gebruiken < module naam >

In deze syntaxis kan de “”, een volledige modulespecificatie of een pad naar een modulebestand worden gebruikt als de waarde voor “modulenaam”.

U kunt een volledig gekwalificeerd of relatief pad gebruiken wanneer 'modulenaam>' een pad is. Wanneer een 'using'-instructie aanwezig is in een script, wordt een relatief pad in dat script opgelost.

PowerShell zoekt naar de geleverde module in het PSModulePath wanneer '' een naam of modulespecificatie is. De volgende sleutels vormen de hashtabel die een modulespecificatie is:

Module naam - Vereist. Benoemt de betreffende module.

Optionele GUID – specificeert de GUID van de module.

Bovendien moet u een van de drie onderstaande sleutels opgeven.

Moduleversie – Een minimaal toegestane versie van de module wordt gespecificeerd via de eigenschap “ModuleVersion”.

Maximale versie – Definieert de hoogst toegestane versie van de module.

Vereiste versie – Bepaalt de precieze, noodzakelijke versie van de module met behulp van 'RequiredVersion'. De andere versiesleutels kunnen hiermee niet worden gebruikt.

De rootmodule (ModuleToProcess) van een binaire module of scriptmodule wordt geïmporteerd door de moduledeclaratie 'using'. De klassen die zijn opgegeven in geneste modules of scripts die met puntbronnen in de module zijn opgenomen, worden niet op betrouwbare wijze geïmporteerd. Alle klassen die beschikbaar moeten zijn voor gebruikers buiten de module, moeten worden opgegeven in de rootmodule.

Hier is een voorbeeld:

met behulp van module PSReadline

Verklaring 'gebruikt' voor montage

De instructie 'using' kan ook worden gebruikt om typen van een .NET-assembly vooraf te laden.

Syntaxis

montage gebruiken < .NET-assembly-pad >

In deze syntaxis worden, wanneer een assembly wordt geladen, de .NET-typen van die assembly vooraf in het script geladen voordat het wordt geparseerd. Hierdoor is het mogelijk om nieuwe PowerShell-klassen te ontwikkelen die gebruik maken van de vooraf geladen assemblagetypen.

Kijk naar een voorbeeld van het toepassen van de 'using'-instructie met een 'assembly':

gebruik makend van assembly System.Windows.Forms

In deze opdracht hebben we de assembly geladen ' Systeem.Windows.Formulieren” in PowerShell met behulp van de instructie 'using'.

'using'-verklaring voor hashtabelsleutels

Hash-tabellen ” zijn aanpasbare gegevensstructuren die in PowerShell voor verschillende doeleinden worden gebruikt, waaronder het opslaan van configuratiegegevens, het leveren van argumenten aan cmdlets en het opslaan van gegevens in scripts.

De cryptografische hash voor de string ' LinuxTip! ” wordt verkregen via het volgende script:

met namespace System.Text
met behulp van naamruimte System.IO [ snaar ] $tekenreeks = 'LinuxTip!'
[ snaar ] $ algoritme = 'SHA1'

[ byte [ ] ] $stringbytes = [ Unicodecodering ] ::Unicode.GetBytes ( $tekenreeks )

[ Stroom ] $geheugenstroom = [ MemoryStream ] ::nieuw ( $stringbytes )
$hashfromstream = Get-FileHash -Invoerstroom $geheugenstroom `
-Algoritme $ algoritme
$hashfromstream .Hash.ToString ( )

De bovenstaande PowerShell-code begint met het importeren van de naamruimten die nodig zijn voor bestandsbewerkingen en codering. De invoerreeks en het hash-algoritme (in dit geval ' SHA1 ”), worden dan gedefinieerd. De invoerreeks wordt vervolgens gecodeerd met ' Unicode ' om een ​​reeks bytes te maken.

De inhoud van de byte-array wordt vervolgens gebruikt om een ​​' geheugenstroom ”. De hash-waarde van de memorystream wordt berekend met behulp van het geleverde 'SHA1'-algoritme door de ' Get-FileHash ' cmdlet. Het script eindigt door de verkregen hash-waarde als een string naar de uitvoer af te drukken.

Uitgang

Conclusie

De ' gebruik makend van ”-instructie in PowerShell is een krachtig hulpmiddel voor het specificeren van naamruimten, modules of samenstellingen. De syntaxis en het doel bieden een gestandaardiseerde en veilige benadering voor het omgaan met bronnen, het vergemakkelijken van de juiste verwijdering en het verminderen van codeduplicatie.