New-Object
Crea un'istanza di un oggetto Microsoft .NET Framework o COM.
Sintassi
New-Object -ComObject <string> [-Strict] [-Property <hashtable>] [<CommonParameters>]
New-Object [-TypeName] <string> [[-ArgumentList] <Object[]>] [-Property <hashtable>] [<CommonParameters>]
Descrizione
Il cmdlet New-Object crea un'istanza di un oggetto .NET Framework o COM.
È possibile specificare il tipo di una classe .NET Framework o un ProgID di un oggetto COM. Per impostazione predefinita, il nome completo di una classe .NET Framework viene digitato dall'utente, mentre il cmdlet restituisce un riferimento a un'istanza di tale classe. Per creare un'istanza di un oggetto COM, utilizzare il parametro ComObject e specificare come valore il ProgID dell'oggetto.
Parametri
-ArgumentList <Object[]>
Specifica un elenco di argomenti da passare al costruttore della classe .NET Framework. Utilizzare le virgole (,) per separare gli elementi dell'elenco. L'alias per ArgumentList è Args.
Obbligatorio? |
false |
Posizione? |
2 |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-ComObject <string>
Specifica il ProgID (Programmatic Identifier) dell'oggetto COM.
Obbligatorio? |
true |
Posizione? |
named |
Valore predefinito |
nessuno |
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Property <hashtable>
Imposta i valori delle proprietà e richiama i metodi del nuovo oggetto.
Immettere una tabella hash in cui le chiavi sono i nomi di proprietà o metodi e i valori sono valori di proprietà o argomenti di metodo. New-Object crea l'oggetto, quindi imposta ogni valore di proprietà e richiama ogni metodo nell'ordine in cui si trova nella tabella hash.
Se il nuovo oggetto è derivato dalla classe PSObject e si specifica una proprietà che non esiste nell'oggetto, New-Object aggiunge la proprietà specificata all'oggetto come NoteProperty. Se l'oggetto non è un oggetto PSObject, il comando genera un errore non fatale.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Strict
Specifica che è necessario generare un errore se nell'oggetto COM che si tenta di creare viene utilizzato un assembly di interoperabilità. In tal modo è possibile distinguere gli oggetti COM effettivi dagli oggetti .NET Framework con COM Callable Wrapper.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-TypeName <string>
Specifica il nome completo della classe .NET Framework. Non è possibile specificare sia il parametro TypeName che il parametro ComObject.
Obbligatorio? |
true |
Posizione? |
1 |
Valore predefinito |
|
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 |
Nessuno Non è possibile reindirizzare l'input a questo cmdlet. |
Output |
Object New-Object restituisce l'oggetto creato. |
Note
New-Object fornisce la funzionalità più comunemente utilizzata della funzione VBScript CreateObject. L'istruzione Set objShell = CreateObject("Shell.Application") di VBScript può infatti essere convertita in $objShell = new-object -comobject "Shell.Application" in Windows PowerShell.
New-Object può essere espanso sulla base delle funzionalità disponibili nell'ambiente Windows Script Host e consente di gestire facilmente oggetti .NET Framework dalla riga di comando e all'interno di script.
Esempio 1
C:\PS>new-object -typename System.Version -argumentlist "1.2.3.4"
Major Minor Build Revision
----- ----- ----- --------
1 2 3 4
Descrizione
-----------
Questo comando crea un oggetto System.Version, utilizzando la stringa "1.2.3.4" come costruttore.
Esempio 2
C:\PS>$ie = new-object -comobject InternetExplorer.Application -property @{navigate2="www.microsoft.com"; visible = $true}
Descrizione
-----------
Tramite questo comando verrà creata un'istanza dell'oggetto COM che rappresenta l'applicazione Internet Explorer. Il parametro Property verrà utilizzato per chiamare il metodo Navigate2 e per impostare la proprietà Visible dell'oggetto su $true per rendere visibile l'applicazione.
Questo comando equivale al seguente:
$ie = new-object -comobject InternetExplorer.Application
$ie.navigate2("www.microsoft.com")
$ie.visible = $true
Esempio 3
C:\PS>$a=new-object -comobject Word.Application -strict -property @{visible=$true}
New-Object : The object written to the pipeline is an instance of the type
"Microsoft.Office.Interop.Word.ApplicationClass" from the component's prima
ry interop assembly. If this type exposes different members than the IDispa
tch members, scripts written to work with this object might not work if the
primary interop assembly is not installed.
At line:1 char:14
+ $a=New-Object <<<< -COM Word.Application -Strict; $a.visible=$true
Descrizione
-----------
Con questo comando viene illustrato che se si specifica il parametro Strict, il cmdlet New-Object genera un errore non fatale quando l'oggetto COM creato utilizza un assembly di interoperabilità.
Esempio 4
C:\PS>$objshell = new-object -comobject "Shell.Application"
C:\PS> $objshell | get-member
C:\PS> $objshell.ToggleDesktop()
Descrizione
-----------
Nel comando viene utilizzato il parametro ComObject per creare un oggetto COM il cui ProgID è "Shell.Application". Consente di archiviare l'oggetto risultante nella variabile $objShell.
Con il secondo comando viene reindirizzata la variabile $objShell al cmdlet Get-Member che consente di visualizzare le proprietà e i metodi dell'oggetto COM.
Con il terzo comando viene chiamato il metodo ToggleDesktop dell'oggetto per ridurre le finestre aperte sul desktop.
Vedere anche
Concetti
Compare-Object
Select-Object
Sort-Object
ForEach-Object
Group-Object
Measure-Object
Tee-Object
Where-Object