【发布时间】:2015-01-28 10:11:07
【问题描述】:
我在从这个函数中提取值时遇到了一些问题:
function Get-DatabaseData {
[CmdletBinding()]
param (
[string]$connectionString,
[string]$query,
[switch]$isSQLServer
)
if ($isSQLServer) {
Write-Verbose 'in SQL Server mode'
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection
} else {
Write-Verbose 'in OleDB mode'
$connection = New-Object -TypeName System.Data.OleDb.OleDbConnection
}
$connection.ConnectionString = $connectionString
$command = $connection.CreateCommand()
$command.CommandText = $query
if ($isSQLServer) {
$adapter = New-Object -TypeName System.Data.SqlClient.SqlDataAdapter $command
} else {
$adapter = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter $command
}
$dataset = New-Object -TypeName System.Data.DataSet
$adapter.Fill($dataset)
return $dataset.Tables[0]
}
所以,基本上这个函数对数据库运行一个查询。但是,返回的值将这个令人讨厌的“返回的记录数”作为第一个元素。示例:
> Get-DatabaseData -connectionString $myConnString -isSQLServer -query $myQuery_PlanCache
6
CacheType : Prepared
Total Plans : 118
Total MBs : 10,406250
Avg Use Count : 41
Total MBs - USE Count 1 : 3,343750
Total Plans - USE Count 1 : 33
CacheType : Proc
Total Plans : 53
Total MBs : 8,015625
Avg Use Count : 118
Total MBs - USE Count 1 : 2,617187
Total Plans - USE Count 1 : 10
-- additional records snipped --
我尝试将return $dataset.Tables[0] 替换为以下内容:
$dbdata = @($dataset.Tables[0])
$dbdata = $dbdata[1..($dbdata.Length-1)]
return $dbdata
但我仍然得到令人讨厌的“6”的第一项。
此外,输出拒绝使用| Export-Csv 编组为 CSV 文件
如何截断/删除第一项?以及如何将剩余数据编组为 CSV 文件?
顺便说一句,$PSVersionTable 返回:
Name Value
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.34209
BuildVersion 6.3.9600.16406
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
【问题讨论】:
标签: powershell dataset export-to-csv