在'fullname'中做一些字符串替换的最佳方法是什么?
类似.Replace($oldString, $newString)
,但它需要在MD5已经计算出来之后完成。
或者它只是更好地做另一个ForEach-Object后,我的MD5进程完成?
| select-object name, fullname, @{Name = "MD5"; Expression = { (Get-FileHash $_.FullName -Algorithm MD5).Hash.ToLower() } }
需要在MD5已经计算完成后进行
我不认为你可以依赖于另一个计算属性时,创建一个计算属性,至少不是在同一个管道步骤。每个计算的属性只有在当前管道步骤作为一个整体完成时才可用。
你可以做的是像这样链接两个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 #> }}