Powershell中的SQLjob概述

时间:2017-09-08 13:38:44

标签: sql-server powershell

我想查询许多服务器以获取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

任何人都可以帮助我吗?

由于

1 个答案:

答案 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