Hallo Zusammen,
ich habe ein kleines Script geschrieben und Infos von PC's auszulesen.
Bei mir und bei EINEM anderen Kollegen funktioniert das SCript nach dem kompilieren einwandfrei. Bei einem weiteren Kollegen bricht das Script mit der im Anhang gezeigten Fehlermeldung ab. Rufe ich das Script bei mir über unser Verteilungssystem auf (ein einfacher "Call" -Befehl) habe ich die Fehlermeldung auch. Ich habe das Gefühl das das mit der Array.au3 zusammen hängt?
Hier der Code
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=C:\Temp\Tools\Audit\start_scan.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.1
Author: AyKay
Script Function:
Dieses Script scannt den aktuellen PC und speichert diese Infos in ein Textfile auf dem Server.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
;######################################
;Includes
;######################################
#include <_NTServices.au3>
#include <file.au3>
#include <Array.au3>
;######################################
;Variablen
;######################################
;Definition Pfade
Global $sauditpath
;Definition Infos
Global $sSophosUpdaterVersion, $sSophosVersion, $sFirewallstatus, $iAdminrights, $sAdminrights, $aFile
Global $re = _getDOSOutput('systeminfo')
;Pfade
$sauditpath = "C:\Temp\Auditfiles\" & @ComputerName
;Infos
$sSysteminfo = $sauditpath & "\systeminfo.txt"
$sInisave = $sauditpath & "\all.ini"
DirCreate($sauditpath)
If FileExists($sBackuppath) Then
FileDelete($sBackuppath)
EndIf
;######################################
;Systeminfo auslesen
;######################################
FileOpen($sSysteminfo)
FileWrite($sSysteminfo, $re)
FileClose($sSysteminfo)
_FileReadToArray($sSysteminfo, $aFile)
For $i = 2 To 33
$split = StringSplit($aFile[$i], ': ', 1)
For $j = 1 To UBound($split) -1
Next
$split[2] = StringStripWS($split[2], 1)
IniWrite($sInisave, "Systeminfo", $split[1], $split[2])
Next
FileDelete($sSysteminfo)
;######################################
;Benutzername und Adminrechte auslesen
;######################################
$iAdminrights = IsAdmin()
If $iAdminrights = "1" Then
$sAdminrights = "ja"
Else
$sAdminrights = "nein"
EndIf
$WMI = ObjGet("WinMgmts:root/cimv2")
$colQuery1 = $WMI.ExecQuery("Select UserName FROM Win32_ComputerSystem")
For $item In $colQuery1
$ID = $item.UserName
Next
$colQuery2 = $WMI.ExecQuery("Select * FROM Win32_NetworkLoginProfile")
For $object In $colQuery2
If $object.Name = $ID Then
$Name = $object.Fullname
EndIf
Next
IniWrite($sInisave, "User", "Adminrights", $sAdminrights)
IniWrite($sInisave, "User", "User-ID", @UserName)
IniWrite($sInisave, "User", "Displayname", $Name)
;######################################
;Sophos auslesen
;######################################
$sSophosUpdaterVersion = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\***", "DisplayVersion")
$sSophosVersion = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\***", "DisplayVersion")
;FileOpen($sSophosinfo)
IniWrite($sInisave, "Sophos", "SophosVersion", $sSophosVersion)
IniWrite($sInisave, "Sophos", "SophosUpdaterVersion", $sSophosUpdaterVersion)
;######################################
;Services überprüfen
;######################################
$sFirewallstatus = _ServiceStatus("MpsSvc")
IniWrite($sInisave, "Service", "firewall", $sFirewallstatus)
;######################################
;DOS Programm
;######################################
Func _getDOSOutput($command)
Local $text = '', $Pid = Run('"' & @ComSpec & '" /c ' & $command, '', @SW_HIDE, 2 + 4)
While 1
$text &= StdoutRead($Pid, False, False)
If @error Then ExitLoop
Sleep(10)
WEnd
Return $text
EndFunc ;==>_getDOSOutput
VIelleicht hat ja jemand von euch eine Idee.