Powershell:找不到匹配的参数

Bla*_*ite 10 windows powershell powershell-v4.0

我是 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
Run Code Online (Sandbox Code Playgroud)

当我在 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
Run Code Online (Sandbox Code Playgroud)

对我来说不幸的是,似乎“找不到参数...”是一个极其常见且模棱两可的错误,表示存在问题,但从未出现在何处。我想知道是否有人能说出为什么会发生此错误。哦,我在 Windows 7 上,我的 PS 版本是

PS C:\Users\someone> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1
Run Code Online (Sandbox Code Playgroud)

非常感谢您对此的任何帮助。

jsc*_*ott 13

新对象:找不到与参数名称“TypeNamePSObject”匹配的参数

它一点也不含糊,错误表明–TypeNamePSObject不是New-Objectcmdlet的已知参数。

$object = New-Object –TypeNamePSObject
Run Code Online (Sandbox Code Playgroud)

应该改为:

$object = New-Object –TypeName PSObject
Run Code Online (Sandbox Code Playgroud)

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

您可以使用制表符完成来发现参数。在控制台中,键入 cmdlet 的名称、空格、-,然后Tab循环显示已知参数。Shift+Tab将颠倒顺序。

  • 犯了同样的错误..只是因为这个 MS 文档有同样的错误:https://technet.microsoft.com/en-us/magazine/hh750381.aspx (3认同)