実行中のサーバーのCPUレベルをチェックするPowerShellスクリプトがあり、それが特定のしきい値を超えるとSQLストアドプロシージャと電子メールが実行されます。Invoke-Sqlcmdが実行できません
最新のバージョンのPowerShellを使用している開発サーバーでスクリプトが正しく動作します。しかし、私はInvoke-Sqlcmd
コマンドを実行中のサーバー上でCPU値を取得する必要がある問題があります。例えば、LIVESERVERと呼ぶことができます。 私が問題だと思うこれのPowerShell 2.0を実行している:
用語「起動-sqlcmdの」は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認してから、もう一度やり直してください。
このサーバーはビジネス上重要なので、変更しないでください(再起動なしでPowerShellを更新するなどの簡単な作業でない限り)。
開発サーバーからスクリプトを実行し、CPUデータを取得するサーバーを指定することはできますか?私は構文をどのようにこれを達成するために働くか分からない。
# Email
$recipients = @("Ricky <[email protected]>")
# Loop 20 times
for ($i= 1; $i -le 20; $i++) {
# Find CPU average usage percentage for given time period
$cpuutil = (Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 20 |
select -ExpandProperty countersamples |
select -ExpandProperty cookedvalue |
Measure-Object -Average).Average
# Display average CP output
$cpuutil
# If CPU average percentage is higher than given value, run stored procedure and
# e-mail to notify
if ($cpuutil -ge 60) {
Invoke-Sqlcmd -Query "SELECT * FROM [Vehicle].[dbo].[tblIndicator]" -ServerInstance "LIVESERVER"
}
if ($cpuutil -ge 60) {
Send-MailMessage -From "[email protected]" -To $recipients -Body "SP Ran" -Subject "Stored Procedure" -Dno onSuccess, onFailure -SmtpServer 111.1.1.111
} else {
Start-Sleep -s 10
}
}
私は似たような試みてエラーを持っていたとして、私は以前に間違ったSNAPINSをロードしておく必要があります。ありがとう! – Ricky