我有一個PowerShell腳本來檢查它運行的服務器的CPU級別,然後如果它高於某個閾值,它將運行SQL存儲過程和電子郵件。Invoke-Sqlcmd無法運行
該腳本在我的開發服務器上使用最新版本的PowerShell正確運行。但是,我在運行需要從中獲取CPU值的實時服務器上運行Invoke-Sqlcmd
命令時遇到問題。爲了舉例,它可以被稱爲LIVESERVER。 它正在運行的PowerShell 2.0,我認爲是問題:
「調用-SQLCMD」一詞未被識別爲cmdlet,函數,腳本文件或可操作的程序的名稱。檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確,然後重試。
我寧願不對這臺服務器做任何修改,因爲它對業務至關重要(除非在不重新啓動的情況下更新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