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змінить порядок.


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'

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.