Tag: cmdlet

如何在“Get-Help”中显示C#Cmdlet参数HelpMessage

我已经启动了PowerShell cmdlet,并希望为参数提供帮助消息。 我已经尝试过使用ParameterAttribute.HelpMessage : [Cmdlet(VerbsCommon.Get, “Workspace”, SupportsShouldProcess = true)] public class GetWorkspace : PSCmdlet { [Parameter( Mandatory = true, Position = 1, HelpMessage = “The path to the root directory of the workspace.”)] public string Path { get; set; } protected override void ProcessRecord() { base.ProcessRecord(); } } 但是,当我使用PowerShell Get-Help命令时,它不会显示参数的HelpMessage: get-help Get-Workspace -det NAME Get-Workspace […]

从c#应用程序调用azure powershell cmdlet失败

我正在自动化部署到azure云的过程。 我的powershell脚本就是这样做的,当从azure powershell命令行执行它时,它就像一个魅力。 当我尝试从c#应用程序调用相同的脚本时,它失败了。 这是我的代码: internal void RunPowerShellScript(string scriptPath, Dictionary arguments) { RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace); Pipeline pipeline = runspace.CreatePipeline(); //Here’s how you add a new script with arguments Command myCommand = new Command(scriptPath, true); foreach (var argument in arguments) { myCommand.Parameters.Add(new CommandParameter(argument.Key, argument.Value)); } […]

在Powershell Cmdlet调用之间保持状态的最佳实践是什么?

我是Powershell开发的完全新手,我正在尝试用C#编写一个Powershell Cmdlet,它将用作REST API的接口。 我想有一些设置Cmdlet,用户将被提示输入REST API的Uri,用户名和密码,然后调用Cmldlets,如Get-Item,而不必输入这些参数。 非常类似于Powershell的Azure提供程序,您可以通过调用Select-AzureSubscription设置当前订阅,然后再调用Save-AzureVhd而无需再输入订阅名称。 在不同Cmdlet的调用之间保持状态的最佳实践是什么? 编辑:我不确定这是解决它的最佳方法,但我所做的是我添加了一个持有状态的单例类。 我有一个Cmdlet,Select-Project -Name MyProject,它在我的单例类中设置一个公共属性,然后我的其他Cmdlet可以访问该属性。

如何从C#以编程方式调用CmdLet时捕获Powershell CmdLet的详细输出

背景 我在Windows 7上使用Powershell 2.0。 我在Powershell模块中编写了一个cmdlet(“模块”是Powershell 2.0的新增function)。 为了测试cmdlet,我在Visual Studio 2008中编写unit testing,以编程方式调用cmdlet。 参考 MSDN上的这篇文章名为“如何从Cmdlet中调用Cmdlet”,展示了如何从C#调用cmdlet。 来源代码 这是我的实际代码的简化版本 – 我已尽可能小,以便您可以清楚地看到我遇到的问题: using System; using System.Management.Automation; namespace DemoCmdLet1 { class Program { static void Main(string[] args) { var cmd = new GetColorsCommand(); foreach ( var i in cmd.Invoke()) { Console.WriteLine(“- ” + i ); } } } [Cmdlet(“Get”, “Colors”)] public class […]

如何将.cs文件转换为PowerShell cmdlet?

任何人都可以帮我将C#.NET程序转换为PowerShell cmdlet吗? 我对这个领域很新。 请帮我走出这个检查站! 问候, 阿伦

托管的PowerShell无法在同一个程序集中看到Cmdlet

我正在尝试从我的C#代码运行PowerShell脚本,它将使用运行它们的程序集中的自定义Cmdlet。 这是代码: using System; using System.Management.Automation; [Cmdlet(VerbsCommon.Get,”Hello”)] public class GetHelloCommand:Cmdlet { protected override void EndProcessing() { WriteObject(“Hello”,true); } } class MainClass { public static void Main(string[] args) { PowerShell powerShell=PowerShell.Create(); powerShell.AddCommand(“Get-Hello”); foreach(string str in powerShell.AddCommand(“Out-String”).Invoke()) Console.WriteLine(str); } } 当我尝试运行它时,我得到一个CommandNotFoundException。 我写错了Cmdlet吗? 有什么我需要做的事情来在PowerShell或Runspace中注册我的Cmdlet吗?

如何在Visual Studio中从C#调用PowerShell cmdlet

我正在从Visual Studio创建一个PowerShell cmdlet,我无法找到如何从我的C#文件中调用cmdlet,或者这是否可能? 我一个接一个地运行我的cmdlet没有问题,但我想设置一个cmdlet来在续集中运行多个cmdlet。

从C#调用Powershell函数

我有一个PS1文件,其中包含多个Powershell函数。 我需要创建一个静态DLL,读取内存中的所有函数及其定义。 然后,当用户调用DLL并传入函数名称以及函数的参数时,它会调用其中一个函数。 我的问题是,是否可以这样做。 即调用已读取并存储在内存中的函数? 谢谢