Powershell: не найден параметр, который соответствует

9

Я новичок в мире Powershell. Ниже мой первый сценарий

$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

Когда я запускаю этот скрипт в PowershellISE, я получаю следующую ошибку.

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

К сожалению для меня, кажется, что «параметр не может быть найден ...» является чрезвычайно распространенной и неоднозначной ошибкой, утверждая, что есть проблема, но никогда, где. Мне было интересно, если кто-нибудь может сказать, почему эта ошибка происходит. О, и я на Windows 7 и моя версия PS

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

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

Любая помощь в этом очень ценится.

Черный динамит
источник

Ответы:

11

New-Object: не найден параметр, который соответствует имени параметра «TypeNamePSObject»

Это совсем не неоднозначно, ошибка указывает, что –TypeNamePSObjectэто не известный параметр New-Objectкомандлета.

$object = New-Object TypeNamePSObject

Должно быть вместо:

$object = New-Object TypeName PSObject

Обратите внимание на пробел, разделяющий параметр -TypeNameи значение PSObject.

Вы можете использовать вкладку завершения для обнаружения параметров. В консоли введите имя командлета, пробел -, а затем Tabциклически просматривайте известные параметры. Shift+ Tabобратный порядок.

jscott
источник
2
Сделал ту же ошибку .. только потому, что этот документ MS имеет ту же ошибку: technet.microsoft.com/en-us/magazine/hh750381.aspx
Флорес
0

Просто хотел бы добавить: это должно быть: –MemberType NoteProperty(пробел между).

В противном случае вы получите эту ошибку: Add-Member : A parameter cannot be found that matches parameter name 'MemberTypeNoteProperty'

element_j
источник