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

9

Eu sou novo no mundo de Powershell. Abaixo está 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.

    
por Black Dynamite 11.05.2015 / 16:41

2 respostas

11

New-Object : A parameter cannot be found that matches parameter name 'TypeNamePSObject'

Não é nada ambíguo, o erro indica que –TypeNamePSObject não é um parâmetro conhecido do cmdlet New-Object .

$object = New-Object –TypeNamePSObject

Deve ser em vez disso:

$object = New-Object –TypeName PSObject

Observe o espaço delimitando o parâmetro -TypeName e o valor PSObject .

Você pode usar a conclusão de guias para descobrir parâmetros. No console, digite o nome de um cmdlet, um espaço, - e, em seguida, a guia para percorrer os parâmetros conhecidos. Shift + A aba inverte a ordem.

    
por 11.05.2015 / 16:48
0

Gostaria apenas de adicionar: deve ser: –MemberType NoteProperty (espaço entre).

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

    
por 13.09.2017 / 19:05