Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VB Script - Besitzer auslesen und E-Mail versenden

Frage Entwicklung VB for Applications

Mitglied: smackee

smackee (Level 1) - Jetzt verbinden

07.01.2014 um 13:18 Uhr, 1410 Aufrufe, 2 Kommentare, 1 Danke

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?
Mitglied: colinardo
07.01.2014, aktualisiert um 21:05 Uhr
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(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.
01.
strFilePath = "c:\ordner" 
02.
path_blat = "[PFAD ZUR BLAT.EXE]" 
03.
Set fso = WScript.CreateObject("Scripting.Filesystemobject") 
04.
Set oDic = CreateObject("scripting.dictionary") 
05.
Set objShell = CreateObject("Wscript.Shell") 
06.
strAllOwnersList = "" 
07.
parseFolders fso.GetFolder(strFilePath),True 
08.
keys = oDic.Keys 
09.
For i = 0 To oDic.Count -1 
10.
	strAllOwnersList = strAllOwnersList &  "Ordner und Dateien welche '" & keys(i) &  " gehören" & vbCrlf & "===========================================" & vbCrLf & oDic.Item(keys(i)) & vbCrLf 
11.
	'Mail an User versenden (noch auskommentiert muss noch angepasst werden) 
12.
	'sendNewMailViaBlat "absender@domain.com",keys(i),"Anbei eine Liste von Dateien in Ihrem Besitz",oDic.Item(keys(i)),"SMTP-SERVER","SMTP_USER","SMTP-PASSWORD" 
13.
Next 
14.
fso.CreateTextFile("owners.txt",True).Write(strAllOwnersList) 
15.
objShell.Run "notepad.exe owners.txt" 
16.
 
17.
Function parseFolders(strFldr,boolRecursion) 
18.
	For each folder in strFldr.Subfolders 
19.
		strOwner = GetOwner(folder.Path) 
20.
		If strOwner <> "" Then 
21.
			arrParts = Split(strOwner,"\",-1,1) 
22.
			strDomain = arrParts(0) & ".com" 
23.
			strUsername = arrParts(1)  
24.
			strEMail = strUsername & "@" & strDomain 
25.
			If oDic.Exists(strEMail) Then 
26.
				oDic.Item(strEMail) = oDic.Item(strEMail) & folder.Path & vbCrLf 
27.
			Else 
28.
				oDic.Add strEMail, folder.Path 
29.
			End If			 
30.
		End If 
31.
		 
32.
	Next 
33.
	For Each file In strFldr.Files 
34.
		strOwner = GetOwner(file.Path) 
35.
		If strOwner <> "" Then 
36.
			arrParts = Split(strOwner,"\",-1,1) 
37.
			strDomain = arrParts(0)& ".com" 
38.
			strUsername = arrParts(1)  
39.
			strEMail = strUsername & "@" & strDomain 
40.
			If oDic.Exists(strEMail) Then 
41.
				oDic.Item(strEMail) = oDic.Item(strEMail) & file.Path & vbCrLf 
42.
			Else 
43.
				oDic.Add strEMail, file.Path 
44.
			End If 
45.
		End If 
46.
	Next 
47.
	If boolRecursion Then 
48.
		For Each subFolder in strFldr.SubFolders 
49.
			parseFolders subFolder, True 
50.
		Next 
51.
	End If 
52.
End Function 
53.
 
54.
 
55.
Function GetOwner(str_path) 
56.
	Set objWMIService = GetObject("winmgmts:") 
57.
	Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & str_path & "'") 
58.
	intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD) 
59.
	owner = "" 
60.
	If intRetVal = 0 Then 
61.
		owner = objSD.Owner.Domain & "\" & objSD.Owner.Name 
62.
	Else 
63.
	   owner = "" 
64.
	End If 
65.
	GetOwner = owner 
66.
End Function 
67.
 
68.
 
69.
Function sendNewMailViaBlat(strFrom,strTo,strSubject,strBody,strSMTPServer,strSMTP_USER,strSMTP_PASS) 
70.
    Set objShell = CreateObject("WScript.Shell") 
71.
    objShell.Run """" & path_blat & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -f " & strFrom & " -server " & strSMTPServer & " -u """ & strSMTP_USER & """ -pw """ & strSMTP_PASS & """" 
72.
    set objShell = Nothing 
73.
End Function
Grüße Uwe
Bitte warten ..
Mitglied: smackee
08.01.2014 um 23:09 Uhr
Hallo colinardo,

Vielen Dank für diesen Super Code. Ich werde ihn gleich austesten und dir bescheid sagen.
Der Sinn ist die User zu Benachrichtigen, dass sie Dateien auf einem Netzlaufwerk haben die älter sind als 25 Tage.
Da ich die Dateien schon aussortiert habe und in ein order "archiv" verschiebe, lese ich nun mit dem Script den Ordner "archiv" aus und kann somit mithilfe des Besitzers eine Benachrichtigung per E-Mail versenden. So informiere ich den User, dass die Datei(en) welche er besitzt, innerhalb von 2 Wochen endgültig gelöscht werden.

Gruss
smackee
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Windows 10
Skript zum Auslesen und Automatischen Versenden von E-Mails (3)

Frage von weber4134 zum Thema Windows 10 ...

Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...