PowerShell-为什么在这行代码中使用数组?

我有以下代码在多个文件中查找字符串,我在这里找到了其中的一部分。

$path = C:Windows
Set-Location -path $path

$searchWords = 'log.txt'

Foreach ($sw in $searchWords)
{
    Get-Childitem -Path $path -Recurse -include "*.txt","*.dll" | 
    Select-String -Pattern "$sw" | 
    Select Path,LineNumber,@{n='SearchWord';e={$sw}}
}

我不认为我理解的语法是最后一行的这一部分:

@{n='SearchWord';e={$sw}}

我会解释我认为我理解的内容,然后提出问题。

  1. @我认为意味着它是一个数组
  2. n= 是 'name' 的简写
  3. 冒号(;) 将列名和填充列的表达式分开。
  4. e= 是表达式的简写
  5. {$sw} - 这里需要括号来封装表达式。

问题):

  1. 为什么使用数组来填充此列?
  2. 为什么必须使用表达式而不仅仅是变量“$sw”?

谢谢您的帮助!

回答

它不是数组而是哈希表。在引用的代码中,使用了计算属性。通常计算的属性用于计算东西。例如,可用磁盘空间可以根据以下答案计算为百分比:

@{Name = 'Free';Expression = { "{0:N0}%" -f (($_.FreeSpace/$_.Size) * 100) } }

在您使用的示例中,计算属性用于添加标签属性,其中包含在foreach循环的每次迭代中使用的搜索词。


以上是PowerShell-为什么在这行代码中使用数组?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>