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