问题标签 [pscmdlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5744 浏览

powershell - Powershell:Update-TfsWorkspace cmdlet 如何更新两个工作区

我想使用 powershell 在一个脚本中从两个不同的 tfs 更新 2 个工作区。第一个工作区正在更新,没有任何问题。更新完成后,powershell 连接到第二个工作区,但不像第一次那样更新本地数据。

我猜旧的 Connection 可能仍然会阻塞管道或类似的东西,但我还没有找到任何 cmd 来清理管道。我的代码如下所示:

0 投票
1 回答
2173 浏览

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

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

Powershell 自动完成参数

我想在我的 PSCmdlet 中使用这种行为。

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

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


它适用 于@bouvierr

0 投票
0 回答
153 浏览

c# - 如何设置 pscmdlet 类的帮助信息

我正在用 c# 编写一个 powershell 模块,它由一堆 powershell cmdlet 组成。

例如:

获取应用程序

当我宣布班级时

我可以做一些事情,例如为此 cmdlet 提供参数以及有关参数本身的有用消息。

我正在尝试在我的课程中提供更多文档,以便像这样的命令

获取帮助获取应用程序

将在 REMARKS 部分提供有关 cmdlet 本身的描述。

知道如何在 Visual Studio 2013 中添加它吗?

0 投票
2 回答
1633 浏览

c# - 尝试从 C# 中调用 PSCmdlet 类

起初,我试图简单地声明一个新的 cmdlet 实例,但出现错误,表明我无法从 cmdlet 中调用 pscmdlet 类型的 powershell cmdlet。

为了做到这一点,我必须实例化 Powershell 引擎。

在我的情况下,如果我使用 Get-Process,它工作得很好,但 Get-Info,它是同一个项目中的另一个 PSCmdlet 似乎不起作用。

Get-Name :术语“Get-Info”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

我可以从 powershell 窗口手动调用 get-info,但不能从我的代码中调用。

这可能与模块路径有关吗?还是因为我的模块没有加载到这个新实例化的引擎中?

如果是这样,我如何让新引擎也加载模块?

以下是 get-info 的定义方式

调用 powershell.create() 的 cmdlet 是 get-name

想法是 get-info 获取与某个对象有关的所有内容,但您可以使用 get-name 来获取特定信息。

我希望使用它来创建更小更受约束的 cmdlet,这些 cmdlet 只需调用 get-info。

但我认为它与路径有关,因为我的项目没有导入到在 get-name 中实例化的新创建的 powershell 引擎中。

谢谢!

0 投票
1 回答
120 浏览

c# - 在 c# PSCmdlet 中接受任意参数

我编写了一堆类,它们可以访问 API 并获取 JSON。编译后,我会得到很好的命令,例如 get-host、get-version、get-app 等。

每个 cmdlet 都接受一个参数,例如 -host 或 -app。

我可以编写大约 160 个这样的命令,但我现在希望编写一个更通用的 cmdlet,它可以接受任意参数和值。

据我所知,我不能在可以发出的地方声明参数

或者

或者

除非我声明所有可能有数百个参数。此外,如果未声明参数,则会引发一个不错的错误

获取信息:找不到与参数名称“主机”匹配的参数。

有没有办法我不能声明任何参数然后手动解析参数,或者c#中有什么东西可以自动解析参数列表,然后将它们分配给适当命名的变量?

例如

并且变量host和backup会自动设置吗?

0 投票
1 回答
46 浏览

c# - 通过值调用 cmdlet

我的 psm1 文件中有一个 KVP 哈希变量

这个 psm1 文件还有一个名为“newtask”的函数,它接受 $subcommand 的参数。

我想知道如何在何时执行 cmdlet Add-Host

新任务添加主机

从外壳发出。

我试图只是回应它,但这根本没有多大用处。刚刚打印出价值。

谢谢!

0 投票
0 回答
69 浏览

parameters - 在 PSCmdlet 中,我可以根据另一个变量创建一个非强制变量吗?

在 PSCmdlet 中,我可以像这样声明参数

我的问题是我想添加另一个参数,例如 PasswordEnc,用户可以在其中提供加密密码,例如 md5 哈希。

如果用户提供 PasswordEnc,则不需要 Password。有没有办法在 PSCmdlet 中做到这一点?

我想我可以编写一个 powershell 函数来确定提供了哪个密码变量,然后调用 Cmdlet。

只是想知道是否有另一种方法可以做到这一点。

谢谢

0 投票
1 回答
800 浏览

c# - Cmdlet 通过管道一次传递参数列表,而不是单个列表项

我正在创建一个 Powershell System.Management.AutomationCmdlet.Cmdlet ,以通过这种方式将字符串列表通过管道传递给 Cmdlet:

现在,在重载的“ProcessRecord”方法中,我一次只能获得一项Items.Count == 13 次(而不是一次通过管道获得完整的列表)。

是否有可能一次传递整个项目列表(由 Get-ChildItem 返回)?我一次只能得到一件物品。

基本上我希望使用管道具有相同的行为,就好像我使用这样的命令(Items.Count == 3

任何想法?

0 投票
1 回答
156 浏览

powershell - 有没有办法查看内置 powershell cmdlet 的源代码?

我想修改 compare-object 中使用的代码(以便我使用相同的算法进行比较,但修改输出并可能添加更多内容)。有什么方法可以查看用于此的代码,还是我只需要猜测?如果我以后想修改其他 cmdlet,这可能很有用。

0 投票
2 回答
1553 浏览

powershell - 如何将自定义枚举传递给powershell中的函数

定义函数时,如何引用自定义枚举?

这是我正在尝试的:

但这给出了错误:

注意:我知道我可以使用ValidateSet类似的功能;然而,它的缺点是只有一个名称值;而不是允许我使用友好名称进行编程,然后将其映射到后台的整数(我可以为此编写代码;但如果可能的话,枚举似乎更合适)。

我正在使用 Powershell v4,但理想情况下,我想要一个 PowerShell v2 兼容的解决方案,因为大多数用户默认使用该版本。

更新

我已经纠正了错字(感谢 PetSerAl;很好发现)。 [JB.InterfaceZones]$zone现在改为[JB.InternetZones]$zone. 现在我看到错误: