0

PowerShell を初めて使用するので、助けが必要です。以下は、BizTalk でホスト インスタンスの状態を確認するための標準的なスクリプトです。

2 つのタスクがあります。1. スクリプトの出力をメールで送信します。2. PS スクリプトをスケジュールします。

$servers = (".")

#This function checks the status of the host instances on a BizTalk server ($Server).
function checkhostinstancestatusstarted ($server)
{
#gets all host instances on the server. Isolated (hosttype = 2) or disabled hosts are excluded .
    $hostinstances = get-wmiobject MSBTS_HostInstance -namespace 'root\MicrosoftBizTalkServer' | where {$_.runningserver -match $server -AND $_.hosttype -ne "2" -and $_.IsDisabled -ne "True"}
    write-host "Checking the state of all host instances on the server $server`:"

    foreach ($hostinstance in $hostinstances)
    {
        $HostInstanceName = $HostInstance.hostname

#Checks the host instance state
        if ($HostInstance.ServiceState -eq 1)
        {
            write-host "$HostInstanceName`: Stopped."
        }
        elseif ($HostInstance.ServiceState -eq 2)
        {
            write-host "$HostInstanceName`: Start pending."
        }
        elseif ($HostInstance.ServiceState -eq 3)
        {
            write-host "$HostInstanceName`: Stop pending."
        }
        elseif ($HostInstance.ServiceState -eq 4)
        {
            write-host "$HostInstanceName`: Started."
        }
        elseif ($HostInstance.ServiceState -eq 5)
        {
            write-host "$HostInstanceName`: Continue pending."
        }
        elseif ($HostInstance.ServiceState -eq 6)
        {
            write-host "$HostInstanceName`: Pause pending."
        }
        elseif ($HostInstance.ServiceState -eq 7)
        {
            write-host "$HostInstanceName`: Paused."
        }
        elseif ($HostInstance.ServiceState -eq 8)
        {
            write-host "$HostInstanceName`: Unknown."
        } 
    }
write-host `n  

        }

foreach ($server in $servers)
{
    checkhostinstancestatusstarted $server
}
4

1 に答える 1

0

出力をファイルに取得するには、PowerShell スクリプトでさらに多くのコードが必要なようです。Microsoft Exchange Server を使用している場合は、この部分が機能するようになったら、ログ ファイルからの出力を毎朝電子メールで送信するために使用するスクリプトを次に示します。Exchange の優れた点は、"*.eml" という名前の適切な形式のテキスト ファイルを電子メールとして送信する "pickup" という名前のフォルダーがあることです。このコードを vbscript ファイルに入れ (つまり、"EmailScript.vbs" などの名前を付けます)、[スタート] > [管理ツール] > [タスク スケジューラ] をクリックし、* .vbs ファイル。Powershell スクリプト自体のスケジュールについては、Google で見つけた記事をいくつか紹介します。

http://community.spiceworks.com/how_to/show/17736-run-powershell-scripts-from-task-scheduler

http://blogs.technet.com/b/heyscriptingguy/archive/2012/08/11/weekend-scripter-use-the-windows-task-scheduler-to-run-a-windows-powershell-script.aspx

'First retrieve the contents of the log file
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\logfile", 1)
content = file.ReadAll
file.close

msg = "To: jdoe@company.com"
msg = msg & chr(13) & chr(10)
msg = msg & "From: server@server.com"
msg = msg & chr(13) & chr(10)
msg = msg & "Subject: powershell results"
msg = msg & chr(13) & chr(10) & chr(13) & chr(10) & content

Set f = fso.OpenTextFile("\\ServerName\c$\program files\microsoft\exchange server\transportroles\pickup\powershell.eml",2, True)
f.Write msg
f.Close
Set f = Nothing
Set fso = Nothing
于 2013-03-27T19:22:48.953 に答える