簡體   English   中英

Powershell c# 模塊,從 cmdlet 更改提示

[英]Powershell c# module, change promp from a 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)

首先創建一個名為 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()"

看來正確的問題是“如何從 ac# cmdlet 運行腳本”

這兩行將運行一個腳本來修改提示以顯示當前時間。

ScriptBlock block = SessionState.InvokeCommand.NewScriptBlock("function prompt {\"PS: $(get-date)> \"}");
SessionState.InvokeCommand.InvokeScript(SessionState, block);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM