gpt4 book ai didi

c# - 从 Powershell 调用的 c# 中的 StringExpansion

转载 作者:行者123 更新时间:2023-11-30 12:42:16 25 4
gpt4 key购买 nike

我有一个小的 c# 类,它做一些日志记录的事情,它是从 powershell 脚本框架调用的,使用:

[System.Reflection.Assembly]::LoadFrom("$ExtensionsPath\LogWriter.dll") 
$Log = New-Object LogWriter($LogFile, $addTimeStamp, $logLevel, $overWrite)

写入日志文件是这样的

$Log.AddInfo("myText")

到目前为止工作正常。

一段时间以来,我一直在考虑,是否可以在我的 LogWriter 类的 AddInfo() 方法中使用 stringexpansion?

看例子:

$ModulesPath = ‘C:\temp\modules’
$test = ‘This is a text and I want to expand $ModulesPath in my c# LogWriter class’
$Log.AddInfo($test)

C# 类现在应该像 powershell 一样扩展 $test 中的 $modulespath。我已经知道在 c# 中我可以访问使用 System.Management.Automation 命名空间从中调用 c# 类的 powershell 运行空间。但是后来我不知道如何真正扩展变量。

写入日志文件的条目应如下所示:

这是一个文本,我想在我的 c# LogWriter 类中扩展 C:\temp\modules

当然我知道我可以在我的脚本中使用

$Log.AddInfo(($ExecutionContext.InvokeCommand.ExpandString($test)))

但这很糟糕,因为它看起来很难看,而且如果我忘记添加此语句,则不会完成扩展。

所以我想在我的 c# 类中检索当前运行空间并在那里执行 ExpandString-Command 以获取扩展变量,但我失败了。这超出了我的知识范围。

这里有人告诉我这是否可能吗?我已经想到了一些其他的任务,在哪里使用它,所以请不要开始争论这是否有意义。

Rgds

一月

最佳答案

如何在脚本之外知道 $ModulesPath 的值?如果你想在 C# 中扩展它,那么你必须发送它,可以作为 AddInfo 的第二个参数,例如:

$Log.AddInfo($test, $ModulesPath)

现在已知并且可以通过以下方式进行替换:

string sNew = sTest.Replace("$ModulesPath", sModulesPath);

其中 sTestsModulesPath 是参数。

关于c# - 从 Powershell 调用的 c# 中的 StringExpansion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34314573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com