[英]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.