PSCmdlet 动态自动完成参数(如 Get-Process)

2024-01-04

在 powershell 中,某些参数具有动态自动完成行为。 例如,获取-处理参数名称。我可以使用 TAB 遍历所有流程。

我想在我的 PSCmdlet 中使用此行为。

但问题是,我只知道如何使用静态自动完成值来做到这一点。参见示例:

public class TableDynamicParameters
{
    [Parameter]
    [ValidateSet("Table1", "Table2")]
    public string[] Tables { get; set; }
}

这是如何使用本机 powershell 完成此操作的示例http://blogs.technet.com/b/heyscriptingguy/archive/2014/03/21/use-dynamic-parameters-to-populate-list-of-printer-names.aspx http://blogs.technet.com/b/heyscriptingguy/archive/2014/03/21/use-dynamic-parameters-to-populate-list-of-printer-names.aspx


It works谢谢@bouvirr

public string[] Tables { get; set; }

public object GetDynamicParameters()
{
    if (!File.Exists(Path)) return null;

    var tableNames = new List<string>();
    if (TablesCache.ContainsKey(Path))
    {
        tableNames = TablesCache[Path];
    }
    else
    {
        try
        {
            tableNames = DbContext.GetTableNamesContent(Path);
            tableNames.Add("All");
            TablesCache.Add(Path, tableNames);
        }
        catch (Exception e){}
    }

    var runtimeDefinedParameterDictionary = new RuntimeDefinedParameterDictionary();
    runtimeDefinedParameterDictionary.Add("Tables", new RuntimeDefinedParameter("Tables", typeof(String), new Collection<Attribute>() { new ParameterAttribute(), new ValidateSetAttribute(tableNames.ToArray()) }));

    return runtimeDefinedParameterDictionary;
}

来自 MSDN:如何声明动态参数 https://learn.microsoft.com/en-us/powershell/scripting/developer/cmdlet/how-to-declare-dynamic-parameters

Your Cmdlet类必须实现IDynamicParameters界面。这个界面:

为 cmdlet 提供一种机制来检索可由 Windows PowerShell 运行时动态添加的参数。

EDIT:

The IDynamicParameters.GetDynamicParameters()方法应该:

返回一个对象,该对象具有与参数相关的属性和字段,这些属性与 cmdlet 类或 RuntimeDefinedParameterDictionary 对象中定义的属性类似。

如果你看这个link https://martin77s.wordpress.com/2014/06/09/dynamic-validateset-in-a-dynamic-parameter/,作者是在 PowerShell 中这样做的。他在运行时创建:

  • 的一个新实例ValidateSetAttribute with a runtime可能值的数组
  • 然后他创建了一个RuntimeDefinedParameter他将其分配给ValidateSetAttribute
  • 他返回一个RuntimeDefinedParameterDictionary包含该参数的

您可以在 C# 中执行相同的操作。你的GetDynamicParameters()方法应该返回这个RuntimeDefinedParameterDictionary含有适当的RuntimeDefinedParameter.

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

PSCmdlet 动态自动完成参数(如 Get-Process) 的相关文章

  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 使用 C# 读取 Soap 消息

  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 使用 powershell 将 XML 转换为特定的 JSON 结构

    需要有关将 xml 转换为特定 json 结构的帮助 XML 看起来像这样

随机推荐

  • 实现带有复选框的对话框

    这是我的对话框 public class CustomDialogClass extends Dialog implements android view View OnClickListener public Activity c pub
  • 如何更改wordpress中仅一页的css?

    我只需要更改主页的 css 我在 google 上搜索过 很多建议是将页面 id 添加为 css 选择器的一部分 但当我尝试的时候 似乎不起作用 我想更改类 contentclass 页面 ID 为 599 所以这是我尝试过的 post i
  • 在 Visual Studio Code for Go 中自动完成括号

    在使用 Visual Studio Code 时 我注意到当我从自动完成功能编写函数时 它永远不会使用括号自动完成 例如 fmt now select a function Print a interface from autocomple
  • 如何使用 Flask 跟踪匿名用户

    我的应用程序实现了一个购物车 匿名用户可以在其中添加产品 仅在付款前才需要用户登录 如何实施 主要的挑战是 Flask 必须跟踪用户 即使是匿名的 及其订单 我目前的方法是利用AnonymousUserMixin被分配给的对象current
  • 将绘图嵌入到 PyQt5 中的图形视图中

    I use pyqtgraph在 PyQt5 GUI 中绘图 我可以在弹出窗口中绘图 但我正在尝试将图表嵌入到graphicsView area 以下是我在新窗口中绘制简单绘图的方法 self pushButton clicked conn
  • Base64 字符串转 UIImage

    我正在尝试将 base64 字符串解码为 Swift 中的 UIImage 我的示例图像的编码字符串开头为 数据 图像 jpeg base64 9j 2wBDAAYEBQYFBAYGBQYHBwYIChAKC 完整的编码字符串可以在以下位置
  • 我可以使用传递到组件的变量来设置 svelte 样式 css 属性值吗

    我想创建一个接收图像名称和路径的简洁组件 我想让组件使用 CSS 将图像设置为 背景图像 我已经尝试过以下似乎不起作用 调用的组件应用程序 svelte
  • 为什么故事板没有反映我使用属性检查器面板设置到 UILabel 的文本属性?

    我在故事板上有一个 UILabel 默认文本为 标签 然后 我转到属性检查器并选择属性文本样式 当我单击 文本 字段时 我会在新窗口中看到多种字体可供选择 我看到本例中的默认文本已设置为 Helvetica 大小 17 0 在浏览所提供的字
  • 字符串未更新

    我正在使用 MVC 和 PDO 我试图根据会话是否为空来更新字符串 因此在我的 index phtml 中我有 p Welcome back a href logout php a p p Hello would you like to a
  • Matlab:更改图例中条目的顺序

    我有一个图形文件 我想在其中更改条目的顺序 例如 将第一个条目作为第三个条目 我很久以前就保存了这个Figure fig 所以我不确定是否可以恢复原始代码 这里我向你展示我的情节 我希望图例元素按降序排列 如图所示 但由于错误 我的第二个条
  • Linux:proc/net/sockstat tcp mem越来越大

    现在 我们的系统发现hang和tcp mem越来越大 proc net sockstat 当出现hang时 将打印 tcp 孤立套接字太多 From sockstat 我们知道socket很少 但是消耗了1500 page mem 为什么呢
  • BASH shell 脚本 echo 在同一行输出

    我有一个简单的 BASH shell 脚本 用于检查 curl 命令的 HTTP 响应代码 逻辑很好 但我坚持 简单地 打印出 输出 我使用的是 GNU bash 版本 3 2 25 1 release x86 64 redhat linu
  • 修剪章鱼 - 删除不属于 O(N) 循环的有向图的所有分支

    Preliminaries safe to skip This question is in relation with Longest Path for Directed Cyclic Graph https stackoverflow
  • 修复了开发办公套件时 Visual Basic 中 FontSize 函数的错误

    在花了几个小时研究 FontSize 函数后 我被一段代码困住了 字体列表 每当我想定义每个字体具有相同的大小时 它会自动将其缩放到72 我浏览了互联网以了解如何获取字体列表 这很有效 但是当我将 fontSize 添加到 sizecomb
  • SunPkcs11 实现的 64 位替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们使用中间件来构建通过 JDK 1 6 30 64 位安装程序安装的软件应用程序 我们最近收到使用 U
  • 使用 Matplotlib 以非阻塞方式绘图

    我在尝试使 matplotlib 绘制函数而不阻止执行时遇到问题 我尝试过使用show block False 正如有些人建议的那样 但我得到的只是一个冻结的窗口 如果我只是打电话show 结果被正确绘制 但执行被阻止 直到窗口关闭 从我读
  • 并非 CSS 样式类的所有属性都适用

    我将以下内容写在 CSS 文件中 span hoverhelp border double border width 3 border color 000000 background color eeffcc padding 5 font
  • 从 Servlet 到 JSP

    当尝试在我的 servlet 中传递用 HTML 构建的表时 如下所示 response setContentType text html PrintWriter out response getWriter out println out
  • 将 Write-Host 语句重定向到文件

    我有一个正在调试的 PowerShell 脚本 并且想要重定向所有脚本写主机 https learn microsoft com en gb powershell module Microsoft PowerShell Utility Wr
  • PSCmdlet 动态自动完成参数(如 Get-Process)

    在 powershell 中 某些参数具有动态自动完成行为 例如 获取 处理参数名称 我可以使用 TAB 遍历所有流程 我想在我的 PSCmdlet 中使用此行为 但问题是 我只知道如何使用静态自动完成值来做到这一点 参见示例 public