113805
Jan 07, 2014
2756
2
0
VB Script - Besitzer auslesen und E-Mail versenden
Hallo Forum
Ich möchte gerne mein Ordner und Dateien in einem Verzeichnis auf die Besitzer durchsuchen. Die Besitzer sollten dann per E-Mail benachrichtigt werden.
Bsp:
Test.txt --> Besitzer: Domainname/Hans
E-Mail mit Text an --> Hans@domainname.com.
Ist das möglich?
Ich möchte gerne mein Ordner und Dateien in einem Verzeichnis auf die Besitzer durchsuchen. Die Besitzer sollten dann per E-Mail benachrichtigt werden.
Bsp:
Test.txt --> Besitzer: Domainname/Hans
E-Mail mit Text an --> Hans@domainname.com.
Ist das möglich?
Please also mark the comments that contributed to the solution of the article
Content-Key: 226009
Url: https://administrator.de/contentid/226009
Printed on: April 24, 2024 at 23:04 o'clock
2 Comments
Latest comment
Hallo smackee,
selbstredend ist das möglich, was soll den der Auslöser für die Benachrichtigung sein ? Nur so eine Mail an die Besitzer zu schicken ist wohl nicht der Sinn der Sache.
Hier ein Gerüst wie es aussehen könnte:
(in Zeile 1 noch den Pfad zum Root-Ordner angeben der ausgelesen werden soll, in Zeile 2 für später dann den Pfad zur BLAT-Exe angeben. Die Aktion zum Versenden der Mails ist noch zum Testen auskommentiert, diese musst du noch entsprechend anpassen (Zeile12). Für einen Test erstellt das Script eine Textdatei mit den Ordner- und Dateinamen und dessen Besitzern (Gruppiert nach Besitzern) und zeigt sie mit Notepad an. Der Root-Ordner wir rekursiv ausgelesen, d.h. alle Unterordner und Dateien werden eingeschlossen, das lässt sich aber in Zeile 7 mit dem letzten Parameter regeln(
Was man noch machen muss ist das Ausfiltern von speziellen Gruppen oder das angeben der gültigen Domains sonst gehen manche Mails ins Nirvana , da es auch Gruppen gibt die z.B. so aussehen:
Grüße Uwe
selbstredend ist das möglich, was soll den der Auslöser für die Benachrichtigung sein ? Nur so eine Mail an die Besitzer zu schicken ist wohl nicht der Sinn der Sache.
Hier ein Gerüst wie es aussehen könnte:
(in Zeile 1 noch den Pfad zum Root-Ordner angeben der ausgelesen werden soll, in Zeile 2 für später dann den Pfad zur BLAT-Exe angeben. Die Aktion zum Versenden der Mails ist noch zum Testen auskommentiert, diese musst du noch entsprechend anpassen (Zeile12). Für einen Test erstellt das Script eine Textdatei mit den Ordner- und Dateinamen und dessen Besitzern (Gruppiert nach Besitzern) und zeigt sie mit Notepad an. Der Root-Ordner wir rekursiv ausgelesen, d.h. alle Unterordner und Dateien werden eingeschlossen, das lässt sich aber in Zeile 7 mit dem letzten Parameter regeln(
FALSE
= Nicht rekursiv).Was man noch machen muss ist das Ausfiltern von speziellen Gruppen oder das angeben der gültigen Domains sonst gehen manche Mails ins Nirvana , da es auch Gruppen gibt die z.B. so aussehen:
VORDEFINIERT\Administrators
.strFilePath = "c:\ordner"
path_blat = "[PFAD ZUR BLAT.EXE]"
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set oDic = CreateObject("scripting.dictionary")
Set objShell = CreateObject("Wscript.Shell")
strAllOwnersList = ""
parseFolders fso.GetFolder(strFilePath),True
keys = oDic.Keys
For i = 0 To oDic.Count -1
strAllOwnersList = strAllOwnersList & "Ordner und Dateien welche '" & keys(i) & " gehören" & vbCrlf & "===========================================" & vbCrLf & oDic.Item(keys(i)) & vbCrLf
'Mail an User versenden (noch auskommentiert muss noch angepasst werden)
'sendNewMailViaBlat "absender@domain.com",keys(i),"Anbei eine Liste von Dateien in Ihrem Besitz",oDic.Item(keys(i)),"SMTP-SERVER","SMTP_USER","SMTP-PASSWORD"
Next
fso.CreateTextFile("owners.txt",True).Write(strAllOwnersList)
objShell.Run "notepad.exe owners.txt"
Function parseFolders(strFldr,boolRecursion)
For each folder in strFldr.Subfolders
strOwner = GetOwner(folder.Path)
If strOwner <> "" Then
arrParts = Split(strOwner,"\",-1,1)
strDomain = arrParts(0) & ".com"
strUsername = arrParts(1)
strEMail = strUsername & "@" & strDomain
If oDic.Exists(strEMail) Then
oDic.Item(strEMail) = oDic.Item(strEMail) & folder.Path & vbCrLf
Else
oDic.Add strEMail, folder.Path
End If
End If
Next
For Each file In strFldr.Files
strOwner = GetOwner(file.Path)
If strOwner <> "" Then
arrParts = Split(strOwner,"\",-1,1)
strDomain = arrParts(0)& ".com"
strUsername = arrParts(1)
strEMail = strUsername & "@" & strDomain
If oDic.Exists(strEMail) Then
oDic.Item(strEMail) = oDic.Item(strEMail) & file.Path & vbCrLf
Else
oDic.Add strEMail, file.Path
End If
End If
Next
If boolRecursion Then
For Each subFolder in strFldr.SubFolders
parseFolders subFolder, True
Next
End If
End Function
Function GetOwner(str_path)
Set objWMIService = GetObject("winmgmts:")
Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & str_path & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
owner = ""
If intRetVal = 0 Then
owner = objSD.Owner.Domain & "\" & objSD.Owner.Name
Else
owner = ""
End If
GetOwner = owner
End Function
Function sendNewMailViaBlat(strFrom,strTo,strSubject,strBody,strSMTPServer,strSMTP_USER,strSMTP_PASS)
Set objShell = CreateObject("WScript.Shell")
objShell.Run """" & path_blat & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -f " & strFrom & " -server " & strSMTPServer & " -u """ & strSMTP_USER & """ -pw """ & strSMTP_PASS & """"
set objShell = Nothing
End Function