sql-server - Powershell将管道返回值存储到变量
问题描述
我有一个 PowerShell 函数,它读取我的 SQL 代理作业的状态。
function get-SQLJobStatus
{
param(
[string]$server,
[string]$jobName
)
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$srv = New-Object Microsoft.SqlServer.Management.SMO.Server($server)
if($jobName)
{
$srv.JobServer.Jobs | where {$_.Name -match $jobName} | Select CurrentRunStatus
}
}
如果我运行这个函数,返回如下所示
CurrentRunStatus
________________
Idle
我想要做的是运行这个get-SQLJobStatus
函数并检查是否CurrentRunStatus == Idle
. 似乎我不能只将这些返回值存储到变量中,所以我被卡住了。
任何想法?
解决方案
由于您的函数返回一个具有该属性的对象,您可以使用返回的函数调用中的CurrentRunStatus
成员访问 ( ) 来检查它:.propertyName
if ((get-SQLJobStatus -server 'servername' -jobname 'jobname').CurrentRunStatus -eq 'Idle') {
# the job is idle. run code here
}
else {
# the job is not idle. run code here
}
如果你想存储函数调用的输出,你仍然可以像上面一样运行类似的检查:
$status = get-SQLJobStatus -server 'servername' -jobname 'jobname'
if ($status.CurrentRunStatus -eq 'Idle') {
# the job is idle. run code here
}
else {
# the job is not idle. run code here
}
顺便说一句,您的$_.Name -match $jobName
比较可以返回多个对象。这是因为-match
使用正则表达式并且您的$jobname
值可能是未锚定的。要返回完全匹配,您可以选择$_.Name -eq $jobName
.
推荐阅读
- oauth-2.0 - 在获取 EWS.AccessAsUser.All 的访问令牌后获取用户名(至少是用户的电子邮件地址)
- python - 模拟一个从 ... import 中幸存的包
- haskell - Biff 是应用程序吗?
- html - Ruby如何同时循环两个对象
- javascript - 循环内的 Onchange
- python - PDF 到 Pandas 数据框
- arrays - SWIFT Xcode11.5 - 数组附加在 ViewController 中不起作用
- regex - 如何根据最大数字的位数为所有数字添加前缀?
- lua - Lua 尝试调用一个 nil 方法
- mfc - MFC:向可调整大小的 CDialogEx 添加状态栏?