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 #> }}
在 '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 #> }}