1

正如我在问题标题中提到的,我想将ConvertFrom-Json命令的输出转换为字符串,这样我得到的字符/字符串应该是可用的,这样它就可以插入到 DateTime 字符串中作为另一个字符的替换。

目前我有以下代码来获取当前的日期时间:

$DTCurr = (Get-Date).tostring("dd-MM-yyyy_hh+mm+ss")

现在在上面的代码中,我想用冒号强制替换加号,这样生成的 DateTime 字符串可以用于文件命名,所以我期待输出(替换后)如下所示:

07-11-2020_12:59:13

现在我尝试使用此代码进行强制替换,但它不起作用:

$colon = ('{ "str": "\uA789" }' | ConvertFrom-Json)
$DTCurr = (Get-Date).tostring("dd-MM-yyyy_hh+mm+ss")
$DTCurr = $DTCurr -replace "\+",$colon
Echo $DTCurr

这给出了输出:07-11-2020_02@{str=꞉}06@{str=꞉}28这是荒谬和出乎意料的。我可以保证$colon传递:Echo.

有人可以让我知道我做错了什么并帮助实现这一目标吗?

4

2 回答 2

2

对不起,如果我误解了这一点,但我认为你的最终目标可以通过这样做来简化

$DTCurr = (Get-Date).tostring("dd-MM-yyyy_hh:mm:ss")

或这个

$DTCurr = (Get-Date).tostring("dd-MM-yyyy_hh+mm+ss")
$colonDT = $DTCurr -replace "\+",":"

但是,如果您想按照自己的方式进行操作,那么它打印该输出的原因是因为它完全按照您的指示进行操作。您将 替换为一个对象,该对象的+属性名为。你需要这样做str:

$colon = ('{ "str": "\uA789" }' | ConvertFrom-Json)
$DTCurr = (Get-Date).tostring("dd-MM-yyyy_hh+mm+ss")
$colonDT = $DTCurr -replace "\+",$colon.str
Echo $colonDT

如果我不正确,并且您需要更多帮助,请告诉我。

于 2020-11-06T20:46:35.897 回答
1
于 2020-11-07T02:18:39.947 回答