Sql server 通过powershell从SQL Server中提取数据
为什么这样做有效:Sql server 通过powershell从SQL Server中提取数据,sql-server,powershell,Sql Server,Powershell,为什么这样做有效: param($destserver, $destDB) $destserver = "CCIIT23" $destDB = "SSIMS_Prod" $Servers = "CCIIT23" $CounterList = "\Memory\Available MBytes", "\Memory\Page Faults/sec", "\Memory\Pages/sec" $Servers | Foreach-Object { $Serv = $_; $CounterList
param($destserver, $destDB)
$destserver = "CCIIT23"
$destDB = "SSIMS_Prod"
$Servers = "CCIIT23"
$CounterList = "\Memory\Available MBytes", "\Memory\Page Faults/sec", "\Memory\Pages/sec"
$Servers | Foreach-Object {
$Serv = $_; $CounterList | Foreach-Object {
Get-Counter -Computer $Serv -Counter $_ -SampleInterval 1
}
}
这不管用吗
param($destserver, $destDB)
$destserver = "CCIIT23"
$destDB = "SSIMS_Prod"
$Servers = Get-SqlData $destserver $destDb "Select ServerName From ServerNames"
$CounterList = Get-SqlData $destserver $destDb "Select Counter From MemoryCounterList"
$Servers | Foreach-Object {
$Serv = $_; $CounterList | Foreach-Object {
Get-Counter -Computer $Serv -Counter $_ -SampleInterval 1
}
}
我猜测您正在使用模块
sqlpsx
中的getsqldata
。如果你表现出一些努力,你可能会读到这篇文章
Get SqlData函数执行查询并返回
System.Data.DataRow
资料来源:
而DataRow
不是字符串,而是对象。通过访问,您将发现如何使用DataRow
对象的示例:row[“ColumnName”]
这意味着你应该尝试使用
$Serv = $_["ServerName"] #You may need to use $_["ServerName"].ToString() . $_.Servername might also work
及
我没有sql server可供测试,但这应该可以让您继续。谷歌搜索可能会让你找到另一个类似这样的论坛帖子,它显示了如果Foreach对象
不起作用,如何循环搜索结果集:
欢迎大家在此提问,但请表现出一些努力,否则您的问题将被关闭并被否决。您收到了哪些错误消息?Get-SqlData函数在做什么?这是在哪里定义的?仅供参考:
Get SqlData
不是PowerShell的内置命令。看起来有一个名为“SQL PSX”的第三方项目,它有一个名为该函数的函数,但是很可能它来自于甚至不同的东西。
Get-Counter -Computer $Serv -Counter ($_["Counter"]) -SampleInterval 1