首先,你的New-Variable
调用不会做你想象的那样,因为你会通过管道输出New-Variable
to Where-Object
而不是使用的值$Transactions | Where ...
作为变量的值。您需要括号才能起作用:
New-Variable -Name "Transactions_$Year" -Value ($Transactions | Where {$_.Date -like "*.$Year" })
如果您绝对必须使用这种方法,那么您可以通过以下方式再次获取变量Get-Variable
:
Get-Variable Transactions_$Year | % Value
然而,使用具有魔法名称的多个变量是解决这个问题的一种相当糟糕的方法。您可能更想要一张地图:
$TransactionsPerYear = @{}
$Years | ForEach-Object {
$TransactionsPerYear[$_] = $Transactions | Where Date -like "*.$_"
}
您可以通过以下方式获取 2015 年的所有交易$TransactionsPerYear[2015]
.
另一种方法是Group-Object
它甚至不需要一开始就列出可能的年份,而是通过某些属性或表达式结果对多个对象进行分组:
$TransactionsPerYear = $Transactions | Group-Object { [int]($_.Date -replace '.*\.') }
(这是对其如何工作的猜测。似乎您的日期字符串包含一段时间的内容,之后是年份,没有其他内容,所以也许类似dd.MM.yyyy
日期格式。