如何在 PowerShell 中隐藏 Get-Help 中的参数(不仅仅是制表符完成)?

2023-11-30

我四处搜寻,找不到“否”的直接答案,但也没有找到“是”的直接答案。

我已经知道的:

  • [Parameter(DontShow)]只影响制表符完成
  • 一个建议是使用通用参数并测试它是否存在于$PSBoundParameters- 虽然技术上可行,但它的副作用是没有我想要的名称。
  • 另一个建议是将其作为别名隐藏在另一个参数中,但这更适合弃用。

我遇到的情况是有一个参数不应被任何第 3 方使用,但由配套脚本使用

example:

[CmdletBinding(SupportsShouldProcess)]param(
  [switch]$VisibleSwitch,
  [switch]$HiddenSwitch ### This switch should not be visible to human-beings.
)
#...
if( $HiddenSwitch) {
  #do something
  return
}
#...

我担心有没有好的解决办法从 PowerShell 7.2 开始,但是最接近的近似值你想要的可能如下:

  • 定义一个代理参数,其名称表明它不能直接使用。

  • 声明此参数时同时使用DontShow and ValueFromRemainingArguments [Parameter()]特性。

  • 手动检查绑定到代理参数的参数以查找“隐藏”参数。

[CmdletBinding(SupportsShouldProcess)]
param(
  [switch] $Switch
  ,
  [Parameter(DontShow, ValueFromRemainingArguments)]
  ${(ignore)}
)

# Examine the quasi-hidden parameter value 
# for containing the switch name of interest.
$HiddenSwitch = ${(ignore)}.Count -eq 1 -and ${(ignore)}[0] -eq '-HiddenSwitch'

# Make sure that no unexpected arguments were passed.
if (-not $HiddenSwitch -and ${(ignore)}.Count -gt 0) { throw "Unexpected arguments specified: ${(ignore)}"}

# Output what switches were passed.
[pscustomobject] @{
  '-Switch' = $Switch
  '-HiddenSwitch' = $HiddenSwitch
}

Note:

  • 这不会阻止代理参数显示在语法图中(例如,使用-?) - 它将显示为[-(ignore) <Object>]- 但它不会透露真实的参数名称。

    • GitHub 问题 #7868要求提供一种官方方法来隐藏语法图中的参数,在不再显示的情况下obsolete(已弃用)参数。
  • 严格来说,您还必须检查${(ignore)}对于允许显式传递一个(很少使用)的语法Boolean到开关(例如,-HiddenSwitch:$true),但为了简洁起见,我在上面的代码中省略了它。

  • 同样,需要更多的工作来支持通过明确的prefix隐藏参数名称的(例如,-Hidden).


如果语法图中没有出现额外的参数是最重要的,一个 - 也是次优的 - 替代方案是使用名称晦涩的“私有”变量,例如$__HiddenSwitch,调用者必须设置它才能模拟-HiddenSwitch参数,以及被调用者(您的脚本/函数)在检查后将其删除。

请注意,如果被调用者定义在module,需要付出额外的努力来访问调用者的范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PowerShell 中隐藏 Get-Help 中的参数(不仅仅是制表符完成)? 的相关文章

  • Powershell:当文件名包含字符 [ ] 时,移动项目不起作用

    关于使用 PowerShell 移动项目的简单问题 有谁知道为什么当文件名包含 或 字符时以下脚本不起作用 前任 文件1 VT txt ls j foreach itemName Name Replace destination ls wh
  • 阻止单引号在 WMI 查询 powershell 中转义字符串

    我有一些使用 WMI 查询的代码 但我遇到了一个问题 我使用的变量有一个 单引号 这会导致代码出现故障 这是一个例子 path SERVER1 Mike O Leary servername path Split 2 Split 0 sha
  • 使用powershell计算子文件夹中具有特定名称的文件数量

    因此 我开始解决一个问题 我需要知道某个名称的子文件夹中有多少个文件 这些文件在整个目录中重复多次 我想要计算的所有文件夹都具有相同的名称 例如 Main Folder Subfolder Folder I want to count Fo
  • 使用 Powershell 在字符串中搜索反斜杠

    我需要搜索字符串中反斜杠的数量以确定一些文件路径参数 我还没有找到一种方法来搜索反斜杠而不让 Powershell 认为它是一个转义字符 regex Matches FilePath count Or a match 这两个都会出现错误 非
  • 什么是@”运算符?

    我在互联网上搜索了这意味着什么 包括 and 单独 正是在这个code https gist github com jakeballard 11240204 Win32ShowWindowAsync Add Type memberDefin
  • cmd中哪个符号是转义符?

    我有这个代码 powershell command New Object Net WebClient DownloadFile linkToMyFile file C my file 它用于下载文件 当我在远程服务器上的 cmd 中执行它时
  • PowerShell 解锁/卸载导入的 CSV

    早晨 我想问题就在标题里 我有一个脚本 它通过导入 CSV 的文件夹结构运行 与每个脚本一起工作 然后在完成后尝试删除它们 遗憾的是 其中很多都锁定在 PowerShell 上 而我删除它们的唯一方法就是关闭 PS 有什么方法可以卸载csv
  • 我可以在 Emacs 的 shell 模式下使用 PowerShell 吗?

    我可以在 emacs 的 shell 模式下使用 powershell 作为 shell 吗 How 请参阅 Jeffrey Snover 的博客文章在 Emacs 内运行的 PowerShell http blogs msdn com p
  • 将服务器添加到 SQL Management Studio

    我想将不同服务器上的一堆 SQL 2000 2005 的混合 服务器实例添加到我的 SSMS SQL Managment Studio 注册服务器 我正在遵循本教程here http sev17 com 2008 12 registerin
  • Powershell 中的反斜杠

    为什么 split 参数的字符串需要两个反斜杠 而 join 参数的字符串只需要一个反斜杠 反引号是 Powershell 中的转义字符 字符前面的反斜杠有什么作用 path C folder test unit1 testing resu
  • 禁止非 PowerShell 命令的输出?

    我正在运行命令 hg st 然后检查它是 LASTEXITCODE检查当前目录中 Mercurial 的可用性 我不关心它的输出 也不想将它展示给我的用户 如何抑制所有输出 成功或错误 由于 Mercurial 不是 PowerShell
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • () 和 $() 之间的区别[重复]

    这个问题在这里已经有答案了 有什么区别 Write Host Get Date just paren and Write Host Get Date dollar paren 括号内的内容可以是任何内容 仅举一个简单的示例 两者有什么区别吗
  • 全局变量用例

    我有几个脚本和模块 它们使用全局变量来完成很多事情 我的日志记录可以采用以下三种形式之一 简洁 详细和验证 没有实际操作的详细日志记录 仅验证提供的数据 我还有许多函数 它们根据运行的上下文 用户或机器 而做出不同的响应 并且正在执行的操作
  • Start-Job 输出去了哪里?

    W gt job start job Write Output hi there throw an error Wait Job W gt job select State Failed HasMoreData True StatusMes
  • Powershell 命令未发现异常

    我有以下 powershell 脚本 它使用一个函数并且可以在 ISE 中正常运行 Get ComputerSessions Computer localhost Functions Function Get ComputerSession
  • 相当于 UNIX diff 和 patch 的本机 PowerShell

    我需要潜在地修补文件作为脚本的一部分 为了使脚本所做的事情更具可读性 我想以类似于 UNIX diff 和 patch 方法的方式来实现它 在标准 UNIX 系统上 diff 可以生成特殊格式的文本文件 表示两个文件之间的差异 这可以与要修
  • 获取文件夹及其子文件夹中最长文件路径的长度

    我正在寻找一个可以从命令行 批处理 PowerShell 运行的脚本 该脚本将遍历文件夹及其子文件夹 并返回一个数字 该数字是最长文件路径的长度 我已经看到了一些批处理和 PowerShell 脚本 例如 如何在 Windows 中查找路径
  • PSExec 中的会话 ID

    Psexec 无法在远程会话上为我显示记事本 GUI 因此 我尝试获取会话 ID 如下所示 c Users Amitra Downloads PSTools gt PsExec u administrator p force 135 20
  • Powershell:根据属性过滤属性

    我对 PowerShell 的自学经验有限 所以这可能是一些基本的东西 但我似乎无法正确理解 我在 Active Directory 中 需要提取电子邮件地址不以 SamAccountName 开头的用户列表 因此 如果您的登录名是 jdo

随机推荐

  • Docker 错误:无法访问 /dev/mem。尝试以 root 身份运行

    我有一个树莓派 并且在其中安装了docker 我制作了一个 python 脚本来读取其中的 gpio 状态 所以当我运行以下命令时 sudo docker run it device dev gpiomem app image 它运行完美并
  • 在 React JS 中使用react-draft-wysiwyg 下拉菜单不起作用

    我尝试使用react draft wysiwyg使用docs 一些图标显示但不起作用 block type font font size pickerColor 下拉菜单不起作用 例如 font size默认设置为16 但我无法更改它 im
  • 为什么用日历设置日期给我错误的日期

    我将日期设置为 2013 01 01 00 00 00 但日期显示为 Fri Feb 01 00 00 00 GMT 01 00 2013 Why Calendar calendar Calendar getInstance calenda
  • getAction() 只给出 ACTION_DOWN

    对于我正在编写的应用程序 我想在用户将手指离开屏幕后调用某个操作 我知道我需要检查 event getAction 是否为 ACTION UP 但我从 getAction 得到的只是 ACTION DOWN 我的代码如下所示 menu ne
  • 没有这样的文件或目录:无法执行,但对 ls、文件和制表符补全可见

    我正在亚马逊 lightail 实例上安装 flexnet 我刚刚将内容提取到 opt并尝试运行任何 lm 命令 和ls我可以看到我拥有所有权和执行权限 我可以跑file文件夹中的任何内容 它都会告诉我它是什么 但是当我尝试执行任何操作时
  • 为什么正则表达式要用正斜杠括起来

    我正在深入研究正则表达式 subject abcdef pattern def preg match pattern substr subject 3 matches PREG OFFSET CAPTURE print r matches
  • 我可以安全地删除 Xcode Derived 数据文件夹的内容吗?

    我的磁盘空间不足 并通过第三方实用程序检查到 Library Developer Xcode DerivedData 目录占用了大约 22GB 的磁盘空间 我搜索了 stackoverflow 并找到了这篇文章 如何安全地删除 Librar
  • 使用一次“plot”调用绘制多条曲线时的一个图例条目

    我正在通过使用一条曲线绘制几条曲线来创建一个网格plot调用为 import matplotlib pyplot as plt import numpy as np fig ax plt subplots x np array 0 1 0
  • 输入丢失src

    如果我使用以下没有 runat server 的代码 输入的 src 工作正常 并且我看到图像通过 div div
  • 如何使用 Ant Design 创建问卷类型表单?

    Ant Design 提供了一个动态表单项 通过使用它 我可以添加和删除多个字段 但现在我想嵌套其中 即我想创建一个类似调查表的表单 在其中我想添加多个问题及其各自的答案 目前 当我添加问题时 它工作正常 但当我添加一个问题的答案时 它也会
  • 如何多次运行 pytest 方法?

    我正在尝试使用 pytest repeat 多次运行 pytest 方法 但我收到警告并且仅运行一次 from page to run login import RegisterLogin from utilites testStatus
  • 如何等到 Javascript forEach 循环完成后再继续下一步

    我需要等待 forEach 循环调用的函数中的所有 axios 调用运行 然后再调用另一个函数来重新加载应由 axios 调用更新的数据 function1 let arr 1 2 3 4 5 arr forEach num gt func
  • 线程过多异常

    我在黑莓开发中遇到问题 在我的应用程序中 我必须从服务器获取图像 因此我必须为从服务器加载的每个图像创建一个单独的连接线程 但是这样做时我得到 TooManyThreadsException 有关控制线程的任何想法 在黑莓中 应用程序最多可
  • Magento paypal 货币错误

    我使用牙买加货币作为我的 magento 购物车 并且我使用 paypal 快速结帐和网站支付标准 我在管理面板中设置了货币 并且贝宝设置等也完成了 我的问题是 当我单击 使用 PayPal 结帐 按钮时 出现以下错误 PayPal 网关已
  • 爆发日期从每年到每月

    我有年度每股账面价值 基点 需要将数据分解为每月的时间序列 我想加入每月价格系列来计算每月预定价格 P B 我的每月数据如下 dput below date bps 2012 06 29 2 44376 2013 06 28 1 73054
  • 使用“键盘”在失焦时打开新窗口

    我正在尝试使用模块 键盘 来跟踪我的按键 而 PySide2 小部件未处于焦点状态 效果很好 但是 当我尝试使用 键盘 快捷方式创建新的小部件时 程序崩溃了 按下按钮打开一个窗口效果很好 我还可以使用 键盘 调用非 UI 功能 例如 打印功
  • 如何在jquery中添加id?

    我在 jquery 中创建了一个对话框 还有一个按钮叫做 保存 我需要给这个保存按钮添加一个id 我怎样才能在 jquery 中实现这一点 这是我的代码 function dialog dialog height 400 width 650
  • Rails 如何正确“更新”多列 - (updated_at 也应该更新)

    我在使用 Rails activerecords 正确更新多个列时遇到问题 我想使用诸如 update 之类的东西 它基本上会在更新时更新 但我只是无法传递多个列 我可以使用 update all 但它不会使用当前时间戳更新 Updated
  • LINQ 不同查询

    我有一个 C 应用程序 它加载称为 任务 的 CLR 对象列表 每个任务都具有以下属性 public int ID get set public int TypeID get set public string TypeName get s
  • 如何在 PowerShell 中隐藏 Get-Help 中的参数(不仅仅是制表符完成)?

    我四处搜寻 找不到 否 的直接答案 但也没有找到 是 的直接答案 我已经知道的 Parameter DontShow 只影响制表符完成 一个建议是使用通用参数并测试它是否存在于 PSBoundParameters 虽然技术上可行 但它的副作