NAV Clientversionen im Netzwerk, Basis für Hotfix

3. Februar 2014 17:25

Hallo Zusammen,

ich habe ein kleines Script geschrieben, daß ich in mein Logon-Script eingebunden habe.
Sinn : Erstelle eine Übersicht über alle Installationen auf dem Rechner inklusiver der Versions/Buildnummer.
Das Ergebnis wird in einer CSV-Datei in einem Netzwerkordner gespeichert.

getestet in einem Nav 2.00 / Nav 2.60 / Nav 2009 R2 / SQL Umfeld
unter XP / Win7 / W2k8 Enterprise R2

In der CSV-Datei ist dann
Spalte 1 : Computername
Spalte 2 : Installationsort
Spalte 3 : Buildnummer / Versionsnummer
und sieht so aus :

nicht erkannte Versionsnummer deuten auf Navsion 2.00 hin, da es das da noch nicht gab..
Code:
NEHA   C:\Nav200\FIN.EXE   
NEHA   C:\NAV2009\Classic\fin.exe                                           6.0.32146.0
NEHA   C:\NAV2009\Classic\finsql.exe                                           6.0.32146.0
NEHA   C:\NAV2009\RoleTailored Client\Microsoft.Dynamics.Nav.Client.exe   6.0.32012.0
NEHA   C:\Nav260\fin.exe                                                   2.60.7.11573
NEHA   C:\Nav260\finsql.exe                                                   2.60.7.11428
NEHA   C:\Programme\Nav200\FIN.EXE   
NEHA   C:\Programme\Nav260\fin.exe                                           2.60.7.11573
NEHA   C:\Programme\Nav260\finsql.exe                                           2.60.7.11428
NEHA   G:\NavEnt\_3_Clients\Nav200\FIN.EXE   
NEHA   G:\NavEnt\_3_Clients\Nav200-II\FIN.EXE   
NEHA   G:\NavEnt\_3_Clients\Nav200-III\FIN.EXE   
NEHA   G:\NavEnt\_3_Clients\Nav200-IIII\FIN.EXE   
NEHA   G:\NavEnt\_3_Clients\Nav200-V\FIN.EXE   
NEHA   G:\NavEnt\_3_Clients\Nav260\fin.exe                                   2.60.7.11573
NEHA   G:\NavEnt\_3_Clients\Nav260\finsql.exe                                   2.60.7.11428






Code:
' Navsion Version feststellen in Verbindung mit Login-Script
'
'
' Januar 2014
'
' Installationen werden auf allen lokalen Festplatten gesucht
'
'
' Windows Script Host Runtime Library
Set wshshell = CreateObject("WScript.Shell")
set shell = WScript.CreateObject("Shell.Application")

dim SuchBegriff
dim AnzahlSuchbegriffe
dim strComputer
dim objWMIService
dim colItems
dim objItem
dim LokaleFestplatte
dim AnzahlderInstallationen
dim ListederInstallationen(500,3)
dim SystemRoot,ComputerName,AblageVersionierung

AnzahlSuchbegriffe = 3
LokaleFestplatte = 2
AnzahlderInstallationen = 0
redim SuchBegriff(AnzahlSuchbegriffe)

SuchBegriff(1) = "fin.exe"
SuchBegriff(2) = "finsql.exe"
SuchBegriff(3) = "Microsoft.Dynamics.Nav.Client.exe"

SystemRoot = wshshell.ExpandEnvironmentStrings("%SYSTEMROOT%") 
ComputerName = wshshell.ExpandEnvironmentStrings("%COMPUTERNAME%") 


' HIER Anpassung an eigene Umgebung vornehmen !
' Der sich anmeldende User muss Schreibrechte haben !
AblageVersionierung = "T:\Innecken\Hardware\"&ComputerName&".csv"


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives

For Each objDrive in colDrives
    if objDrive.DriveType = LokaleFestplatte then
        erstelleListe(objDrive.DriveLetter&":\")      
    end if
Next
for i = 1 to AnzahlderInstallationen
    ListederInstallationen(i,2) = objFSO.getfileversion(ListederInstallationen(i,1))
next

if AnzahlderInstallationen > 0 then
    Set FileOut = objFSO.OpenTextFile( AblageVersionierung, 2, true)
    for i = 1 to AnzahlderInstallationen
        FileOut.writeLine """" & ComputerName &""";" & _
                          """" & ListederInstallationen(i,1) &""";" & _
                          """" & ListederInstallationen(i,2) &""";"
    next
end if







' ab hier Unterprogramme

sub erstelleListe(pfad)

set VersionsspeicherFolders = objFSO.getfolder(pfad)

set Unterverzeichnisse = VersionsspeicherFolders.SubFolders

on error resume next ' fehlende Berechtigung für Verzeichnisse abfangen
for each Verzeichnis in Unterverzeichnisse
    if verzeichnis.Attributes and 16 then
        erstelleListe Verzeichnis.path
    end if
next
on error goto 0
set Dateiliste = VersionsspeicherFolders.files
for each DateiZuPruefen in Dateiliste
    for i = 1 to AnzahlSuchbegriffe
        if UCase(DateiZuPruefen.name) = UCase(SuchBegriff(i)) then
            if instr(UCase(DateiZuPruefen.path),UCase(SystemRoot)) = 0 then
                AnzahlderInstallationen = AnzahlderInstallationen + 1       
                ListederInstallationen(AnzahlderInstallationen,1) = DateiZuPruefen.path
            end if
        end if
    next
next
end sub


Änderung 4.2.2014
Beim Durchgehen des Verzeichnisbaumes nur "echten" Unterverzeichnissen folgen, das war eine notwendige Änderung wegen der ab Win7 möglichen Symbolischen Verknüpfungen. Da die User noch keine Erfahrung damit hatten, haben sie nicht enden wollende Rekursion gebaut ..
Zuletzt geändert von h-d.neuenfeldt am 4. Februar 2014 10:09, insgesamt 3-mal geändert.

Re: NAV Clientversionen im Netzwerk, Basis für Hotfix

3. Februar 2014 17:29

h-d.neuenfeldt hat geschrieben:Hallo Zusammen...
[/code]


Ok thx, gut zu wissen für die Zukunft!

Vielleicht entfernst du "Hans*******" aus deinem Code?
Sonst findet man leicht noch deine private Nummer ;-)
Ich werde mein Posting entsprechend in 5 Minuten editieren und dich entfernen ;-)

Re: NAV Clientversionen im Netzwerk, Basis für Hotfix

3. Februar 2014 17:49

???
ich habe um 16.49 auf dein Posting von 17.29 reagiert und um 17.49 ist es hier registriert ....

lt. Einstein : Relativität ist relativ ...