web-dev-qa-db-ja.com

PowerShell:一致するパラメーターが見つかりません

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

これに関するどんな助けでも大歓迎です。

9
Black Dynamite

New-Object:パラメーター名 'TypeNamePSObject'と一致するパラメーターが見つかりません

あいまいではありません。エラーは、–TypeNamePSObjectNew-Objectコマンドレットの既知のパラメーターではないことを示しています。

$object = New-Object –TypeNamePSObject

代わりに:

$object = New-Object –TypeName PSObject

パラメータ-TypeNameと値PSObjectを区切るスペースに注意してください。

タブ補完を使用してパラメータを見つけることができます。コンソールで、コマンドレットの名前、スペース、 -、その後 Tab 既知のパラメータを循環します。 Shift + Tab 順序が逆になります。

11
jscott

追加したいだけです:–MemberType NoteProperty(間にスペース)。

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

0
element_j