Powershell: Es kann kein übereinstimmender Parameter gefunden werden

9

Ich bin neu in der Powershell-Welt. Unten ist mein erstes Skript

$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

Wenn ich dieses Skript in PowershellISE ausführe, wird der folgende Fehler angezeigt.

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

Leider scheint es für mich, dass "Ein Parameter kann nicht gefunden werden ..." ein äußerst häufiger und mehrdeutiger Fehler ist, der besagt, dass es ein Problem gibt, aber niemals wo. Ich habe mich gefragt, ob jemand sagen kann, warum dieser Fehler auftritt. Oh, und ich bin unter Windows 7 und meine PS-Version ist

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

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

Jede Hilfe hierzu wird sehr geschätzt.

Schwarzes Dynamit
quelle

Antworten:

11

Neues Objekt: Es wurde kein Parameter gefunden, der dem Parameternamen 'TypeNamePSObject' entspricht.

Es ist überhaupt nicht mehrdeutig, der Fehler zeigt an, dass –TypeNamePSObjectes sich nicht um einen bekannten Parameter des New-ObjectCmdlets handelt.

$object = New-Object TypeNamePSObject

Sollte stattdessen sein:

$object = New-Object TypeName PSObject

Beachten Sie den Abstand zwischen Parameter -TypeNameund Wert PSObject.

Sie können die Tab-Vervollständigung verwenden, um Parameter zu ermitteln. In der Konsole den Namen eines Cmdlets geben, einen Raum, -und dann , Tabum durch die bekannten Parameter. Shift+ Tabkehrt die Reihenfolge um.

jscott
quelle
2
Den gleichen Fehler gemacht .. nur weil dieses MS-Dokument den gleichen Fehler hat: technet.microsoft.com/en-us/magazine/hh750381.aspx
Flores
0

Ich möchte nur hinzufügen: es sollte sein: –MemberType NoteProperty(Leerzeichen dazwischen).

Andernfalls wird folgende Fehlermeldung angezeigt: Add-Member : A parameter cannot be found that matches parameter name 'MemberTypeNoteProperty'

element_j
quelle