我对PowerShell和编码相对较新,并且在访问数组中的值时遇到问题。我试图使用foreach循环一组文件并计算每个文件中的消息数。然后将每个文件的计数放入数组中,以便将其分配给变量。当我写主机$ data [0]时,它返回所有值。如果我写主机$ data 1,它什么都不返回。似乎这些值都存储为一个而不是单个数字。如何获取每个值,然后将其分配给变量。任何帮助将不胜感激。
$FilePath = 'some file path here'
$TodaysDate = (Get-Date -format "MM-dd-yyyy")
ForEach($file in Get-ChildItem $FilePath -exclude *.ps1,*.xml,*.xls | Where-Object {$_.LastWriteTime -ge $TodaysDate})
{
$data = ,@(Get-Content $file | Where-Object {$_.Contains("MSH|")}).Count
write-host $data[0]
}
exit
答案 0 :(得分:0)
在这一行:
$data = ,@(Get-Content $file | Where-Object {$_.Contains("MSH|")}).Count
您正在创建单个元素的数组(计数)。你想要做的是每次添加$ data:
$data += ,@(Get-Content $file | Where-Object {$_.Contains("MSH|")}).Count
但是根据你的描述,我认为你可能需要一个哈希表,使用文件名作为键:
$data = @{} #init hashtable
ForEach($file in Get-ChildItem $FilePath -exclude *.ps1,*.xml,*.xls | Where-Object {$_.LastWriteTime -ge $TodaysDate})
{
$data[$file] = @(Get-Content $file | Where-Object {$_.Contains("MSH|")}).Count
}
write-output $data