【问题标题】:Need help understanding powershell method需要帮助理解 powershell 方法
【发布时间】:2015-05-07 05:08:53
【问题描述】:

您好,我是 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

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

测试1

测试2

测试3

这是为什么呢?

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

【问题讨论】:

    标签: powershell foreach


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 2011-03-14
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多