Om att använda
KORT BESKRIVNING
Gör att du kan ange vilka namnområden som används i sessionen.
LÅNG BESKRIVNING
Med instruktionen using
kan du ange vilka namnområden som används i sessionen. Genom att lägga till namnrymder förenklas användningen av .NET-klasser och -medlemmar och du kan importera klasser från skriptmoduler och sammansättningar.
- using
instruktionerna måste komma före andra -instruktioner i ett skript.
Instruktionen using
ska inte förväxlas med omfångsmodifieraren using:
för variabler. Mer information finns i about_Remote_Variables.
Syntax
Så här anger du .NET-namnområden som du vill matcha typer från:
using namespace <.NET-namespace>
Så här läser du in klasser från en PowerShell-modul:
using module <module-name>
Så här läser du in typer från en .NET-sammansättning i förväg:
using assembly <.NET-assembly-path>
Om du anger ett namnområde blir det enklare att referera till typer med deras korta namn.
När du läser in en sammansättning läses .NET-typer från den sammansättningen in i ett skript vid parsningstillfället. På så sätt kan du skapa nya PowerShell-klasser som använder typer från den förinstallerade sammansättningen.
Om du inte skapar nya PowerShell-klasser använder du cmdleten Add-Type
i stället. Mer information finns i Add-Type (Lägg till typ).
Exempel
Exempel 1 – Lägga till namnrymder för typnamnsmatchning
Följande skript hämtar den kryptografiska hashen för strängen "Hello World".
Observera hur using namespace System.Text
och using namespace System.IO
förenklar referenser till [UnicodeEncoding]
i System.Text
och [Stream]
till [MemoryStream]
i System.IO
.
using namespace System.Text
using namespace System.IO
[string]$string = "Hello World"
## Valid values are "SHA1", "SHA256", "SHA384", "SHA512", "MD5"
[string]$algorithm = "SHA256"
[byte[]]$stringbytes = [UnicodeEncoding]::Unicode.GetBytes($string)
[Stream]$memorystream = [MemoryStream]::new($stringbytes)
$hashfromstream = Get-FileHash -InputStream $memorystream `
-Algorithm $algorithm
$hashfromstream.Hash.ToString()
Exempel 2 – Läsa in klasser från en skriptmodul
I det här exemplet har vi en PowerShell-skriptmodul med namnet CardGames som definierar följande klasser:
- CardGames.Deck
- CardGames.Card
Import-Module
och -instruktionen #requires
importerar endast modulfunktionerna, aliasen och variablerna enligt modulens definition. Klasser importeras inte. Kommandot using module
importerar modulen och läser även in klassdefinitionerna.
using module CardGames
using namespace CardGames
[Deck]$deck = [Deck]::new()
$deck.Shuffle()
[Card[]]$hand1 = $deck.Deal(5)
[Card[]]$hand2 = $deck.Deal(5)
[Card[]]$hand3 = $deck.Deal(5)
Exempel 3 – Läsa in klasser från en sammansättning
Det här exemplet läser in en sammansättning så att dess klasser kan användas för att skapa nya PowerShell-klasser. Följande skript skapar en ny PowerShell-klass som härleds från klassen DirectoryContext .
using assembly 'C:\Program Files\PowerShell\7\System.DirectoryServices.dll'
using namespace System.DirectoryServices.ActiveDirectory
class myDirectoryClass : System.DirectoryServices.ActiveDirectory.DirectoryContext
{
[DirectoryContext]$domain
myDirectoryClass([DirectoryContextType]$ctx) : base($ctx)
{
$this.domain = [DirectoryContext]::new([DirectoryContextType]$ctx)
}
}
$myDomain = [myDirectoryClass]::new([DirectoryContextType]::Domain)
$myDomain
domain Name UserName ContextType
------ ---- -------- -----------
System.DirectoryServices.ActiveDirectory.DirectoryContext Domain