问题标签 [cmdlet]

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 投票
1 回答
2796 浏览

c# - cmdlet 写入控制台而不写入管道

有没有一种方法可以让一个类扩展 cmdlet 写入到 powershell 控制台而不将其写入管道?

我正在编写一个 cmdlet,它将将大量对象写入管道(然后人们将管道输入到另一个 cmdlet,如 Export-CSV)。问题是如果我开始将信息写入控制台,这些信息也会被接收。

例如对象 1 对象 2 “我是一条信息消息,已通过 this.WriteObjct 对象 3 记录到 powershell

如果我尝试将 cmdlet 通过管道传递到另一个 cmdlet,我将获得对象 1,2、信息消息和 3。我需要它,所以它只是通过管道传递对象 1,2 和 3。

谁能指出我正确的方向?

0 投票
1 回答
5124 浏览

sharepoint - 在 Powershell 脚本中获取 SPSite

我正在编写一个脚本来部署我的解决方案,该解决方案具有一些“站点”范围的功能。在我的脚本中,我试图首先获取网站集,例如

当我检查 SiteCollection -ne $null 它总是返回 null 但相同的 cmdlet 在命令提示符下工作正常。

不知道我的脚本有什么问题。

0 投票
1 回答
410 浏览

c# - Powershell - 添加没有 Visual Studio 的 cmdlet

我已经从这个站点下载了一个非常好的 cmdlet,并且想开始使用它。如果有人可以提供一般概述,我很难理解这个过程。我已经有了 cmdlet,我不确定它是否需要进一步编辑。接下来,我用Powershell注册它?这就是我挂断电话的地方,我在这个主题上找到的教程只提到了使用 Visual Studio,我无权访问。另外,这个物理 cmdlet (.cs) 文件放在哪里?我想我至少需要一些方法来引用 system.management.automation.dll。我创建了一个 Powershell 配置文件,并希望尽可能多地使用它。任何其他步骤都非常感谢!

0 投票
3 回答
623 浏览

powershell - 如何在 cmdlet 类中打印 powershell cmdlet 参数

有人可以帮我记录与参数一起发出的实际 PowerShell 命令。

我有一个用 C# 实现的 cmdlet,如下所示

如果有人打电话

我只想在 processRecord 函数中记录命令。

显然我知道 cmdlet 名称,但不确定如何打印确切的参数字符串。

Environment.CommandLine 在常规 exe 中工作,但如何在 cmdlet 中执行相同操作

谢谢

0 投票
3 回答
1507 浏览

c# - 自定义 Powershell Cmdlet - 创建隐藏的可访问变量

我正在开发用于访问 REST Web 服务的自定义 Powershell Cmdlet。
网络服务要求我进行身份验证,当我这样做时,它会返回一个身份验证令牌,之后我必须将其包含在每个请求中。

我面临的问题是我无法以所需的方式存储令牌,因此我可以在身份验证后的命令中轻松使用它。

我想它是否可以像Connect-MSOLService 一样工作。
对于那些不熟悉 Office 365 cmdlet 的人,我将给出一些示例。

Office 365 Cmdlet

$Credentials = Get-Credential
Connect-MSOLService -Credential $Credentials
Get-MSOLUser

在此示例中,Get-MSOLUser 将返回每个 Office 365 用户,因为之前已经调用了 Connect-MSOLService。

我的 Cmdlet

$Credentials = Get-Credential
$token = Connect-WebService -Credential $Credentials
Get-Server -token $token
Get-Client -token $token

如您所见,我必须返回令牌并将其存储在变量中,并在身份验证后的每次调用中使用它。

所以这引出了我的问题,我怎样才能将令牌“注入”到 Powershell 会话中,然后在我的 cmdlet/模块中的每个命令上使用它“幕后”?

感谢您的时间。

0 投票
1 回答
1290 浏览

c# - 如何验证 PowerShell cmdlet 中的相关参数

对相关参数进行 PowerShell cmdlet 验证的最佳方法是什么?例如,在下面的示例 cmdlet 中,我需要运行 Low 大于 High 的验证,但这似乎不适用于验证属性。

有没有更好的方法来做到这一点?我不喜欢上面的解决方案的主要事情是我不能ParameterBindingException像验证属性那样抛出一个,因为它是一个内部类。我可以抛出ArgumentExceptionPSArgumentException但那些真的是用于方法而不是 cmdlet。

0 投票
1 回答
972 浏览

c# - 通过 PowerShell 上的 Rest 获取自定义对象

我使用 Powershell 版本 3,并且我想通过 Rest 将 uri 上的数据作为对象获取。我使用了 CmdLedt Invoke-RestMehtod:

我的输出是:

但我想要一个输出,其中 ID、名称、Airdate 是一个像这样的对象(2 个对象):

有人可以解释我如何通过从返回 JSON 的 URI 中休息一个服装对象来使用 CmdLedt 吗?

后来我必须在 C# 代码中使用它来从 URI 中获取动态对象,并且它们的结构总是不同的。因此我需要这个 CmdLet,因为它通常会生成动态对象。到目前为止,在 C# 中我的代码:

0 投票
1 回答
172 浏览

.net - Powershell:参数集,需要一个或另一个

考虑这个 Cmdlet(删除使用):

现在您可以执行此 Cmdlet 的方式如下:

拥有 and A 和 B 不起作用,仅使用 B 也不起作用(需要 C)。

所以这很好,但是我想防止你可以通过键入来执行 Cmdlet Foo,现在我可以在代码中检查它,但是由于 Powershell 非常棒,有没有办法通过运行时强制执行它?

0 投票
2 回答
806 浏览

validation - PowerShell : GetNewClosure() 和带有验证的 Cmdlet

我试图了解 .GetNewClosure() 如何在 PowerShell 2 中的脚本 cmdlet 的上下文中工作。

本质上,我有一个返回对象的函数,如下所示:

如果我没有验证集选项,则关闭似乎可以正常工作。但是,如果包含它,则新的闭包将失败并出现以下错误。

使用“0”参数调用“GetNewClosure”的异常:“无法添加属性,因为它会导致具有值的变量选项变得无效。”

据推测,闭包正试图捕获对 Cmdlet 的调用的上下文。由于参数“Options”根本没有绑定,这与参数验证不太好。

我想可以通过将验证作为代码放置在 Cmdlet 的主体中来避免这种情况,而不是使用 [Validate*()] 装饰器——但这看起来很讨厌而且很模糊。有没有办法融合这两个想法?

0 投票
0 回答
353 浏览

c# - 卸载 powershell cmdlet

我创建了我的自定义 powershell cmdlet。它注册和安装都很好,但是当我尝试卸载它时,我得到一个错误。我使用这个命令来卸载它:

错误:卸载正在开始。有关“.dll 路径”程序集的进度,请参阅日志文件的内容。该文件位于“安装程序日志路径”.InstallLog。卸载程序集“.dll 的路径”。受影响的参数有: logtoconsole = assemblypath = 'path to .dll' logfile = 'install log path'.InstallLog 卸载“我的安装程序名称”安装程序时发生异常。System.ArgumentException:无法删除子项树,因为子项不存在。卸载时发生异常。此异常将被忽略,卸载将继续。但是,卸载完成后应用程序可能不会完全卸载。

卸载已完成。卸载时发生异常。此异常将被忽略,卸载将继续。但是,卸载完成后应用程序可能不会完全卸载。

我看了看注册表。虽然我发现对我的 cmdlet 的引用很少,但删除它们并没有什么不同。

我目前通过手动删除 cmdlet 安装程序所在的路径来卸载。我不确定这是否可以并且将来不会导致问题。

你知道如何解决这个问题吗?