【发布时间】:2022-06-18 20:40:09
【问题描述】:
假设我正在尝试编写一个将结果集打印到 Excel 工作表的 Powershell 函数,如下所示:
function Write-ToWorksheet {
param (
[Parameter( Position = 0, Mandatory = $true )]
[MyLibrary.MyCustomResultType[]]
$ResultSet,
[Parameter( Position = 1, Mandatory = $true )]
[Excel.Worksheet]
$Worksheet
)
# ... Implementation goes here ...
}
假设我以这样的方式调用它:
$excel = New-Object -ComObject Excel.Application
$wb = $excel.Workbooks.Add()
$results = Get-MyResults # Never mind what this does.
Write-ToWorksheet -ResultSet $results -Worksheet $wb.Sheets[ 1 ]
这段代码几乎可以工作,除了它阻塞了我的[Excel.Worksheet] 类型规范。
正如this answer 指出的那样,我意识到没有必要指定参数类型,并且没有它,代码也可以正常工作。
但是为了取悦我内心的学究,有没有办法使用对 COM 对象类型(如Excel.Worksheet)的引用来限制参数类型?
标签: excel powershell com