将属性添加到数组#1并使用数组#2中的变量填充

时间:2015-09-16 19:27:00

标签: arrays powershell

您好我在填充我创建的数组的属性时遇到了问题。

我首先在特定的计算机列表中为登录用户运行查询。我获取输出并拉出一些属性(UserName,ComputerName,Logontime)并将其泵入数组。

使用此登录用户列表,我将使用logontime并使用new-timespan计算持续时间

不幸的是,这仅填充上次计算的持续时间,而不是将每个值放入我创建的新持续时间属性中。

我已经阅读了很多其他文章并尝试了很多配置,但似乎没有任何工作。我确信我错过了一些简单的事情。

这是我正在运行的

Clear-History
Clear-Host

$endDate = (Get-Date -Format g)
$computers = Get-Content "\\<Server>\D$\<Folder1>\<Folder2>\ComputerList.txt"
$dat = $null
$loggedonuserArray = @()
$dat = @()

$loggedonuserArray = .\get-loggedonuser.ps1 -ComputerName $computers |
    Where-Object -Property "SessionName" -EQ "console" |
    Select-Object -Property UserName,ComputerName,LogonTime

$loggedonuserArray2 = $loggedonuserArray.Clone()

foreach ($logtime in $loggedonuserArray2.LogonTime) {
    $dat += (New-TimeSpan -Start $logtime -End $endDate).TotalHours 

    foreach ($d in $dat) {
        $loggedonuserArray2 | Add-Member -MemberType NoteProperty -Name Duration -Value $d -Force
    }
}
$loggedonUserArray2 | ft -a

以下是我得到的输出示例:

UserName ComputerName   LogonTime           Duration
-------- ------------   ---------           --------
User1    Computer1      09/16/2015 11:17 AM      0.9
User2    Computer2      09/16/2015 12:08 PM      0.9
User3    Computer3      09/16/2015 6:35 AM       0.9
User4    Computer4      09/16/2015 12:10 PM      0.9
User5    Computer5      09/16/2015 11:42 AM      0.9
User6    Computer6      09/16/2015 11:46 AM      0.9
User7    Computer7      09/16/2015 11:52 AM      0.9
User8    Computer8      09/16/2015 6:53 AM       0.9
User9    Computer9      09/16/2015 12:08 PM      0.9
User10   Computer10     09/16/2015 6:04 AM       0.9
User11   Computer11     09/16/2015 6:57 AM       0.9

2 个答案:

答案 0 :(得分:1)

在我看来,你真正想要的是这样的东西:

<div class="wrap">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box tall"></div>
  <div class="box col">
    <div class="mini"></div>
    <div class="mini"></div>
  </div>
</div>

答案 1 :(得分:1)

基本上,每次执行此行时,您都会为数组的每个成员设置相同的Duration属性:

$loggedonuserArray2 | Add-Member -MemberType NoteProperty -Name Duration -Value $d -Force

因此,最终,在foreach ($d in $dat)循环结束时,$loggedonuserArray2数组的所有成员都将拥有Duration中最后一个元素的$dat属性阵列。