我正在玩 PSCmdlet 类。
有没有办法可以在执行我的命令的主机 powershell 中调用命令?
例如:
我想做一个函数来设置一些别名。
public void myAliases() {
// Invoke Set-Alias in host ?
}
我试图举例Powershell.Create()
,AddCommand()
但没有为我工作。
提前致谢!
我正在玩 PSCmdlet 类。
有没有办法可以在执行我的命令的主机 powershell 中调用命令?
例如:
我想做一个函数来设置一些别名。
public void myAliases() {
// Invoke Set-Alias in host ?
}
我试图举例Powershell.Create()
,AddCommand()
但没有为我工作。
提前致谢!
您可以使用 c# 编写类库并扩展 PSCmdlet 以创建可直接在 powershell 中使用的方法。
为此,您将需要一个声明如何调用它的方法
[Cmdlet("Lookup", "Aliases")]
public class LookupAliases: PSCmdlet
{
[Parameter(Mandatory = true,
ValueFromPipeline = false,
ValueFromPipelineByPropertyName = false,
ParameterSetName = "1",
HelpMessage = "Indicates the help message")]
public string FirstArgument{ get; set; }
protected override void ProcessRecord()
{
// write your process here.
base.ProcessRecord();
}
}
在 powershell 中,您需要导入您在上面创建的这个 dll(编译解决方案)并在 powershell 中运行
Lookup-Aliases -FirstArugment "value"
如果您希望在 c# 中运行 powershell 命令,
Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.Open();
Pipeline pipeline = runSpace.CreatePipeline();
string script = "your powershell script here";
pipeline.Commands.AddScript(script);
Collection<PSObject> output = pipeline.Invoke();