Powershell: no se puede encontrar un parámetro que coincida

9

Soy nuevo en el mundo de Powershell. A continuación se muestra mi primer guión.

$sServer = "Fully.Qualified.Computer.Name"

$os = Get-WmiObject -class Win32_OperatingSystem -computername $sServer
$object = New-Object TypeNamePSObject
$object | Add-Member MemberTypeNoteProperty Name OSBuild Value $os.BuildNumber
$object | Add-Member MemberTypeNoteProperty Name OSVersion Value $os.Version
$object | Add-Member MemberTypeNoteProperty Name BIOSSerial Value $bios.SerialNumber
Write-Output $object

Cuando ejecuto este script en PowershellISE, aparece el siguiente error.

New-Object : A parameter cannot be found that matches parameter name 'TypeNamePSObject'.
At C:\Users\someone\Desktop\SchwansScript.ps1:27 char:22
+ $object = New-Object TypeNamePSObject
+                      ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [New-Object],ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

Desafortunadamente para mí, parece que "No se puede encontrar un parámetro ..." es un error extremadamente común y ambiguo, que dice que hay un problema, pero nunca dónde. Me preguntaba si alguien podría decir por qué se produce este error. Ah, y estoy en Windows 7 y mi versión de PS es

PS C:\Users\someone> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

Cualquier ayuda en esto es muy apreciada.

Dinamita negra
fuente

Respuestas:

11

Nuevo objeto: no se puede encontrar un parámetro que coincida con el nombre del parámetro 'TypeNamePSObject'

No es ambiguo en absoluto, el error indica –TypeNamePSObjectque no es un parámetro conocido del New-Objectcmdlet.

$object = New-Object TypeNamePSObject

Debería ser en su lugar:

$object = New-Object TypeName PSObject

Tenga en cuenta el espacio que delimita el parámetro -TypeNamey el valor PSObject.

Puede usar la finalización de pestañas para descubrir parámetros. En la consola, escriba el nombre de un cmdlet, un espacio, -y luego Tabrecorra los parámetros conocidos. Shift+ Tabinvertirá el orden.

jscott
fuente
2
Cometió el mismo error ... solo porque este documento de MS tiene el mismo error: technet.microsoft.com/en-us/magazine/hh750381.aspx
Flores
0

Solo me gustaría agregar: debería ser: –MemberType NoteProperty(espacio en el medio).

De lo contrario, obtienes este error: Add-Member : A parameter cannot be found that matches parameter name 'MemberTypeNoteProperty'

element_j
fuente