You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell使用Splat时能否传入数组变量?如何正确操作?

问题解答

核心结论

Splat本身完全支持传入变量,你遇到的报错和Splat语法无关,是参数取值不符合Write-DbaDbTableData的要求导致的。

错误原因

  • 误用Format-Table命令:所有Format-*系列命令的输出是用于终端展示的格式化对象,不是原始业务数据,将这类对象赋值给$DataTable传入InputObject属于无效传值。
  • 冗余传参冲突:Write-DbaDbTableData接收InputObject参数时,InputObject已经自带了对应的实例关联信息,你额外传入的SqlInstance是多实例数组,该场景下参数不支持数组类型输入,触发类型转换报错。

修正后的代码

$sqlInstance = @('servername1', 'servername2')
# 直接获取原始数据,不要追加Format-Table,需要查看结果时单独执行 $sqlDbSpace | Format-Table 即可
$sqlDbSpace = Get-DbaDbSpace -SqlInstance $sqlInstance

$Params = @{    
    InputObject = $sqlDbSpace
    Table       = 'server.dbo.table'
}
Write-DbaDbTableData @Params

如果写入数据的目标实例和查询源实例不一致,显式指定单个目标实例即可:

$Params = @{
    SqlInstance = '目标实例名'
    InputObject = $sqlDbSpace
    Table       = '目标库.dbo.目标表'
}

内容的提问来源于stack exchange,提问作者JM1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:06:05