问题标签 [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.
c# - 如何使 PSCmdlet bool 参数像标志一样工作?
使用 System.Management.Automation,您可以在 C# 中创建自定义 PSCmdlet。现在,如果您像这样创建布尔参数:
您必须像这样调用 cmdlet:
但我想在不将值传递给-ShowDefinition 的情况下调用它。与 -Debug 的工作方式相同。像这样:
我怎样才能做到这一点?
c# - 检测 PowerShell 开关
我正在用 C# 开发一个 PowerShell cmdlet,并且有真/假切换语句。我已经注意到我需要指定 -SwitchName $true,如果我希望 bool 为真,否则我得到:
开关是这样装饰的:
我怎样才能检测到开关的存在(-SwitchName 设置为 true,没有 -SwitchName 表示 false)?
c# - AppDomain.CurrentDomain.BaseDirectory 更改为错误目录
我dll
用Cmdlet
命令创建了一个(参见 Get_DemoNames.cs)。从这里cmdlet
我称之为方法UpdateXml()
,到目前为止一切正常。但UpdateXml()
如果文件不存在,也会创建文件。当我UpdateXml()
像这样调用类文件时:
我运行项目,它进入正确的目录。
但是,如果我加载导入的 dll 并DemoNames
在单独的测试项目中运行命令,如下所示:
程序转到错误的目录,导致以下错误:
Get-DemoNames:拒绝访问路径“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\beheer_extern\config”。在 line:1 char:10 + DemoNames <<<< + CategoryInfo : NotSpecified: (:) [Get-DemoNames], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,EF.XML.Get_DemoNames
我在网上搜索了这个错误,发现其他人可以通过将这一行添加到构造函数来解决它:
这给了我另一个错误的路径:
Get-DemoNames :拒绝访问路径“C:\Windows\system32\beheer_extern\config”。在 line:1 char:10 + DemoNames <<<< + CategoryInfo : NotSpecified: (:) [Get-DemoNames], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,EF.XML.Get_DemoNames
Get_DemoNames.cs
解析器.cs
如何获得项目的正确目录(www 目录)?
c# - PSHost PromptForChoice 格式 ChoiceDescription
在我的PSCmdlet
课堂上,我要求用户使用PromptForChoice
. 提示用户选择他想要使用的连接字符串。我无法给出ChoiceDescriptions
正确的格式。
给我这个
连接字符串
选择您要使用的连接字符串
[0] 0数据源=.\SQLEXPRESS;集成安全=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;用户实例=true
[1] 1有效的连接字符串;
[2] 2Data Source=111.111.1.1;初始目录=Test;User id=User;Password=Password;MultipleActiveResultSets=true
[?] 帮助(默认为“0”):
如您所见,这些数字也在连接字符串文本中,这不是我想要的。
这就是我想要实现的目标:
[0] 数据源=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;用户实例=true
等等等等
因此,我需要将用户选择为int
. 我怎样才能得到我想要达到的结果?
代码:
powershell - 扩展要在管道中使用的对象
我想扩展 VMware PowerCli cmdletGet-VM
以在其字段中包含我的值并通过管道传递它。
例如,我想在对象中看到MyField1
和MyField2
。这可以通过 ps1xml 文件来实现。
当我尝试使用管道中的字段时,我什么也没得到。
例如,在这里我将使用Select-Object
cmdlet,但这些都不是:
我怎样才能真正扩展一个对象,在我的情况下VMware.VimAutomation.ViCore.Impl.V1.Inventory.VirtualMachineImpl
具有一些扩展功能并将这些值传递给管道?
powershell - PowerShell cmdlet
我正在尝试编写一个 PowerShell cmdlet,它接受单个参数的多个输入。
例如,我可以轻松地执行以下操作:
但我想做这样的事情:
(或者)
我搜索了,但我找不到如何做到这一点。
我该怎么做?
c# - 在powershell中编写一个可调用的powershell类
使用 Cmdlet(和/或 PSCmdlet),我可以创建
然后,在powershell中,我可以调用命令
一切都很好。
但是我想创建一个类而不是一个函数,这样我就可以获取一个对象,然后在 powershell 中使用它
就像是
以上可以在C#中完成吗?如果是这样,怎么做?
windows - 将 cmdlet 输出记录到具有日志记录功能的文件,而不使用 foreach
我有一个类似于以下示例的 cmdlet 来删除早于 x 天的文件和一个记录到文件的日志记录函数(写入日志):
我想要做的是记录 cmdlet 对每个处理的文件所做的事情。在正常的 foreach 循环中,我会添加类似这样的内容来记录该过程
如何使用我的日志记录功能和上述 cmdlet 记录所有操作?
c# - C# Powershell Cmdlet:调用另一个 cmdlet
我在 C# 中创建了一组 PowerShell cmdlet。
现在我有一个 cmdlet 可以重用另一个的代码。
在 Powershell 中这很容易,因为我可以使用参数调用 cmdlet,但是有没有办法在 C# 中调用它?完整的逻辑在BeginProcessing()
//实现中实现,基本上返回ProcessRecord()
/使用所以我认为不可能(?)。EndProcessing()
void
WriteObject()
如果我是对的 - 处理这个问题的正确方法是什么?我是否应该从方法中提取基本代码BeginProcessing()
并将其放入单独的方法中以使其可用?
任何反馈表示赞赏,乔尔
c# - Cmdlet 详细流
我目前正在使用 PowerShell 5.0 SDK 编写 C# cmdlet。
当从powershell“实时”运行时,我正在尝试将第三方可执行文件的StandardError通过管道传输到cmdlet输出。
我目前正在使用 MedallionShell 库来处理运行该过程。我已经使用普通的 C# win 表单进行了尝试,并使用 Command.StandardError.PipeToAsync(Console.OpenStandardOutput()) 来获取要打印的输出,因为可执行文件“实时”将其生成到控制台。
我尝试创建自己的调用 WriteVerbose 的 Stream 对象,但它似乎没有在 powershell 屏幕上打印任何内容(我在运行时将 -Verbose 传递给 cmdlet)。
我当前的流程看起来像这样:
- 打开 Powershell ISE
- 加载我的模块(C# dll)
- 使用参数调用我的 cmdlet
- 命令运行
- Command.StandardError.PipeToAsync(???)
- Command.Wait(在此步骤中,输出应流向 powershell 窗口)
- 检查命令.结果.成功。
谁能指出我正确的方向?