powershell 字符串替换内联或新循环

powershell string replace inline or new loop

在 'fullname' 中进行一些字符串替换的最佳方法是什么?

类似于.Replace($oldString, $newString),但需要在已经计算出 MD5 之后完成。

还是在我的 MD5 处理完成后再执行一次 ForEach-Object 更好?

| select-object name, fullname, @{Name = "MD5"; Expression = { (Get-FileHash $_.FullName -Algorithm MD5).Hash.ToLower() } }

it needs to be done after the MD5 is already calculated

我认为您在创建计算 属性 时不能依赖另一个计算 属性,至少不能在同一管道步骤中。每个计算的 属性 仅在当前管道步骤作为一个整体完成后才可用。

你可以做的是像这样链接两个 Select-Object 语句:

Get-ChildItem -file |
select-object fullname, name, @{Name = "MD5"; Expression = { (Get-FileHash $_.FullName -Algorithm MD5).Hash.ToLower() } } | 
select-object name, MD5, @{Name = 'fullname'; Expression = { <# do something with $_.fullname and $_.MD5 #> }}