powershell - 如何使用 PowerShell 将可选参数传递给对象方法?
问题描述
我想调用一个对象的方法。此方法有许多可选参数,但我只想使用一个。如何在 PowerShell 中做到这一点?
示例:对象Workbooks
有方法OpenText
(链接),它有许多可选参数,但我只想传递参数的值DecimalSeparator
,所有其他我不想指定。
在其他语言中,我会这样做:
$App.Workbooks.OpenText($path, DecimalSeparator=$decSeparator)
请告诉我如何在 PowerShell 中执行此操作?
解决方案
你有没有试过,或者你说你试过但没有用?
如果 API 或 DOM 需要传递一个或多个参数,即使它是空白/null,也必须传递它。PowerShell 无法控制这一点。
您已经提供了 DOM / 方法的链接,它应该明确说明它允许和不允许的内容。
快速浏览一下文章,说只有一个参数是必需的,所有其他参数都是可选的。链接的文档中没有任何内容表明它们是位置的,除了必需的。因此,您可以按任何顺序传递,也可以根据需要传递任意数量/数量。
关于是否可以在 Office 文档中执行 X 或 Y 的最简单方法是在 Office 中打开文件,启用宏记录器,正常执行 GUI 中的步骤,允许记录器捕获所有操作,然后查看生成的 VBA 并将其转换为在 PowerShell 中使用。
转换 VBA 以在 PowerShell 中使用是一个陈旧的问答。
lrow = Range("G" & Rows.Count).End(xlUp).Row
Set MR = Range("G2:G" & lrow)
For Each cell In MR
If UCase(Trim(cell.Value)) = "FALSE" Then
cell.Interior.ColorIndex = 3
End If
Next
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $true
$objExcel.DisplayAlerts = $false
$filePath = "c:\logs\2015-04-23.csv"
$xlsFilePath = Get-Item -Path $filePath | % { Join-Path (Split-Path $_ -Parent) "$($_.BaseName).xls" }
$workBook = $objExcel.Workbooks.Open($filePath)
$workSheet = $WorkBook.sheets | select -First 1
$xlup = -4162
$lrow = $workSheet.cells.Range("G" + $workSheet.Rows.Count).End($xlup).Row
$workSheet.cells.Range("G2:G" + $lrow) | % {
$value = $_.Text
if($value.ToUpper() -eq "TRUE"){
$_.Interior.ColorIndex = 3
}
}
$WorkBook.SaveAs($xlsFilePath, 18)
$objExcel.Quit()
我只是把它放在这里作为提醒,但根据您的帖子片段,我假设您已经知道这一点。然而,这是以防万一。
推荐阅读
- angular - Ngb installation error on my Angular application
- python - 将较低的值分配给字典中的键
- php - 所有输入表单数据都已发布,但无法使用 php 检索数组输入
- javascript - 首选匿名函数内部或外部的变量
- swift - 基于条件的本地推送通知 - Swift
- sed - 从 nm 输出中提取符号名称
- javascript - Heroku "failed to push some refs" when trying to push React app
- twilio - Twilio Voice API - Use "inline" TwiML instead of XML url when creating outgoing call
- ruby-on-rails - 监听 HTTP Json 流触发 JSON:ParserError
- python - 为什么 print(zip(*A)), 以形式给出输出
,但执行 set(zip(*A)) 时的预期输出?注意 A 是一个列表