Hi,
Ich wollte mir die Benutzerangaben in einem 2D Array ausgeben lassen.
An sich funktioniert das Script schon.
Nur möchte ich es optimieren ^^.
Im Moment mache ich zwei WMI aufrufe.
Einmal um die Anzahl der Benutzer und somit die Größe des Arrays festzustellen
Dann noch einmal um die Werte ins Array zu schreiben.
Ich wollte mir den einen Aufruf für die Größe des Arrays sparen. Nur leite funktioniert ein Select count anscheinend nicht und .Count ist auch nicht drin.
Nun wollte ich mal nachfragen, ob jemand da nen Rat für mich hat ;).
Script
Dim Const $wbemFlagReturnImmediately = 0x10
Dim Const $wbemFlagForwardOnly = 0x20
#Include <Array.au3>
$return = _WinWMI_UserAccount_Name()
_ArrayDisplay($return)
Func _WinWMI_UserAccount_Name($Computer = "127.0.0.1")
$WMIConnect = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $Computer & "\root\CIMV2")
If @error Then SetError(1, 0, -1)
$ObjList = $WMIConnect.ExecQuery("SELECT * from Win32_UserAccount", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($ObjList) = 0 Then SetError(1, 0, -2)
$i = 0
For $ObjItem In $ObjList
$i += 1
Local $aReturn[$i][16]
Next
$ObjList = $WMIConnect.ExecQuery("SELECT * from Win32_UserAccount", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($ObjList) = 0 Then SetError(1, 0, -3)
$i = 0
For $ObjItem In $ObjList
With $ObjItem
$aReturn[$i][0] = .AccountType
$aReturn[$i][1] = .Caption
$aReturn[$i][2] = .Description
$aReturn[$i][3] = .Disabled
$aReturn[$i][4] = .Domain
$aReturn[$i][5] = .FullName
$aReturn[$i][6] = .InstallDate
$aReturn[$i][7] = .LocalAccount
$aReturn[$i][8] = .Lockout
$aReturn[$i][9] = .Name
$aReturn[$i][10] = .PasswordChangeable
$aReturn[$i][11] = .PasswordExpires
$aReturn[$i][12] = .PasswordRequired
$aReturn[$i][13] = .SID
$aReturn[$i][14] = .SIDType
$aReturn[$i][15] = .Status
EndWith
$i += 1
Next
Return $aReturn
EndFunc
Danke
Daniel