0
我試圖沿着下面的行創造的東西:是否有可能將屬性別名到Powershell管道命令中的變量?
Get-ChildItem -path *.txt* -recurse | $a = $_.Name.Length | Format-Table Name, $a
這是一個人爲的例子,但假設我想利用$_Name.Length
好幾次,但在它的地方替代$1
或$a
。
我該如何做到這一點?
我試圖沿着下面的行創造的東西:是否有可能將屬性別名到Powershell管道命令中的變量?
Get-ChildItem -path *.txt* -recurse | $a = $_.Name.Length | Format-Table Name, $a
這是一個人爲的例子,但假設我想利用$_Name.Length
好幾次,但在它的地方替代$1
或$a
。
我該如何做到這一點?
使用的中間計算屬性:
注:
此使用屬性輸出對象上而不是在可變攜帶所關注的值。
在此過程中,它將通過管道傳遞的對象的類型更改爲類型[pscustomobject]
- 添加了a
屬性的自定義類型。這可能是也可能不是問題(而不是與Format-Table
管道有問題)。
相反,如果你的計劃是簡單地處理在ForEach-Object
過程塊輸入對象,無論如何,你可以簡單地定義塊中的變量:
Get-ChildItem -Path *.txt* -Recurse | ForEach-Object {
$a=$_.Name; $a.Substring(0, $a.IndexOf('.txt'))
}
(作爲撇開:此示例命令並不嚴格需要輔助變量,因爲它可以更簡潔地表示爲:
Get-ChildItem -Path *.txt* -Recurse | ForEach-Object { $_.Name -replace '\.txt.*$' }
)。
目標是在現有的計算屬性中使用它,其中許多依賴'$ _。Name.Length'而不必重複輸入。 – toolshed
@toolshed:請參閱我的更新。 – mklement0
我收到一個錯誤,可能是因爲我沒有引用變量。我想把'$ _。Name'綁定到一個臨時變量 - 讓我們把它叫做'$ a' - 這樣我就可以做如下的事情:'$ a.Substring(0,$ a .IndexOf(「。apx」))'而不是'$ _Name..Substring(0,$ _ Name.IndexOf(「。apx」))''。 – toolshed