New-Object
Crea una instancia de un objeto COM o microsoft .NET Framework.
New-Object
[-TypeName] <String>
[[-ArgumentList] <Object[]>]
[-Property <IDictionary>]
[<CommonParameters>]
New-Object
[-ComObject] <String>
[-Strict]
[-Property <IDictionary>]
[<CommonParameters>]
El cmdlet New-Object
crea una instancia de un objeto .NET Framework o COM.
Puede especificar el tipo de una clase de .NET Framework o un ProgID de un objeto COM. De forma predeterminada, escriba el nombre completo de una clase de .NET Framework y el cmdlet devuelve una referencia a una instancia de esa clase. Para crear una instancia de un objeto COM, use el parámetro ComObject y especifique el ProgID del objeto como su valor.
En este ejemplo se crea un objeto System.Version mediante la cadena "1.2.3.4" como constructor.
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
Major Minor Build Revision
----- ----- ----- --------
1 2 3 4
En este ejemplo se crean dos instancias del objeto COM que representa la aplicación internet Explorer. La primera instancia usa la tabla hash de parámetros Property para llamar al método Navigate2 y establecer la propiedad Visible del objeto en $True
para que la aplicación sea visible.
La segunda instancia obtiene los mismos resultados con comandos individuales.
$IE1 = New-Object -COMObject InternetExplorer.Application -Property @{Navigate2="www.microsoft.com"; Visible = $True}
# The following command gets the same results as the example above.
$IE2 = New-Object -COMObject InternetExplorer.Application`
$IE2.Navigate2("www.microsoft.com")`
$IE2.Visible = $True`
En este ejemplo se muestra que agregar el parámetro Strict hace que el cmdlet New-Object
genere un error de no terminación cuando el objeto COM use un ensamblado de interoperabilidad.
$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 primary interop assembly. If
this type exposes different members than the IDispatch 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
En este ejemplo se muestra cómo crear y usar un objeto COM para administrar el escritorio de Windows.
El primer comando usa el parámetro ComObject del cmdlet New-Object
para crear un objeto COM con el Shell.Application ProgID. Almacena el objeto resultante en la variable $ObjShell
. El segundo comando canaliza la variable $ObjShell
al cmdlet Get-Member
, que muestra las propiedades y los métodos del objeto COM. Entre los métodos se encuentra el método ToggleDesktop. El tercer comando llama al método ToggleDesktop del objeto para minimizar las ventanas abiertas en el escritorio.
$Objshell = New-Object -COMObject "Shell.Application"
$objshell | Get-Member
$objshell.ToggleDesktop()
TypeName: System.__ComObject#{866738b9-6cf2-4de8-8767-f794ebe74f4e}
Name MemberType Definition
---- ---------- ----------
AddToRecent Method void AddToRecent (Variant, string)
BrowseForFolder Method Folder BrowseForFolder (int, string, int, Variant)
CanStartStopService Method Variant CanStartStopService (string)
CascadeWindows Method void CascadeWindows ()
ControlPanelItem Method void ControlPanelItem (string)
EjectPC Method void EjectPC ()
Explore Method void Explore (Variant)
ExplorerPolicy Method Variant ExplorerPolicy (string)
FileRun Method void FileRun ()
FindComputer Method void FindComputer ()
FindFiles Method void FindFiles ()
FindPrinter Method void FindPrinter (string, string, string)
GetSetting Method bool GetSetting (int)
GetSystemInformation Method Variant GetSystemInformation (string)
Help Method void Help ()
IsRestricted Method int IsRestricted (string, string)
IsServiceRunning Method Variant IsServiceRunning (string)
MinimizeAll Method void MinimizeAll ()
NameSpace Method Folder NameSpace (Variant)
Open Method void Open (Variant)
RefreshMenu Method void RefreshMenu ()
ServiceStart Method Variant ServiceStart (string, Variant)
ServiceStop Method Variant ServiceStop (string, Variant)
SetTime Method void SetTime ()
ShellExecute Method void ShellExecute (string, Variant, Variant, Variant, Variant)
ShowBrowserBar Method Variant ShowBrowserBar (string, Variant)
ShutdownWindows Method void ShutdownWindows ()
Suspend Method void Suspend ()
TileHorizontally Method void TileHorizontally ()
TileVertically Method void TileVertically ()
ToggleDesktop Method void ToggleDesktop ()
TrayProperties Method void TrayProperties ()
UndoMinimizeALL Method void UndoMinimizeALL ()
Windows Method IDispatch Windows ()
WindowsSecurity Method void WindowsSecurity ()
WindowSwitcher Method void WindowSwitcher ()
Application Property IDispatch Application () {get}
Parent Property IDispatch Parent () {get}
En este ejemplo se muestra cómo crear un objeto con un constructor que toma varios parámetros. Los parámetros deben colocarse en una matriz al usar parámetro ArgumentList.
$array = @('One', 'Two', 'Three')
$parameters = @{
TypeName = 'System.Collections.Generic.HashSet[string]'
ArgumentList = ([string[]]$array, [System.StringComparer]::OrdinalIgnoreCase)
}
$set = New-Object @parameters
PowerShell enlaza cada miembro de la matriz a un parámetro del constructor.
Nota
En este ejemplo se usa la expansión de parámetros para mejorar la legibilidad. Para obtener más información, vea about_Splatting.
En este ejemplo se muestra cómo crear un objeto con un constructor que toma un parámetro que es una matriz o colección. El parámetro de matriz debe colocarse encapsulado dentro de otra matriz.
$array = @('One', 'Two', 'Three')
# This command throws an exception.
$set = New-Object -TypeName 'System.Collections.Generic.HashSet[string]' -ArgumentList $array
# This command succeeds.
$set = New-Object -TypeName 'System.Collections.Generic.HashSet[string]' -ArgumentList (,[string[]]$array)
$set
New-Object : Cannot find an overload for "HashSet`1" and the argument count: "3".
At line:1 char:8
+ $set = New-Object -TypeName 'System.Collections.Generic.HashSet[strin ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
One
Two
Three
Se produce un error en el primer intento de crear el objeto en este ejemplo. PowerShell intentó enlazar los tres miembros de $array
a parámetros del constructor, pero el constructor no toma tres parámetros. Ajustar $array
en otra matriz impide que PowerShell intente enlazar los tres miembros de $array
a los parámetros del constructor.
Especifica una matriz de argumentos que se van a pasar al constructor de la clase de .NET Framework. Si el constructor toma un único parámetro que es una matriz, debe encapsular ese parámetro dentro de otra matriz. Por ejemplo:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate -ArgumentList (,$bytes)
Para obtener más información sobre el comportamiento de ArgumentList, vea about_Splatting.
El alias de argumentList es Args.
Tipo: | Object[] |
Alias: | Args |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Especifica el identificador de programación (ProgID) del objeto COM.
Tipo: | String |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Establece los valores de propiedad e invoca métodos del nuevo objeto.
Escriba una tabla hash en la que las claves son los nombres de propiedades o métodos y los valores son valores de propiedad o argumentos de método.
New-Object
crea el objeto y establece cada valor de propiedad e invoca cada método en el orden en que aparecen en la tabla hash.
Si el nuevo objeto se deriva de la clase PSObject y especifica una propiedad que no existe en el objeto, New-Object
agrega la propiedad especificada al objeto como una Propiedad NoteProperty. Si el objeto no es un PSObject, el comando genera un error de no terminación.
Tipo: | IDictionary |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Indica que el cmdlet genera un error de no terminación cuando un objeto COM que intenta crear usa un ensamblado de interoperabilidad. Esta característica distingue objetos COM reales de objetos de .NET Framework con contenedores a los que se puede llamar COM.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Especifica el nombre completo de la clase de .NET Framework. No puede especificar el parámetro TypeName y el parámetro ComObject.
Tipo: | String |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
None
No se pueden canalizar objetos a este cmdlet.
Este cmdlet devuelve el objeto que crea.
-
New-Object
proporciona la funcionalidad más usada de la función CreateObject de VBScript. Una instrucción comoSet objShell = CreateObject("Shell.Application")
en VBScript se puede traducir a$objShell = New-Object -COMObject "Shell.Application"
en PowerShell. -
New-Object
amplía la funcionalidad disponible en el entorno host de Script de Windows, ya que facilita el trabajo con objetos de .NET Framework desde la línea de comandos y en los scripts.
Comentarios de PowerShell
PowerShell es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: