Crea un nuovo modulo dinamico presente solo in memoria.

Sintassi

New-Module [-Name] <string> [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Function <string[]>] [-ReturnResult] [<CommonParameters>]

New-Module [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Function <string[]>] [-ReturnResult] [<CommonParameters>]

Descrizione

Il cmdlet New-Module crea un modulo dinamico da un blocco di script. I membri del modulo dinamico, ad esempio funzioni e variabili, sono immediatamente disponibili nella sessione e rimangono disponibili fino alla chiusura di quest'ultima.

Come nei moduli statici, per impostazione predefinita, i cmdlet e le funzioni di un modulo dinamico vengono esportati, ma non le variabili e gli alias. Tuttavia, è possibile utilizzare il cmdlet Export-ModuleMember e i parametri di New-Module per ignorare le impostazioni predefinite.

I moduli dinamici sono presenti solo nella memoria, non su disco. Come per tutti i moduli, i membri dei moduli dinamici vengono eseguiti in un ambito privato del modulo, ovvero un elemento figlio dell'ambito globale. Con Get-Module non è possibile ottenere un modulo dinamico, ma Get-Command consente di ottenere i membri esportati.

Per rendere disponibile a Get-Module un modulo dinamico, reindirizzare un comando New-Module a Import-Module o reindirizzare l'oggetto modulo restituito da New-Module a Import-Module. Questa azione consente di aggiungere il modulo dinamico all'elenco Get-Module, ma non di salvare il modulo su disco o di renderlo permanente.

Parametri

-ArgumentList <Object[]>

Specifica gli argomenti (valori di parametro) passati al blocco di script.

Obbligatorio?

false

Posizione?

named

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-AsCustomObject

Restituisce un oggetto personalizzato con membri che rappresentano i membri del modulo.

Quando si utilizza il parametro AsCustomObject, New-Module crea il modulo dinamico, importa i membri del modulo nella sessione corrente, quindi restituisce un oggetto PSCustomObject anziché PSModuleInfo. È possibile salvare l'oggetto personalizzato in una variabile e utilizzare la notazione con punto per richiamare i membri.

Se il modulo dispone di più membri con lo stesso nome, ad esempio una funzione e una variabile entrambi denominati "A", solo un membro con ogni nome è accessibile dall'oggetto personalizzato.

Obbligatorio?

false

Posizione?

named

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Cmdlet <string[]>

Esporta solo i cmdlet specificati dal modulo nella sessione corrente. Immettere un elenco di cmdlet delimitati da virgole. È consentito l'utilizzo di caratteri jolly. Per impostazione predefinita, vengono esportati tutti i cmdlet nel modulo.

Non è possibile definire i cmdlet in un blocco di script, ma un modulo dinamico può includere cmdlet se li importa da un modulo binario.

Obbligatorio?

false

Posizione?

named

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

-Function <string[]>

Esporta solo le funzioni specificate dal modulo nella sessione corrente. Immettere un elenco di funzioni separate da virgole. È consentito l'utilizzo di caratteri jolly. Per impostazione predefinita, vengono esportate tutte le funzioni definite in un modulo.

Obbligatorio?

false

Posizione?

named

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

-Name <string>

Specifica un nome per il nuovo modulo. È inoltre possibile reindirizzare il nome di un modulo a New-Module.

Il valore predefinito è un nome generato automaticamente che inizia con "__DynamicModule_" seguito da un GUID che specifica il percorso del modulo dinamico.

Obbligatorio?

true

Posizione?

1

Valore predefinito

"__DynamicModule_" + GUID

Accettare input da pipeline?

true (ByValue)

Accettare caratteri jolly?

false

-ReturnResult

Esegue il blocco di script e ne restituisce i risultati anziché restituire un oggetto modulo.

Obbligatorio?

false

Posizione?

named

Valore predefinito

False

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-ScriptBlock <scriptblock>

Specifica il contenuto del modulo dinamico. Racchiudere il contenuto tra parentesi graffe ( { } ) per creare un blocco di script. Questo parametro è obbligatorio.

Obbligatorio?

true

Posizione?

1

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.String

È inoltre possibile reindirizzare una stringa di nomi di modulo a New-Module.

Output

System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject oppure Nessuno

Per impostazione predefinita, New-Module genera un oggetto PSModuleInfo. Se si utilizza il parametro AsCustomObject, viene generato un oggetto PSCustomObject. Se si utilizza il parametro ReturnResult, viene restituito il risultato della valutazione del blocco di script nel modulo dinamico.

Note

È inoltre possibile fare riferimento a New-Module tramite il relativo alias, "nmo". Per ulteriori informazioni, vedere about_Aliases.

Esempio 1

C:\PS>new-module -scriptblock {function Hello {"Hello!"}}

Name              : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Path              : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Description       :
Guid              : 00000000-0000-0000-0000-000000000000
Version           : 0.0
ModuleBase        :
ModuleType        : Script
PrivateData       :
AccessMode        : ReadWrite
ExportedAliases   : {}
ExportedCmdlets   : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules     : {}

Descrizione
-----------
Questo comando consente di creare un nuovo modulo dinamico con una funzione denominata "Salve". Il comando restituisce un oggetto modulo che rappresenta il nuovo modulo dinamico.






Esempio 2

C:\PS>new-module -scriptblock {function Hello {"Hello!"}}

Name              : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Path              : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Description       :
Guid              : 00000000-0000-0000-0000-000000000000
Version           : 0.0
ModuleBase        :
ModuleType        : Script
PrivateData       :
AccessMode        : ReadWrite
ExportedAliases   : {}
ExportedCmdlets   : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules     : {}

C:\PS> get-module
C:\PS>

C:\PS> get-command Hello

CommandType     Name   Definition
-----------     ----   ----------
Function        Hello  "Hello!"

Descrizione
-----------
In questo esempio viene illustrato che il cmdlet Get-Module non restituisce i moduli dinamici, mentre il cmdlet Get-Command restituisce i membri esportati da questi ultimi.






Esempio 3

C:\PS>New-Module -scriptblock {$SayHelloHelp="Type 'SayHello', a space, and a name."; function SayHello ($name) { "Hello, $name" }; Export-ModuleMember -function SayHello -Variable SayHelloHelp}

C:\PS> $SayHelloHelp
Type 'SayHello', a space, and a name.

C:\PS> SayHello Jeffrey
Hello, Jeffrey

Descrizione
-----------
Questo comando utilizza il cmdlet Export-ModuleMember per esportare una variabile nella sessione corrente. Senza il comando Export-ModuleMember, viene esportata solo la funzione.

L'output indica che la variabile e la funzione sono state esportate nella sessione.






Esempio 4

C:\PS>new-module -scriptblock {function Hello {"Hello!"}} -name GreetingModule | import-module

C:\PS> get-module


Name              : GreetingModule
Path              : d54dfdac-4531-4db2-9dec-0b4b9c57a1e5
Description       :
Guid              : 00000000-0000-0000-0000-000000000000
Version           : 0.0
ModuleBase        :
ModuleType        : Script
PrivateData       :
AccessMode        : ReadWrite
ExportedAliases   : {}
ExportedCmdlets   : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules     : {}


C:\PS> get-command hello

CommandType     Name                                                               Definition
-----------     ----                                                               ----------
Function        Hello                                                              "Hello!"

Descrizione
-----------
Con questo comando viene illustrato che è possibile rendere disponibile un modulo dinamico al cmdlet Get-Module reindirizzando il modulo dinamico al cmdlet Import-Module.

Il primo comando utilizza un operatore pipeline (|) per inviare l'oggetto modulo generato da New-Module al cmdlet Import-Module. Viene utilizzato il parametro Name di New-Module per assegnare un nome descrittivo al modulo. Poiché Import-Module non restituisce oggetti per impostazione predefinita, non viene generato alcun output.

Il secondo comando utilizza il cmdlet Get-Module per ottenere i moduli nella sessione. Il risultato dimostra che Get-Module è in grado di ottenere il nuovo modulo dinamico.

Il terzo comando utilizza il cmdlet Get-Command per ottenere la funzione Salve esportata dal modulo dinamico.






Esempio 5

C:\PS>$m = new-module -scriptblock {function Hello ($name) {"Hello, $name"}; function Goodbye ($name) {"Goodbye, $name"}} -AsCustomObject

C:\PS> $m

C:\PS> $m | get-member

   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Goodbye     ScriptMethod System.Object Goodbye();
Hello       ScriptMethod System.Object Hello();

PS C:\ps-test> $m.goodbye("Jane")
Goodbye, Jane

PS C:\ps-test> $m.hello("Manoj")
Hello, Manoj

PS C:\ps-test> goodbye Jane
Goodbye, Jane

PS C:\ps-test> hello Manoj
Hello, Manoj

Descrizione
-----------
In questo esempio viene illustrato come utilizzare il parametro AsCustomObject di New-Module per generare un oggetto personalizzato con metodi script che rappresentano le funzioni esportate.

Il primo comando utilizza il cmdlet New-Module per generare un modulo dinamico con due funzioni, Salve e Saluti. Utilizza il parametro AsCustomObject per generare un oggetto personalizzato anziché l'oggetto PSModuleInfo generato da New-Module per impostazione predefinita. Il comando consente di salvare l'oggetto personalizzato nella variabile $m.

Il secondo comando tenta di visualizzare il valore della variabile $m. Non viene visualizzato alcun contenuto.

Il terzo comando utilizza un operatore pipeline (|) per inviare l'oggetto personalizzato al cmdlet Get-Member, che consente di visualizzarne le proprietà e i metodi. L'output indica che l'oggetto dispone di metodi script che rappresentano le funzioni Salve e Saluti.

Il quarto e il quinto comando utilizzano il formato del metodo script per chiamare le funzioni Salve e Saluti. 
 
Il sesto e il settimo comando chiamano le funzioni specificando il nome della funzione e il valore di parametro.






Esempio 6

C:\PS>new-module -scriptblock {function SayHello {"Hello, World!"}; SayHello} -returnResult

Hello, World!

Descrizione
-----------
Questo comando utilizza il parametro ReturnResult per richiedere i risultati dell'esecuzione del blocco di script anziché richiedere un oggetto modulo. 

Il blocco di script nel nuovo modulo definisce la funzione SayHello, quindi la chiama.






Vedere anche




Argomenti della Guida