Ric*_*cky 5 powershell cpu-usage invoke-sqlcmd
我有一个PowerShell脚本,它检查它运行的服务器的CPU级别,然后如果它超过某个阈值,它将运行SQL存储过程和电子邮件.
该脚本在我的开发服务器上使用最新版本的PowerShell正确运行.但是,我Invoke-Sqlcmd在实时服务器上运行命令时遇到问题,我需要从中获取CPU值.为了举例,它可以称为LIVESERVER.它正在运行PowerShell 2.0,我认为是这个问题:
术语"Invoke-Sqlcmd"未被识别为cmdlet,函数,脚本文件或可操作程序的名称.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试.
我宁愿不对此服务器进行任何更改,因为它对业务至关重要(除非这是一个简单的任务,无需重新启动即可更新PowerShell等).
是否可以从我的开发服务器运行我的脚本并指定服务器以获取CPU数据?我不确定语法如何实现这一点.
这是我的脚本:
# Email
$recipients = @("Ricky <ricky@email.com>")
# 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 "serverchecks@email.com" -To $recipients -Body "SP Ran" -Subject "Stored Procedure" -Dno onSuccess, onFailure -SmtpServer 111.1.1.111
} else {
Start-Sleep -s 10
}
}
Run Code Online (Sandbox Code Playgroud)
Bre*_*ent 13
如果import-module失败,那么您需要先运行install-module。默认情况下,安装 SSMS 或 SSDT 不包括 sqlserver 模块。
install-module sqlserver
update-module sqlserver
import-module sqlserver
Run Code Online (Sandbox Code Playgroud)
这应该有助于您的调试!
if (-not (Get-Command Invoke-Sqlcmd -ErrorAction SilentlyContinue)) {
Write-Error "Unabled to find Invoke-SqlCmd cmdlet"
}
if (-not (Get-Module -Name SqlServer | Where-Object {$_.ExportedCommands.Count -gt 0})) {
Write-Error "The SqlServer module is not loaded"
}
if (-not (Get-Module -ListAvailable | Where-Object Name -eq SqlServer)) {
Write-Error "Can't find the SqlServer module"
}
Import-Module SqlServer -ErrorAction Stop
Run Code Online (Sandbox Code Playgroud)
确保已使用SQL Server安装Powershell模块:

然后尝试导入模块SQLPS:
Import-Module SQLPS
Run Code Online (Sandbox Code Playgroud)
另见:https://blogs.msdn.microsoft.com/psssql/2008/09/02/sql-server-2008-management-tools-basic-vs-complete-explained/
PowerShell v2 不会自动加载模块,因此您需要自己加载相关模块或管理单元:
Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100
Run Code Online (Sandbox Code Playgroud)
[来源]
| 归档时间: |
|
| 查看次数: |
30417 次 |
| 最近记录: |