PowerShell: Nie można znaleźć parametru, który pasuje

9

Jestem nowy w świecie Powershell. Poniżej znajduje się mój pierwszy skrypt

$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

Po uruchomieniu tego skryptu w PowershellISE pojawia się następujący błąd.

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

Niestety dla mnie wydaje się, że „Nie można znaleźć parametru ...” jest niezwykle częstym i niejednoznacznym błędem, mówiącym, że jest problem, ale nigdy gdzie. Zastanawiałem się, czy ktoś może powiedzieć, dlaczego ten błąd występuje. Och, i jestem na Windows 7, a moja wersja PS to

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

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

Każda pomoc w tym zakresie jest bardzo mile widziana.

Czarny dynamit
źródło

Odpowiedzi:

11

New-Object: Nie można znaleźć parametru, który pasuje do nazwy parametru „TypeNamePSObject”

To wcale nie jest dwuznaczne, błąd wskazuje, że –TypeNamePSObjectnie jest znanym parametrem polecenia New-Objectcmdlet.

$object = New-Object TypeNamePSObject

Powinien być zamiast tego:

$object = New-Object TypeName PSObject

Zwróć uwagę na spację ograniczającą parametr -TypeNamei wartość PSObject.

Możesz użyć uzupełniania tabulatorów, aby odkryć parametry. W konsoli wpisz nazwę polecenia cmdlet, spację -, a następnie Tabprzejdź przez znane parametry. Shift+ Tabodwróci kolejność.

jscott
źródło
2
Zrobił ten sam błąd .. tylko dlatego, że ten dokument MS ma ten sam błąd: technet.microsoft.com/en-us/magazine/hh750381.aspx
Flores
0

Chciałbym tylko dodać: powinno być: –MemberType NoteProperty(spacja pomiędzy).

W przeciwnym razie pojawia się ten błąd: Add-Member : A parameter cannot be found that matches parameter name 'MemberTypeNoteProperty'

element_j
źródło