Da die Freigabe ohne Schreibrechte verbunden wird, kannst du nicht dahin zurückschreiben.
Um Daten von Clients zu sammeln empfehle ich die Nutzung einer MySQL-Datenbank, das macht auch die Verabeitung der Daten gleich viel einfacher.
Hab so z.b. ein Paket, welches mir u.a. die IP-Konfiguration ausliest, und da wir eh Mysql als Backend nutzen, diese auch gleich in eine entsprechende Tabelle einbastelt. Insbesondere, ob per DHCP oder statisch vergeben.
Du benötigst das Kommandozeilentool mysql.exe, bin mir nicht mehr sicher in welchem Mysql-Paket die enthalten ist...
Code: Alles auswählen
Encoding=utf8
[Actions]
; Append neccessery sections
Include_Append "common.opsiinc"
; Insert script header
Include_Insert "initialize.opsiinc"
; Set extra variables
; ----------------------------------------------------------------------------------------------------------------------
DefVar $NicConfig$
DefVar $DisableIPv6$
DefVar $PingCount$
DefVar $Domain$
DefVar $Host$
DefVar $Active$
DefVar $Index$
DefVar $Name$
DefVar $Service$
DefVar $IPEnabled$
DefVar $DHCPEnabled$
DefVar $Subnets$
DefVar $DNSServers$
DefVar $DNSDomains$
DefVar $WINSServers$
DefVar $IP$
DefVar $MAC$
DefVar $DHCP$
DefVar $IP_Ist$
DefVar $SN_Ist$
DefVar $GW_Ist$
DefVar $DNS_Ist$
DefVar $WINS_Ist$
DefStringList $NW$
DefStringList $GW$
DefStringList $DNS$
DefStringList $WINS$
DefVar $Query$
DefVar $Username$
DefVar $Password$
DefVar $Server$
DefVar $Port$
DefVar $Database$
DefVar $Table$
Set $Username$ = ""
Set $Password$ = ""
Set $Server$ = ""
Set $Port$ = ""
Set $Database$ = ""
Set $Table$ = "analyze_netconfig"
Set $IP$ = GetMyIPByTarget("%OpsiServer%")
Set $Domain$ = ComposeString(GetSubList(1 : ,SplitString("%HostID%",".")),".")
Set $Host$ = TakeString(0,SplitString("%HostID%","."))
; ----------------------------------------------------------------------------------------------------------------------
; Analyze
; ----------------------------------------------------------------------------------------------------------------------
Message "Analysiere - Netzwerkkonfiguration"
Comment "Remove database entries for client %HostID%"
Set $Query$ = "DELETE FROM `"+$Table$+"` WHERE `Domain`='"+$Domain$+"' AND `Host`='"+$Host$+"'"
DosInAnIcon_mysql_command
Set $ExitCode$ = GetLastExitCode
For %NicConfig% in GetOutStreamFromSection('ExecWith_vbs_get_network CScript //nologo //e:vbs') do Sub_sql_command
; ----------------------------------------------------------------------------------------------------------------------
; Insert script footer
Include_Insert "finalize.opsiinc"
[ExecWith_vbs_get_mac]
On Error Resume Next
Set objWMIService = GetObject("WinMgMts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT IPAddress,MACAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=true",,48)
For Each objItem in colItems
For Each objIP in objItem.IPAddress
If objIP = "$IP$" Then
Wscript.Echo objItem.MACAddress
End If
Next
Next
[ExecWith_vbs_get_dhcp]
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT DHCPEnabled FROM Win32_NetworkAdapterConfiguration WHERE macaddress = '$MAC$'",,48)
For Each objItem in colItems
Wscript.Echo objItem.DHCPEnabled & ""
Next
[ExecWith_vbs_get_nicname]
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT Name FROM Win32_NetworkAdapterConfiguration WHERE macaddress = '$MAC$'",,48)
For Each objItem in colItems
Wscript.Echo objItem.Name & ""
Next
[ExecWith_vbs_get_network]
On Error Resume Next
Set objWMIService = GetObject("WinMgMts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT Index,MACAddress,Description,ServiceName,IPEnabled,DHCPEnabled,IPAddress,IPSubnet,DefaultIPGateway,DNSServerSearchOrder,WINSPrimaryServer,WINSSecondaryServer,DNSDomainSuffixSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE NOT MACAddress = NULL",,48)
For Each objItem in colItems
strItem = objItem.Index&"|"&objItem.MACAddress&"|"&objItem.Description&"|"&objItem.ServiceName&"|"&objItem.IPEnabled&"|"&objItem.DHCPEnabled&"|"
strIP = ""
For i = 0 to objItem.IPAddress.Count()
strIP = strIP & objItem.IPAddress(i)&","&objItem.IPSubnet(i)&","&objItem.DefaultIPGateway(i)&";"
Next
If (Right(strIP,1)=";") Then
strIP = Left(strIP,Len(strIP)-1)
End If
strItem = strItem & strIP & "|"
strDNSServer = ""
For each objDNSServer in objItem.DNSServerSearchOrder
strDNSServer = strDNSServer & objDNSServer & ";"
Next
If (Right(strDNSServer,1)=";") Then
strDNSServer = Left(strDNSServer,Len(strDNSServer)-1)
End If
strItem = strItem & strDNSServer & "|"
strDNSDomain = ""
For each objDNSDomain in objItem.DNSDomainSuffixSearchOrder
strDNSDomain = strDNSDomain & objDNSDomain & ";"
Next
If (Right(strDNSDomain,1)=";") Then
strDNSDomain = Left(strDNSDomain,Len(strDNSDomain)-1)
End If
strItem = strItem & strDNSDomain & "|"
strWINSServer = objItem.WINSPrimaryServer(i)&";"&objItem.WINSSecondaryServer(i)
If (Right(strWINSServer,1)=";") Then
strWINSServer = Left(strWINSServer,Len(strWINSServer)-1)
End If
strItem = strItem & strWINSServer
WScript.echo strItem
Next
[ExecWith_vbs_get_ipaddress]
On Error Resume Next
Set objWMIService = GetObject("WinMgMts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT IPAddress,IPSubnet FROM Win32_NetworkAdapterConfiguration WHERE macaddress = '$MAC$'",,48)
For Each objItem in colItems
For i = 0 to objItem.IPAddress.Count()
Wscript.Echo objItem.IPAddress(i)&";"&objItem.IPSubnet(i)
Next
Next
[ExecWith_vbs_get_gateway]
On Error Resume Next
Set objWMIService = GetObject("WinMgMts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT DefaultIPGateway FROM Win32_NetworkAdapterConfiguration WHERE macaddress = '$MAC$'",,48)
For Each objItem in colItems
For Each objGateway in objItem.DefaultIPGateway
Wscript.Echo objGateway
Next
Next
[ExecWith_vbs_get_dns]
On Error Resume Next
Set objWMIService = GetObject("WinMgMts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE macaddress = '$MAC$'",,48)
For Each objItem in colItems
For Each objDNSServer in objItem.DNSServerSearchOrder
Wscript.Echo objDNSServer
Next
Next
[ExecWith_vbs_get_wins]
On Error Resume Next
Set objWMIService = GetObject("WinMgMts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT WINSPrimaryServer,WINSSecondaryServer FROM Win32_NetworkAdapterConfiguration WHERE macaddress = '$MAC$'",,48)
For Each objItem in colItems
Wscript.Echo objItem.WINSPrimaryServer
Wscript.Echo objItem.WINSSecondaryServer
Next
[DosInAnIcon_mysql_command]
@Echo off
Prompt $B$H
CHCP 65001
$ToolsDir$\mysql_$System_Architecture$ --batch --no-beep --host=$Server$ --port=$Port$ --database=$Database$ --user=$Username$ --password=$Password$ -e "$Query$"
[Sub_check_active]
If (TakeString(0,SplitString("%Subnet%",","))=$IP$)
Set $Active$ = "1"
EndIf
[Sub_sql_command]
Set $Active$ = "0"
Set $NicConfig$ = "%NicConfig%"
Set $Index$ = TakeString(0,SplitString($NicConfig$,"|"))
Set $MAC$ = TakeString(1,SplitString($NicConfig$,"|"))
Set $MAC$ = StringReplace($MAC$,":","")
Set $MAC$ = StringReplace($MAC$,"A","a")
Set $MAC$ = StringReplace($MAC$,"B","b")
Set $MAC$ = StringReplace($MAC$,"C","c")
Set $MAC$ = StringReplace($MAC$,"D","d")
Set $MAC$ = StringReplace($MAC$,"E","e")
Set $MAC$ = StringReplace($MAC$,"F","f")
Set $Name$ = TakeString(2,SplitString($NicConfig$,"|"))
Set $Service$ = TakeString(3,SplitString($NicConfig$,"|"))
Set $IPEnabled$ = TakeString(4,SplitString($NicConfig$,"|"))
Set $IPEnabled$ = StringReplace($IPEnabled$,"Wahr","1")
Set $IPEnabled$ = StringReplace($IPEnabled$,"Falsch","0")
Set $DHCPEnabled$ = TakeString(5,SplitString($NicConfig$,"|"))
Set $DHCPEnabled$ = StringReplace($DHCPEnabled$,"Wahr","1")
Set $DHCPEnabled$ = StringReplace($DHCPEnabled$,"Falsch","0")
Set $Subnets$ = TakeString(6,SplitString($NicConfig$,"|"))
Set $DNSServers$ = TakeString(7,SplitString($NicConfig$,"|"))
Set $DNSDomains$ = TakeString(8,SplitString($NicConfig$,"|"))
Set $WINSServers$ = TakeString(9,SplitString($NicConfig$,"|"))
For %Subnet% in SplitString($Subnets$,";") do Sub_check_active
Comment "Add database entry for client %HostID%, nic "+$MAC$
Set $Query$ = "INSERT INTO `"+$Table$+"` (`Domain`, `Host`, `Index`, `MAC`, `Name`, `Service`, `Active`, `IPEnabled`, `DHCPEnabled`, `Subnets`, `DNSServers`, `DNSDomains`, `WINSServers`) values ('"+$Domain$+"','"+$Host$+"','"+$Index$+"','"+$MAC$+"','"+$Name$+"','"+$Service$+"',"+$Active$+","+$IPEnabled$+","+$DHCPEnabled$+",'"+$Subnets$+"','"+$DNSServers$+"','"+$DNSDomains$+"','"+$WINSServers$+"')"
DosInAnIcon_mysql_command
Set $ExitCode$ = GetLastExitCode