拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 PowerShell:args和命名自变量

PowerShell:args和命名自变量

白鹭 - 2022-02-10 2002 0 0

我有一个从 Windows 快捷方式呼叫的 PS 脚本。我把它放在几个档案或目录上,它作业正常。我想添加一些命名自变量(让我们称它们为:-Param1 和 -Param2),可选,当然,只能从 PowerShell Prompt 使用。

param (
    [switch]$CreateShortcut
)

开关自变量起作用。

但是,如果我添加一个字符串自变量:

param (
    [switch]$CreateShortcut,
    [string]$Param1
)

当然,当我通过 Windows 快捷方式呼叫我的脚本时,它不再起作用:$Param1 接收第一个档案。

有解决办法吗?

谢谢

uj5u.com热心网友回复:

当你洗掉档案/档案夹的快捷方式档案,它们的完整路径是通过为个人,命名自变量,以快捷方式的可执行档案(脚本)。

PowerShell 允许您单个阵列值自变量中收集此类未命名自变量,方法是将其宣告为ValueFromRemainingArguments

[CmdletBinding(PositionalBinding=$false)]
param (
    [switch] $CreateShortcut,
    # Collect all unnamed arguments in this parameter:
    [Parameter(ValueFromRemainingArguments)]
    [string[]] $FilesOrFolders
)
  • [CmdletBinding(PositionalBinding=$false)]确保任何未显式标记为Position属性的自变量都必须作为命名自变量传递(即,自变量必须以目标自变量的名称开头,例如-Path foo)。
    • 这不是支持[switch]自变量所必需的,因为它们是隐式命名的,但它允许您支持[switch]可以通过显式呼叫(仅)系结的其他非自变量。
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *