PowerShell: Não foi possível encontrar um parâmetro que corresponda

9

Eu sou novo no mundo do Powershell. Abaixo está o meu primeiro script

$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

Quando executo esse script no PowershellISE, recebo o seguinte erro.

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

Infelizmente para mim, parece que "Um parâmetro não pode ser encontrado ..." é um erro extremamente comum e ambíguo, dizendo que há um problema, mas nunca onde. Eu queria saber se alguém poderia dizer por que esse erro está ocorrendo. Ah, e eu estou no Windows 7 e minha versão PS é

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

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

Qualquer ajuda sobre isso é muito apreciada.

Dinamite Negra
fonte

Respostas:

11

New-Object: Não foi possível encontrar um parâmetro que corresponda ao nome do parâmetro 'TypeNamePSObject'

Não é ambíguo, o erro indica que –TypeNamePSObjectnão é um parâmetro conhecido do New-Objectcmdlet.

$object = New-Object TypeNamePSObject

Em vez disso, deve ser:

$object = New-Object TypeName PSObject

Observe o espaço que delimita o parâmetro -TypeNamee o valor PSObject.

Você pode usar o preenchimento de guias para descobrir parâmetros. No console, digite o nome de um cmdlet, um espaço e -, em seguida, Tabpara percorrer os parâmetros conhecidos. Shift+ Tabreverterá a ordem.

jscott
fonte
2
Fez o mesmo erro .. só porque este documento MS tem o mesmo erro: technet.microsoft.com/en-us/magazine/hh750381.aspx
Flores
0

Gostaria apenas de acrescentar: deve ser: –MemberType NoteProperty(espaço intermediário).

Caso contrário, você receberá este erro: Add-Member : A parameter cannot be found that matches parameter name 'MemberTypeNoteProperty'

element_j
fonte