我是 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
非常感谢您对此的任何帮助。
它一点也不模棱两可,错误表明
–TypeNamePSObject
它不是New-Object
cmdlet 的已知参数。应该改为:
注意分隔参数
-TypeName
和值的空格PSObject
。您可以使用制表符完成来发现参数。在控制台中,键入 cmdlet 的名称、空格、-,然后Tab循环显示已知参数。Shift+Tab将颠倒顺序。
只想补充:应该是:(
–MemberType NoteProperty
中间有空格)。否则,您会收到此错误:
Add-Member : A parameter cannot be found that matches parameter name 'MemberTypeNoteProperty'