Powershell 测量对象导致ForEach对象循环内的变量不正确

Powershell 测量对象导致ForEach对象循环内的变量不正确,powershell,Powershell,在下面的代码中,我得到了运行时循环中$oldest.Minimum的结果“Microsoft.PowerShell.Commands.GenericObjectMeasureInfo.Minimum” $oldest=(获取ChildItem-路径“$|”-名称|度量对象-最小值) 循环后,$oldest.Minimum返回循环中最后一个对象的正确值。 此外,如果我只运行getchilditem-Path“$|”-Name | measureobject-Minimum,我将在循环中获得正确的输

在下面的代码中,我得到了运行时循环中$oldest.Minimum的结果“Microsoft.PowerShell.Commands.GenericObjectMeasureInfo.Minimum”
$oldest=(获取ChildItem-路径“$|”-名称|度量对象-最小值)

循环后,$oldest.Minimum返回循环中最后一个对象的正确值。 此外,如果我只运行
getchilditem-Path“$|”-Name | measureobject-Minimum
,我将在循环中获得正确的输出

任何帮助都将不胜感激

守则:

$folders= @()
Get-Content -Path .\folders.txt | ForEach-Object{
echo "path is $_"
$oldest = (Get-ChildItem -Path "$_" -Name | Measure-Object -Minimum)
echo "oldest folder is $oldest.Minimum"
$folders += "$_\$oldest.Minimum"
}
echo $oldest.Minimum
$minMin =($folders | Measure-Object -Minimum)
echo $minMin.Minimum
结果是:

path is C:\Local Files\Script testing\Dates\1
oldest folder is Microsoft.PowerShell.Commands.GenericObjectMeasureInfo.Minimum
path is C:\Local Files\Script testing\Dates\2
oldest folder is Microsoft.PowerShell.Commands.GenericObjectMeasureInfo.Minimum
path is C:\Local Files\Script testing\Dates\3
oldest folder is Microsoft.PowerShell.Commands.GenericObjectMeasureInfo.Minimum
2019-12-10
C:\Local Files\Script testing\Dates\1\Microsoft.PowerShell.Commands.GenericObjectMeasureInfo.Minimum
在循环中使用
Get ChildItem-Path“$|”-Name | Measure Object-Minimum
,而不是存储到变量

path is C:\Local Files\Script testing\Dates\1


Count    : 5
Average  :
Sum      :
Maximum  :
Minimum  : 2019-12-18
Property :

oldest folder is Microsoft.PowerShell.Commands.GenericObjectMeasureInfo.Minimum
path is C:\Local Files\Script testing\Dates\2
Count    : 5
Average  :
Sum      :
Maximum  :
Minimum  : 2019-12-18
Property :

oldest folder is Microsoft.PowerShell.Commands.GenericObjectMeasureInfo.Minimum
path is C:\Local Files\Script testing\Dates\3
Count    : 5
Average  :
Sum      :
Maximum  :
Minimum  : 2019-12-10
Property :
预期产出:

path is C:\Local Files\Script testing\Dates\1
oldest folder is 2019-12-18
path is C:\Local Files\Script testing\Dates\2
oldest folder is 2019-12-18
path is C:\Local Files\Script testing\Dates\3
oldest folder is 2019-12-10
2019-12-10
C:\Local Files\Script testing\Dates\1\2019-12-10

在foreach循环中,当您回显“最早的文件夹是
$variable.property
”语句时,您正在打印
$variable
,但不打印
属性。这是因为
.property
被认为是字符串的一部分

如果需要打印带引号字符串中变量的属性,则必须使用$()将其覆盖,使其成为需要计算的参数。这样就解决了问题

Get-Content -Path .\folders.txt | ForEach-Object{
  echo "path is $_"
  $oldest = (Get-ChildItem -Path "$_" -Name | Measure-Object -Minimum)
  echo "oldest folder is $($oldest.Minimum)"
  $folders += "$_\$($oldest.Minimum)"
}

谢谢,这正是我需要的。