新对象:在 PowerShell 脚本中找不到 "Server" 和参数计数的重载:“*numberofservers*”
new-object : Cannot find an overload for "Server" and the argument count: "*numberofservers*" in PowerShell script
代码目标:提取服务器的某些对象属性。我使用以下代码获取这些服务器的列表:
$serverlist = (get-adcomputer -filter {dnshostname -like "*SQL*" -and operatingsystem -like "windows *server*"}).name
然后我遍历列表中的每个名字:
$serverlist | ForEach-Object {
$s = new-object Microsoft.SqlServer.Management.SMO.Server($serverlist)
$s | Format-List @{Name = "Server";e={$s.Name}},
@{Name = "VersionString";e={$s.VersionString}},
@{Name = "Product Level";e={$s.ProductLevel}},
@{Name = "Collation";e={$s.Collation}},
@{Name = "Credentials";e={$s.Credentials}},
@{Name = "Clustered?";e={$s.IsClustered}},
@{Name = "One Owner?";e={$s.IsSingleUser}},
@{Name = "Root";e={$s.RootDirectory}} | Out-File -path -append
我收到 "server" 的新对象过载错误的次数与服务器的次数一样多。我不太确定是什么导致了这个问题;当我为 $serverlist 硬编码一个计算机名称时,代码工作正常。 IE。
$serverlist = @("Some-Server-01")
使用服务器列表作为输入后,我开始收到此错误。帮助将不胜感激。
更多错误信息:
At C:\somepath
+ $s = new-object Microsoft.SqlServer.Management.SMO.Server($serverli ...
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
您可能想创建一个新的 Server
对象,基于各个服务器的名称,而不是基于 $ServerList
,它是一个 AD 计算机对象数组。请记住,您在 foreach
循环内工作,该循环针对对象数组 ($ServerList
) 中的每个项目运行一次。
您不能使用计算机对象数组创建 SQL SMO Server
对象。您根据单个系统的名称创建一个。
$s = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server -ArgumentList $PSItem
代码目标:提取服务器的某些对象属性。我使用以下代码获取这些服务器的列表:
$serverlist = (get-adcomputer -filter {dnshostname -like "*SQL*" -and operatingsystem -like "windows *server*"}).name
然后我遍历列表中的每个名字:
$serverlist | ForEach-Object {
$s = new-object Microsoft.SqlServer.Management.SMO.Server($serverlist)
$s | Format-List @{Name = "Server";e={$s.Name}},
@{Name = "VersionString";e={$s.VersionString}},
@{Name = "Product Level";e={$s.ProductLevel}},
@{Name = "Collation";e={$s.Collation}},
@{Name = "Credentials";e={$s.Credentials}},
@{Name = "Clustered?";e={$s.IsClustered}},
@{Name = "One Owner?";e={$s.IsSingleUser}},
@{Name = "Root";e={$s.RootDirectory}} | Out-File -path -append
我收到 "server" 的新对象过载错误的次数与服务器的次数一样多。我不太确定是什么导致了这个问题;当我为 $serverlist 硬编码一个计算机名称时,代码工作正常。 IE。
$serverlist = @("Some-Server-01")
使用服务器列表作为输入后,我开始收到此错误。帮助将不胜感激。
更多错误信息:
At C:\somepath
+ $s = new-object Microsoft.SqlServer.Management.SMO.Server($serverli ...
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
您可能想创建一个新的 Server
对象,基于各个服务器的名称,而不是基于 $ServerList
,它是一个 AD 计算机对象数组。请记住,您在 foreach
循环内工作,该循环针对对象数组 ($ServerList
) 中的每个项目运行一次。
您不能使用计算机对象数组创建 SQL SMO Server
对象。您根据单个系统的名称创建一个。
$s = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server -ArgumentList $PSItem