我想查询许多服务器以获取sql作业的状态。这一切都适用于一台服务器但我收到此错误:New-Object:找不到" Server"和参数计数:" 2"当我在.txt文件中有多个服务器时。
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")
$sqlServerName = Get-Content 'C:\temp\sqlservers.txt'
$sqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server($sqlServerName)
[Array]$Collection = foreach($job in $sqlServer.JobServer.Jobs)
{
$job | select Name, OriginatingServer, OwnerLoginName, IsEnabled, LastRunDate, LastRunOutcome, DateCReated, DateLastModified,NextRunDate
}
$Collection | Export-CSV "C:\temp\sqljobs.csv" –noType -Encoding:UTF8
任何人都可以帮助我吗?
由于
答案 0 :(得分:0)
错误消息"找不到重载"意味着你放在方法的括号内的东西不起作用。所以在这种情况下,New-Object Microsoft.SqlServer.Management.Smo.Server()
不能采用两个参数。因此,遍历服务器名称并一次传递一个服务器名称:
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")
$sqlServerNames = Get-Content 'C:\temp\sqlservers.txt'
[Array]$Collection = foreach ($sqlServerName in $sqlServerNames) {
$sqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server($sqlServerName)
foreach ($job in $sqlServer.JobServer.Jobs) {
$job | Select-Object Name, OriginatingServer, OwnerLoginName, IsEnabled, LastRunDate, LastRunOutcome, DateCReated, DateLastModified, NextRunDate
}
}
$Collection | Export-CSV "C:\temp\sqljobs.csv" –noType -Encoding:UTF8