c# - 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)
解决方案
首先创建一个名为 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()"
推荐阅读
- postgresql - 在同一查询中创建的列上运行 Postgres 字符串函数
- bash - bash 命令检查 jmeter 测试是否成功运行
- java - 制作对象时可以不显示构造函数吗
- python - 为什么这个简单的 2d 运动滞后这么多?
- linux - 我想自己在 llvm 上开发优化器,我该如何构建它?
- firefox - Firefox 将插件编译成二进制
- vue.js - 路径匹配但(vue)路由器视图显示错误的组件
- google-app-engine - 如何让我在云存储中的反应应用程序和应用程序引擎 api 在同一个域下?
- git - 2个团队的2个主分支的Git Flow
- javascript - 为什么我的函数不能从 ngForm 收集用户输入?