Hallo,
ich bin derzeit damit beschäftigt, allen Mitarbeitern einheitliche Signaturen zu erstellen. Wir verwenden MS Outlook 2010 und die Erstellung der Signaturen funktioniert auch. Wir nutzen hierzu das Tool OutlookSignature Vers. 1.9, welches die Signatur mit AD-Attributen befüllt. Das Tool erstellt jedem Mitarbeiter die jeweils 3 notwendigen Dateien (.htm, .rtf. & .txt) im Signaturenordner.
Mein Problem ist nun, dass die Signaturen mehrere Variablen haben, die unter Umständen nicht befüllt werden, die dafür vorgesehen AD-Attribute leer sind / sein sollen (z.B. Fax, etc.).
Diesbezüglich hab ich ein VBS-Script geschrieben, dass alle Zeilen in der Signaturdatei löscht, die noch die Variablen enthalten. Dies funktioniert auch.
Hierzu wird die jeweilige Signatur-Datei eingelesen, jede Zeile, die keine Variable sondern den Wert enthält, in eine entsprechende Datei mit dem Präfix "temp_" geschrieben. Abschließend wird die Datei mit dem Präfix "temp_" kopiert und mit dem Originalnamen versehen sowie die Datei mit dem Präfix gelöscht.
Der nächste Schritt wäre nun, dieses Script auf alle Dateien anzuwenden, die im Ordner %AppData%\Raoming\Micrsoft\Signatures liegen, um so auch zukünfige bzw. alle Signaturen abzudecken und nicht für jede neue Signatur ein eigenes Script zu schreiben.
Und genau hier komme ich aufgrund meiner beschränkten VBS-Kenntnisse nicht weiter.
Über jeden Lösungsansatz oder Schlag mit dem Zaunpfahl auf den Hinterkopf wäre ich euch sehr dankbar.
ich bin derzeit damit beschäftigt, allen Mitarbeitern einheitliche Signaturen zu erstellen. Wir verwenden MS Outlook 2010 und die Erstellung der Signaturen funktioniert auch. Wir nutzen hierzu das Tool OutlookSignature Vers. 1.9, welches die Signatur mit AD-Attributen befüllt. Das Tool erstellt jedem Mitarbeiter die jeweils 3 notwendigen Dateien (.htm, .rtf. & .txt) im Signaturenordner.
Mein Problem ist nun, dass die Signaturen mehrere Variablen haben, die unter Umständen nicht befüllt werden, die dafür vorgesehen AD-Attribute leer sind / sein sollen (z.B. Fax, etc.).
Diesbezüglich hab ich ein VBS-Script geschrieben, dass alle Zeilen in der Signaturdatei löscht, die noch die Variablen enthalten. Dies funktioniert auch.
Hierzu wird die jeweilige Signatur-Datei eingelesen, jede Zeile, die keine Variable sondern den Wert enthält, in eine entsprechende Datei mit dem Präfix "temp_" geschrieben. Abschließend wird die Datei mit dem Präfix "temp_" kopiert und mit dem Originalnamen versehen sowie die Datei mit dem Präfix gelöscht.
Visual Basic-Quellcode
- OPTION EXPLICIT
- Dim Username
- Dim objUsername
- Dim objFS
- Dim objFS1
- Dim objTextFile
- Dim objTextFile2
- Dim strFile
- Dim strLine
- Set objFS = CreateObject("Scripting.FileSystemObject")
- Set objUsername = WScript.CreateObject("WScript.Shell")
- Username = objUsername.ExpandEnvironmentStrings("%Username%")
- Set objTextFile = objFS.OpenTextFile("c:\users\" & UserName & "\APPDATA\Roaming\Microsoft\Signatures\bbw_extern.htm")
- Set objFS1 = objFS.CreateTextFile("c:\users\" & UserName & "\APPDATA\Roaming\Microsoft\Signatures\temp_bbw_extern.htm",true)
- objFS1.close
- set objTextFile2 = objFS.OpenTextFile("c:\users\" & UserName & "\APPDATA\Roaming\Microsoft\Signatures\temp_bbw_extern.htm",8)
- strFile = ("c:\users\" & UserName & "\APPDATA\Roaming\Microsoft\Signatures\bbw_extern.htm")
- Do Until objTextFile.AtEndOfStream
- strLine = objTextFile.ReadLine
- If Not(InStr(strLine,"@USERDEF3@")= 0 xor InStr(strLine,"@STREET@")= 0 xor InStr(strLine,"@POSTCODE@")= 0 xor InStr(strLine,"@CITY@")= 0 xor InStr(strLine,"@PHONE@")= 0 xor InStr(strLine,"@FAX@")=0) Then
- objTextFile2.writeline strLine
- End If
- Loop
- set objTextFile = nothing
- set objTextFile2 = nothing
- objFS.copyFile "c:\users\" & UserName & "\APPDATA\Roaming\Microsoft\Signatures\temp_bbw_extern.htm", "c:\users\" & UserName & "\APPDATA\Roaming\Microsoft\Signatures\bbw_extern.htm", true
- objfs.DeleteFile "c:\users\" & UserName & "\APPDATA\Roaming\Microsoft\Signatures\temp_bbw_extern.htm"
- set objfs = nothing
- set objfs1 = nothing
Der nächste Schritt wäre nun, dieses Script auf alle Dateien anzuwenden, die im Ordner %AppData%\Raoming\Micrsoft\Signatures liegen, um so auch zukünfige bzw. alle Signaturen abzudecken und nicht für jede neue Signatur ein eigenes Script zu schreiben.
Und genau hier komme ich aufgrund meiner beschränkten VBS-Kenntnisse nicht weiter.
Visual Basic-Quellcode
- set fso = CreateObject("Scripting.FileSystemObject")
- Set objFS = CreateObject("Scripting.FileSystemObject")
- Set objAppdata = WScript.CreateObject("WScript.Shell")
- AppData = objAppData.ExpandEnvironmentStrings("%AppData%")
- Signature_Path = Appdata & "\Microsoft\Signatures"
- TempName = "temp_" & FileName
- Set objFS2 = fso.GetFolder(Signature_Path)
- set objFolder = objFS2.Files
- For Each objFile In objFolder
- Set objTextFile = objFS.OpenTextfile(Filename)
- Set objFS1 = objFS.CreateTextFile(Signature_Path & "\" & TempName,true)
- objFS1.close
- setobjTextFile2 = objFS.OpenTextFile(Signature_Path & "\" & TempName,8)
- strFile = (Signature_Path.Files)
- Next
- Do Until objTextFile.AtEndOfStream
- strLine = objTextFile.ReadLine
- If Not(InStr(strLine,"@USERDEF3@")= 0 xor InStr(strLine,"@STREET@")= 0 xor InStr(strLine,"@POSTCODE@")= 0 xor InStr(strLine,"@CITY@")= 0 xor InStr(strLine,"@PHONE@")= 0 xor InStr(strLine,"@FAX@")=0) Then
- objTextFile2.writeline strLine
- End If
- Loop
- set objTextFile = nothing
- set objTextFile2 = nothing
- objFS.copyFile Signature_Path & "\" & TempName, Signature_Path & "\" & FileName, true
- objfs.DeleteFile Signature_Path & "\" & TempName
- set objfs = nothing
- set objfs1 = nothing
Über jeden Lösungsansatz oder Schlag mit dem Zaunpfahl auf den Hinterkopf wäre ich euch sehr dankbar.