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

在此方面的任何帮助将不胜感激。

Answers:


11

New-Object:找不到与参数名称“ TypeNamePSObject”匹配的参数

它根本不是模棱两可的,错误表明–TypeNamePSObject不是New-Objectcmdlet 的已知参数。

$object = New-Object TypeNamePSObject

应该改为:

$object = New-Object TypeName PSObject

注意用空格分隔参数-TypeName和值PSObject

您可以使用制表符补全来发现参数。在控制台中,键入cmdlet的名称,空格-,然后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'

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.