为什么这样做:
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
}
}
答案 0 :(得分:2)
我在这里猜测你正在使用模块Get-SqlData
中的SQL PSX
。如果你已经付出了一些努力,你可能已经阅读了这个
Get-SqlData函数执行查询并返回一个数组 的System.Data.DataRow。
来源:Get-SqlData
DataRow
不是字符串,而是对象。访问MSDN,您会找到一个如何使用DataRow
对象的示例:row["ColumnName"]
这意味着你应该尝试使用
$Serv = $_["ServerName"] #You may need to use $_["ServerName"].ToString() . $_.Servername might also work
和
Get-Counter -Computer $Serv -Counter ($_["Counter"]) -SampleInterval 1
我没有可以测试的SQL服务器,但这应该让你去。谷歌搜索可能会引导您访问另一个论坛帖子,其中显示如果Foreach-Object
不起作用,如何遍历结果集:
http://powershell.com/cs/forums/t/7980.aspx
欢迎大家在这里提问,但是请表现出一些努力,否则您的问题将被关闭和投票。