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
これに関するどんな助けでも大歓迎です。
New-Object:パラメーター名 'TypeNamePSObject'と一致するパラメーターが見つかりません
あいまいではありません。エラーは、–TypeNamePSObject
がNew-Object
コマンドレットの既知のパラメーターではないことを示しています。
$object = New-Object –TypeNamePSObject
代わりに:
$object = New-Object –TypeName PSObject
パラメータ-TypeName
と値PSObject
を区切るスペースに注意してください。
タブ補完を使用してパラメータを見つけることができます。コンソールで、コマンドレットの名前、スペース、 -、その後 Tab 既知のパラメータを循環します。 Shift + Tab 順序が逆になります。
追加したいだけです:–MemberType NoteProperty
(間にスペース)。
そうしないと、次のエラーが発生します:Add-Member : A parameter cannot be found that matches parameter name 'MemberTypeNoteProperty'