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, 1455 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 ..
Ähnliche Inhalte
Windows 10
Skript zum Auslesen und Automatischen Versenden von E-Mails (3)

Frage von weber4134 zum Thema Windows 10 ...

E-Mail
Automatische E-Mails verzögert versenden (12)

Frage von typischAndy zum Thema E-Mail ...

Visual Studio
gelöst Email Versenden Mit VB (2)

Frage von UltraZz zum Thema Visual Studio ...

VB for Applications
gelöst VB-Script per Aufgabenplanung (2)

Frage von S4kar97 zum Thema VB for Applications ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Linksys wrt1200ac v2 mit dd-wrt: keine vlan-einstellungen im GUI (15)

Frage von Pixi123 zum Thema Router & Routing ...

E-Business
Wo tragt ihr eure privaten Termine ein? (13)

Frage von honeybee zum Thema E-Business ...

Windows Server
Terminalserver starten willkürlich neu (12)

Frage von thaefliger zum Thema Windows Server ...

Entwicklung
gelöst Tipp für Anfänger- Wie würdet ihr automatischen Mailversand umsetzen? (12)

Frage von Cloudyme zum Thema Entwicklung ...