À 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