【问题标题】:Foreach looping data in a array to check against items in another arrayForeach 循环数组中的数据以检查另一个数组中的项目
【发布时间】:2016-01-08 11:02:11
【问题描述】:

我尝试了许多变体,但无法将值从一个 foreach 传递到另一个 foreach 循环。我正在尝试通过事件日志解析登录注销信息,然后为每台计算机创建一个 CSV 文件。该脚本适用于单个文件,但一旦我使用 foreach 循环,我的 CSV 文件中没有任何响应。包括下面的脚本。 $name3 变量不会出现在最后一个 foreach 语句中。

如何将$name3 的值传递给嵌套的foreach 循环?

$userlist = Import-Csv -Path "W:\admin\logs\computers.log" 

foreach ($xcomputer in $userlist) {
  $name3 = $xcomputer."test"

  $arrtest = Import-Csv -Path "W:\admin\logs\log_times.log" -Delimiter " " | 
             Sort-Object -Property date
  $s = $name3 + ".csv"
  $outfile = "W:\admin\logs\reports\$s"

  Write-Output "action,datetime,user" | Out-File $outfile
  foreach ($Users1 in $arrtest) {
    if ($name3 -eq $users1.computer) {
      $action1 = $Users1.action
      $date1 = $Users1.date
      $time1 = $Users1.time
      $user1 = $Users1.user
      $datetime = $date1 + " " + $time1 
      Write-Output "$action1,$datetime,$user1" | Out-File $outfile -Append
    }
  }
}

【问题讨论】:

  • 我无法重现您描述的问题。请提供证据。
  • 我找到了使用 $xcomputer.test 而不是将其分配给变量的方法。现在我有另一个问题。即使数据不同,我的 If 语句也始终为真。这是我的语句 If ($xcomputer.test -and $zcomputer) {Do this} 如果我使用 -eq 则结果相同数据是计算机的文本名称
  • 请不要移动目标。如果您有新问题:发布新问题。您可能还想发布针对此问题中描述的问题的解决方法作为您自己的答案(不要忘记accept that answer,因此该问题已从“未回答”队列中删除)。

标签: arrays powershell foreach powershell-3.0


【解决方案1】:

我在 foreach 循环之前切换了 Input-CSV,一切正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2020-10-11
    相关资源
    最近更新 更多