首页 > 解决方案 > Powershell c# 模块,从 cmdlet 更改提示

问题描述

如果我function prompt {"PS: $(get-date)>"}在终端中运行,它会更改提示。

如何从 ac# cmdlet 运行此命令,例如,我正在尝试的是:

protected override void ProcessRecord()
{
    Host.UI.Write(ConsoleColor.Green, Host.UI.RawUI.BackgroundColor, "function prompt {\"PS: $(get-date)> \"}");
}

但它只是在新行中打印该脚本。

(使用 PS7.0)

标签: c#powershellcmdlet

解决方案


首先创建一个名为 prompt_change.ps1 的 .ps1 文件:

function prompt {"PS: $(Get-Date)>"}

然后您可以从 powershell 控制台运行它以从 C# 更改您的 powershell 提示符:

$code = @'
using System;
namespace TestTest {
  public class Program {
    public static void Main( string[] args ) {
      var ps = PowerShell.Create();
      ps.AddScript(@"Full path of prompt_change.ps1 without double backslashes").Invoke();
    }
  }
}
'@
Add-Type -TypeDefinition $code -Language CSharp
Invoke-Expression "[TestTest.Program]::Main()"

推荐阅读