需要帮助了解powershell方法

时间:2015-05-06 20:55:17

标签: powershell foreach

您好我是Powershell的新手,并为自己创建了一个相当复杂的代码,并发现他们可以用不止一种方式编写代码:

$DayLimit = (Get-Date).AddDays(-8)
$Date = Get-Date -Format yyyyMMdd
$Path = Get-ChildItem G:\VLTNAS1_Backup\Active\Nightly\ -Force |
Where-Object { $_.PSIsContainer -eq $True -and $_.CreationTime -lt $DayLimit }

ForEach ($Folder in $Path)
{
if($Folder.PSIsContainer -eq $True -and $Folder.CreationTime -lt $DayLimit)
{
Write-Host $Folder
}
}

我有2个问题,第一个问题是我使用Write-Host测试了这两种方法,并且它们以不同的方式打印结果。

条件嵌套到变量中的第一个示例是它们打印在一行中,例如:Test1 Test2 Test3

我使用结果的第二种方法打印在一个列中,例如:

Test1

Test2

Test3的

为什么?

我的最后一个问题是,与使用这两种方法的区别是,创建嵌套在变量中的条件更强大,反之亦然。我只是想了解更多有关powershell的信息并接受任何帮助或批评,谢谢。

1 个答案:

答案 0 :(得分:1)

在第一个示例中,您将所有输出分配给$ Path,并且输出只是不包含任何换行符,因此它们都进入同一行。在第二个示例中,每个文件夹名称由write-host单独输出,write-host每次运行时都会创建一个新行。

这两种方法本身都不是特别强大,但如果它是将来可能需要更改的冗长脚本,通过避免流水线命令来理解脚本中发生的事情往往要容易得多。在你的例子中,它并没有真正做到这么多,所以它不是什么大问题,但如果你有几个if检查和嵌套循环,你可能希望有更多可读代码,以便更容易调试和维护。