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
Flores

0

追加したいだけです:それは次のとおりです:(–MemberType NoteProperty間にスペース)。

そうしないと、次のエラーが発生します。 Add-Member : A parameter cannot be found that matches parameter name 'MemberTypeNoteProperty'

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.