Partager via


À propos de l’utilisation

DESCRIPTION COURTE

Vous permet d’indiquer quels espaces de noms sont utilisés dans la session.

DESCRIPTION DÉTAILLÉE

L’instruction using vous permet de spécifier les espaces de noms utilisés dans la session. L’ajout d’espaces de noms simplifie l’utilisation des classes .NET et des membres et vous permet d’importer des classes à partir de modules de script et d’assemblys.

Les using instructions doivent passer avant toutes les autres instructions d’un script.

L’instruction using ne doit pas être confondue avec le modificateur d’étendue using: pour les variables. Pour plus d’informations, consultez about_Remote_Variables.

Syntax

Pour spécifier des espaces de noms .NET à partir desquels résoudre les types :

using namespace <.NET-namespace>

Pour charger des classes à partir d’un module PowerShell :

using module <module-name>

Pour précharger des types à partir d’un assembly .NET :

using assembly <.NET-assembly-path>

La spécification d’un espace de noms facilite la référence des types par leurs noms courts.

Le chargement d’un assembly précharge les types .NET de cet assembly dans un script au moment de l’analyse. Cela vous permet de créer de nouvelles classes PowerShell qui utilisent des types à partir de l’assembly préchargé.

Si vous ne créez pas de classes PowerShell, utilisez l’applet de commande à la Add-Type place. Pour plus d’informations, consultez Add-Type.

Exemples

Exemple 1 - Ajouter des espaces de noms pour la résolution de typename

Le script suivant obtient le hachage de chiffrement de la chaîne « Hello World ».

Notez comment using namespace System.Text et using namespace System.IO simplifiez les références à [UnicodeEncoding] dans System.Text et [Stream] à [MemoryStream] dans 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()

Exemple 2 - Charger des classes à partir d’un module de script

Dans cet exemple, nous avons un module de script PowerShell nommé CardGames qui définit les classes suivantes :

  • CardGames.Deck
  • CardGames.Card

Import-Module et l’instruction #requires importe uniquement les fonctions de module, les alias et les variables, telles que définies par le module. Les classes ne sont pas importées. La using module commande importe le module et charge également les définitions de classe.

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)

Exemple 3 - Charger des classes à partir d’un assembly

Cet exemple charge un assembly afin que ses classes puissent être utilisées pour créer de nouvelles classes PowerShell. Le script suivant crée une classe PowerShell dérivée de la classe 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