Powershell 调用Sqlcmd无法运行

Powershell 调用Sqlcmd无法运行,powershell,cpu-usage,invoke-sqlcmd,Powershell,Cpu Usage,Invoke Sqlcmd,我有一个PowerShell脚本,用于检查运行它的服务器的CPU级别,如果高于某个阈值,它将运行SQL存储过程和电子邮件 脚本使用最新版本的PowerShell在我的开发服务器上正确运行。但是,我在需要从中获取CPU值的实时服务器上运行Invoke-Sqlcmd命令时遇到问题。例如,它可以称为LIVESERVER。 它正在运行PowerShell 2.0,我认为这是问题所在: 术语“Invoke Sqlcmd”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包

我有一个PowerShell脚本,用于检查运行它的服务器的CPU级别,如果高于某个阈值,它将运行SQL存储过程和电子邮件

脚本使用最新版本的PowerShell在我的开发服务器上正确运行。但是,我在需要从中获取CPU值的实时服务器上运行Invoke-Sqlcmd命令时遇到问题。例如,它可以称为LIVESERVER。 它正在运行PowerShell 2.0,我认为这是问题所在:

术语“Invoke Sqlcmd”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试

我宁愿不对此服务器进行任何更改,因为它是业务关键型的,除非在不重新启动的情况下更新PowerShell是一项简单的任务

是否可以从我的开发服务器运行脚本,并指定要从中获取CPU数据的服务器?我不确定语法将如何实现这一点

这是我的剧本:

电子邮件 $recipients=@Ricky 循环20次 对于$i=1$i-le20$i++{ 查找给定时间段的CPU平均使用率百分比 $cpuutil=Get Counter-Counter\Processor\u总计\%Processor Time-SampleInterval 1-MaxSamples 20| 选择-ExpandProperty反采样| 选择-ExpandProperty cookedvalue| 测量对象-Average.Average 显示平均CP输出 $cpuutil 若CPU平均百分比高于给定值,则运行存储过程并 要通知的电子邮件 如果$cpuutil-ge 60{ 从[Vehicle].[dbo].[tblIndicator]-ServerInstance LIVESERVER调用Sqlcmd-Query SELECT* } 如果$cpuutil-ge 60{ 发送邮件-从serverchecks@email.com-To$recipients-Body SP Ran-Subject存储过程-Dno onSuccess,onFailure-SmtpServer 111.1.1.111 }否则{ 开始睡眠-s10 } }
这将有助于您的调试

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

确保已安装带SQL Server的Powershell模块:

然后尝试导入模块SQLPS:

Import-Module SQLPS

另请参见:

PowerShell v2不会自动加载模块,因此您需要自己加载相关模块或管理单元:

Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100
[]

如果导入模块失败,则需要首先运行安装模块。默认情况下,安装SSMS或SSDT不包括sqlserver模块

install-module sqlserver
update-module sqlserver
import-module sqlserver

在这个问题上花了将近一个小时。当我使用MS Build运行脚本时,出现以下错误消息

SQLCMD:术语“SQLCMD”无法识别为cmdlet的名称, 函数、脚本文件或可操作程序


我终于发现,在安装SQL server之后重新启动windows server确实起到了神奇的作用。现在,我的脚本运行顺利。

这对我来说很有效,我以前一定加载了错误的管理单元,因为我在尝试类似操作时出错。谢谢如果您仍然遇到错误,并且您的计算机中未安装Sql Server,则可以安装。这是我的工作这能回答你的问题吗?