【发布时间】:2014-05-17 12:14:18
【问题描述】:
首先,感谢您抽出宝贵时间阅读本文,提前感谢您的帮助。
这是我的代码:
<#
SCCM Request Alert Script
#>
Import-Module ActiveDirectory
$WMIObjects = Get-WmiObject -Namespace 'ROOT\SMS\Site_EUR' -Class SMS_UserApplicationRequest -ComputerName "EUR-SCCM"
$FileStore = "c:\export\SCCMRequestfile.txt"
foreach ($Obj in $WMIObjects)
{
[String]$RequestValue = $Obj.CurrentState
$Application = $Obj.Application
$User = $Obj.User -replace 'MYDOMAIN\\',""
$ADUser = Get-ADUser -Identity $User
$PendingRequest = @()
$CancelledRequest = @()
$DeniedRequest = @()
$ApprovedRequest = @()
$Unknown = @()
$Args = @{ 'User' = $ADUser.Name; 'Application' = $Obj.Application }
$PR = New-Object -TypeName PSObject -Property $Args
$CR = New-Object -TypeName PSObject -Property $Args
$DR = New-Object -TypeName PSObject -Property $Args
$AR = New-Object -TypeName PSObject -Property $Args
$UR = New-Object -TypeName PSObject -Property $Args
switch ($RequestValue) {
1 { $PendingRequest += $PR }
2 { $CancelledRequest += $CR }
3 { $DeniedRequest += $DR }
4 { $ApprovedRequest += $AR }
default { $Unknown += $UK }
}
}
Write-Host -ForegroundColor 'yellow' "Pending Requests "
$PendingRequest
Write-Host -ForegroundColor 'DarkYellow' "Cancelled Requests "
$CancelledRequest
Write-Host -ForegroundColor 'DarkRed' "Denied Requests "
$DeniedRequest
Write-Host -ForegroundColor 'Green' "Approved Requests "
$ApprovedRequest
Write-Host -ForegroundColor 'White' "Unknown Approval Type "
$Unknown
此时它只返回 foreach 循环中的最后一个对象。
我已经手动测试了一个 foreach 循环;
foreach ($Obj in $Objects) {
$array = @()
$array += $Obj
}
$Array
这会将每个对象放入数组中。
所以我想知道这是 switch 语句的问题还是我没有做过的事情,比如将它转换为数组?
任何帮助将不胜感激,谢谢。
奈杰尔·塔奇纳
【问题讨论】:
标签: arrays powershell foreach switch-statement