Dela via


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