gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 09:35:41 25 4
gpt4 key购买 nike

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

$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= 是“姓名”的简写
  3. 冒号 (;) 用于分隔列名和填充该列的表达式。
  4. e= 是表达式的简写
  5. {$sw} - 括号是封装表达式所必需的。

问题:

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

感谢您的帮助!

最佳答案

它不是数组而是哈希表。在引用的代码中,一个 calculated property用来。通常计算的属性用于计算东西。例如,可用磁盘空间可以根据此 answer 计算为百分比:

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

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

关于PowerShell - 为什么在这行代码中使用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65668656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com