-
Gesamte Inhalte
2.091 -
Registriert seit
-
Letzter Besuch
Alle erstellten Inhalte von BOfH_666
-
Weil's mich selber interessiert hat ... Hier mal eine Version, die statt des Outlook-Com-Objekts Send-MailMessage benutzt und deshalb auch ohne installiertes Outlook funktionieren würde. ... z.B. vom Server Ich würde auch eher UNC-Pfade als Laufwerksbuchstaben empfehlen. Also \\Servername\Freigabe anstatt x:\. $maxAttachmentSize = 20MB $directory = 'x:\TIFF zum einlesen Scanntool' $Filter = '*GEKO*.tif' $mailText = Get-Content -Path 'X:\Textvorlagen\skoda-sekretariat.txt' $fileList = [System.Collections.ArrayList](Get-ChildItem -Path $directory -Filter $Filter | Sort-Object -Property Length -Descending ) $attachmentListList = [System.Collections.ArrayList]@() while ($fileList.count -gt 0) { $attachmentList = [System.Collections.ArrayList]@() while (($attachmentList.Length + $fileList[0].Length | Measure-Object -Sum).Sum -lt $maxAttachmentSize -and $fileList.count -gt 0) { [VOID]$attachmentList.add($fileList[0]) [VOID]$fileList.RemoveAt(0) } $index = 1 while ($fileList.count -gt $index ) { if (($attachmentList.Length + $fileList[$index].Length | Measure-Object -Sum).Sum -le $maxAttachmentSize ) { [VOID]$attachmentList.add($fileList[$index]) [VOID]$fileList.RemoveAt($index) } $index ++ } [VOID]$attachmentListList.Add($attachmentList) } foreach ($list in $attachmentListList) { $SendMailMessageParams = @{ From = 'absender@absender.de' To = 'empfaenger@empfaenger.de' Subject = 'Scan Antraege fuer Archiv' Body = $mailText Attachments = $list.FullName SmtpServer = 'smtp.absender.de' } Send-MailMessage @SendMailMessageParams } Bei der maximalen Attachment-Größe musst Du Dich evtl. herantasten weil die Gesamtgröße der Dateien für eine Mail immer ein bissl über der eingestellten Größe liegt (je nach Größe der zuletzt hinzugefügten Datei). Achja ... die "Verschiebe-Aktion" der Dateien in das Archiv-Verzeichnis kannst Du dann hinterher natürlich immernoch machen wenn gewünscht. EDIT: Ich hab die innere While-Schleife nochmal geändert. Die Summe der Dateigrößen in einer einzelnen "$attachmentList" ist jetzt auf jeden Fall kleiner oder gleich der eingestellten Maximalgröße. EDIT 2: Ich hab den Code nochmal ein bissl gepimpt. Jetzt wird die angegebene Maximalgröße optimal ausgenutzt. Das kann - je nach Datei-Anzahl- und Größe - die Anzahl der versendeten Mails reduzieren.
-
AD PS Abfrage auf fehlendes Attribut
BOfH_666 antwortete auf ein Thema von BlacksGood in: Active Directory Forum
Nicht jeder ist in globalen verteilten AD-Strukturen mit 10.000-den von User-Objekten unterwegs oder so. Und wenn der Code nicht alle 30 Sekunden laufen soll, dann ist es meiner Meinung auch mal egal, ob das dann der effizienteste Code der Welt ist oder nicht. Für einen LDAP-Filter müsste ich "nachschlagen" - das fließt mir nicht aus den Fingern. Die Syntax von ober klimper ich einfach runter und das Ergebnis ist am Ende des Tages das gleiche. Der Aufwand wäre für mich also deutlich höher, ohne mir einen spürbaren Mehrwert zu liefern. -
AD PS Abfrage auf fehlendes Attribut
BOfH_666 antwortete auf ein Thema von BlacksGood in: Active Directory Forum
Wäre es. Definitiv. Da man aber dem Parameter -Filter keine komplexen Script-Blöcke, sondern nur einen "Filter-String" mitgeben kann, kenne ich keine funktionierende Syntax, wie man auf ein leeres Attribut filtern kann. Und meine LDAP-Kenntnisse sind leider auch quasi nicht vorhanden. -
AD PS Abfrage auf fehlendes Attribut
BOfH_666 antwortete auf ein Thema von BlacksGood in: Active Directory Forum
Ich würd' eher eine CSV-Datei empfehlen. Die eignet sich besser für strukturierte Daten: Get-ADUser -Filter "enabled -eq '$true'" -Properties Mail -SearchBase 'OU=Verwaltung,OU=Anwender,DC=contoso,DC=com' | Where-Object {$null -eq $_.Mail} | Select-Object -Property *Name*,Mail | Export-Csv -Path 'Pfad zur CSV-Datei.csv' -NoTypeInformation Wenn Du unbedingt eine Text-Datei haben möchtest, pickst Du Dir einfach mit dem Select-Object den Namen raus, den Du exportieren möchtest und nimmst Out-File anstatt Export-CSV. (Ich habe hier das Attribut "Mail" nochmal mit in die Ausgabe eingeschlossen, um eine "visuelle Bestätigung des Fehlens" zu erhalten) -
Hmmm ... ich bin ein bissl verwirrt. Du sammelst tif-Dateien ein, nennst die Variable aber $pdfs!? In Deiner foreach-Schleife benutzt Du eine Variable $tifBaseName, die aber vorher nicht definiert wird. Erst benutzt Du einmal Join-Path, um einen korrekten Pfad zu erstellen und dann wieder bastelst Du mittels String-Verkettung Pfade zusammen. Wenn Du Fehlermeldungen erhältst, poste diese doch bitte komplett (auch als Code formatiert bitte).
-
Wenn Du schon automatisierst, dann richtig. Was ist das Maximum, was Du per Mail versenden darfst / der Empfänger empfangen darf? Wie unprofessionell ... .... na dann los ... wir helfen Dir. Ich vermute mal, dass Du wenigstens die Grundkenntnisse in Powershell bereits erworben hast - jedenfalls lässt das Deine früher hier gestellte Frage vermuten. Viele Sachen sind in Powershell deutlich einfacher als in VBS. Wie würdest Du anfangen?
-
Dateien mit bestimmten Dateiname auslesen, verarbeiten und unter neuen namen speichern
BOfH_666 antwortete auf ein Thema von thomas1972 in: Windows Forum — Scripting
Ich werde das demnächst "eindeutschen". Dann wird die Intention noch deutlicher. -
Dafür gibt es keine Tools, weil es keinen Sinn macht, VBS-Befehle 1 zu 1 in Powershell zu "übersetzen". was heißt das? Powershell ist doch kein Umweg!! ... sind 30 Elemente garantiert immer so "klein", dass es auch möglich ist, sie per Anhang mit einer Mail zu vesenden? Wäre nicht ein Upload auf einen geschützten Ablage-Ort und eine passende Info-Mail der professionellere Weg?
-
Da ich die konkreten Anforderungen nicht kenne - nope. Aber um einen Wert aus einem AD-Attribut in ein anderes zu verschieben/kopieren, genügen Powershell-Anfänger-Kenntnisse. Wenn man das nicht from Scratch selber machen möchte, gibt es im Netz - gefühlt - tausende Beispiele, die man an die eigenen Bedürfnisse anpassen kann.
-
Du kannst Dir gar nicht vorstellen, wie oft in Foren jemand eine konkrete Frage stellt und einen Lösungsweg im Hinterkopf hat, der sich dann aber als absoluter Holzweg oder wenigstens sub-optimal herausstellt. ... und wie oben schon erwähnt - wenn Du die benutzte Telefonnummer in ein anderes Attribut packen könnt, ist das mit Powershell z.B. sehr einfach zu scripten, die existierenden Nummern in dieses Attribut zu übertragen.
-
Das lässt sich aber relativ einfach scripten. OK. Entschuldige bitte. Ich bin bisher davon ausgegangen, dass wir hier von Exchange Online reden. Dann sind meine Einwände natürlich falsch. Aber mit einem Hinweis in Deinem ersten Beitrag, um welche Lösung es sich handelt, wäre das nicht passiert.
-
Aber wenn ich Dich richtig verstandnen habe, willst Du doch etwas ändern!? ... vielleicht nimmst Du Dir nochmal einen Moment und versucht mal über Deinen Tellerrand hinauszudenken. Vielleicht ist es ja besser, einfach etwas anderes zu ändern als Du dachtest!?!?! Wie schon weiter oben geschrieben - das muss nicht heißen, dass das bis in alle Ewigkeit so bleiben muss und auch die beste Lösung ist. ... das ist nur zu implementieren - von Microsofts Seite entstehen da keine Extra-Kosten. Das sehe ich ganz anders. Wenn ein verfügbares Audi-Erstzteil das Problem des VW-Fahrers löst (was im Übrigen gar nicht soo weit hergeholt ist), wird er damit sehr glücklich sein. Und wenn sein Wagen dadurch noch einfacher zu handhaben ist, wird er sich fragen, warum ihm seine Werkstatt das nicht fürher angeboten hat.
-
..... und dann muss das für die Ewigkeit so bleiben? Gelegentlich kann es hilfreich sein, wenn man eingetretene Pfade verlässt. Deine Anwender werden begeistert sein, wenn sie nicht mehr eine Nummer ablesen und eintippen müssen sondern nur noch auf dem Handy einen Button antippen müssen, um sich anzumelden.
-
Die Microsoft-Authenticator App ist meiner Meinung nach sehr empfehlenswert.
-
Dateien mit bestimmten Dateiname auslesen, verarbeiten und unter neuen namen speichern
BOfH_666 antwortete auf ein Thema von thomas1972 in: Windows Forum — Scripting
Thomas, willkommen im MCSEboard. Wenn ich alles richtig verstanden habe, sollte es so funktionieren: $tool = 'C:\Sicherung_Stick\Tools\ghostscript\bin\gswin64c.exe' $inputDir = 'X:\513214\7. Scan Posteingang' $outputDirPDF = 'X:\513214\7. Scan Posteingang\ERLEDIGT' $outputDir = 'X:\513214\TIFF zum einlesen' $pdfs = Get-ChildItem -Path $inputDir -Recurse -Filter 'x*.pdf' foreach ($pdf in $pdfs) { $splittedBaseName = $pdf.BaseName -split '_' $tifBaseName = $pdf.LastWriteTime.ToString('yyyyMMdd') + '_' + $splittedBaseName[0].TrimStart('x') + '_prüfung_' + ($splittedBaseName[1..2] -join '_') $tif = Join-Path -Path $outputDir -ChildPath ($tifBaseName + '.tif') $pdf_to_move = $inputDir + $pdf.BaseName + ".pdf" if (Test-Path -Path $tif) { "tif file already exists $tif" } else { "Processing $($pdf.Name)" $param = "-sOutputFile=$tif" & $tool -q -sPageList=1 -dNOPAUSE -sDEVICE=tiffg4 $param -r600 $pdf.FullName -c quit } Move-Item $pdf_to_move $outputDirPDF } -
Sorry ... das war auch eigentlich nur ironisch gemeint.
-
Lokale Gruppen auf anderen Server migrieren
BOfH_666 antwortete auf ein Thema von remus25 in: Windows Server Forum
..... und ich hatte schon einen Moment überlegt ... ... der neue Server bringt ja seine lokalen Gruppen auch schon mit ... jedenfalls die, die eben alle Server mitbringen. -
Lokale Gruppen auf anderen Server migrieren
BOfH_666 antwortete auf ein Thema von remus25 in: Windows Server Forum
Warum würde man das tun wollen? -
Oh, super. Gibt's hier jetzt ein Freitags-Rant? ... da fällt mir auch noch das ein oder andere ein ... aber nicht unbedingt nur zu Windows 10 ....
-
Vor allem fehlt eine Rückmeldung.
-
Robocopy: Dateien in einem Ordner mit aktuellem Datum wegkopieren
BOfH_666 antwortete auf ein Thema von Maniac69 in: Windows Forum — Allgemein
Da hätte ich ne ganz verrückte Idee .... ... einfach ein Konto benutzen, welches auf allen benötigten Ressourcen die benötigten Berechtigungen hat. Dann kann man sich auch das Gefrickel mit Laufwerksbuchstaben sparen und die nimmt einfach die UNC-Pfade. -
Robocopy: Dateien in einem Ordner mit aktuellem Datum wegkopieren
BOfH_666 antwortete auf ein Thema von Maniac69 in: Windows Forum — Allgemein
Erlaubt robocopy überhaupt Wildcards in der Quelle? ... es sollte doch eher so aussehen, oder? robocopy "D:\blabla\" "E:\Zielordner" "Ordner_%DATE:~6,4%_%DATE:~3,2%_%DATE:~0,2%*" /S /R:2 /W:0 /LOG:E:\Zielordner\Sicherung.log /TEE /NDL -
Was genau heißt "kann variieren"? Das Pattern "G[0-9]{1}T[A-Z0-9]{2}" matched eben auch "G9T3F". Du sagst G1T3F kann variieren und auch 3100 ... warum soll also der Dateiname "TEST.BARN.G9T3F.02981185.B200225.T014508.X02.CSV" dann nicht auch passen? Übrigens: wenn Du nur nach einem Zeichen suchst, kannst Du den Quantifier "{1}" weglassen. EDIT: Wenn ich es richtig verstanden habe, könntest Du die beiden Pattern quasi verbinden ... so hier: $collection = @( 'TEST.BARN.G1T3F.02983100.B200225.T014508.X02.CSV', 'TEST.BARN.G1B53.02983104.D200225.T014508.C02.0400.CSV', 'TEST.BARN.G9T3F.02981185.B200225.T014508.X02.CSV' ) foreach ($item in $collection) { if ($item -match 'G[0-9]T[A-Z0-9]{2}.{5}31[0-9]{2}') { "$Item - cool" } else { "$item - uncool" } }
-
Bestimmte CSV User in andere Gruppe verschieben
BOfH_666 antwortete auf ein Thema von Syrador in: Windows Forum — Scripting
Hallo Syrador und willkommen im MCSEboard. Ich gehe jetzt einfach mal davon aus, dass Deine CSV eine valide CSV-Datei ist und eine Spalte mit dem Header sAMAccountName enthält. Dann sollte eigentlich Folgendes genügen: $Users = Import-csv -Delimiter ';' -Path 'C:\temp\mappe3.csv' $GroupMemberList = Get-ADGroupMember -Identity 'Test_Gruppe_DM_alt' $Vergleich = Compare-Object -ReferenceObject $Users.sAMAccountName -DifferenceObject $GroupMemberList.SamAccountName -IncludeEqual -ExcludeDifferent Add-ADGroupMember -Identity 'Test_Gruppe_DM_neu' -Members $Vergleich.InputObject Remove-ADGroupMember -Identity 'Test_Gruppe_DM_alt' -Members $Vergleich.InputObject $Vergleich | Export-Csv -Path 'c:\temp\Ergebnis.csv' -Delimiter ';' -NoTypeInformation -Encoding UTF8 -
Umziehen von Freigabe, Dateien und Verzeichnissen mit robocopy
BOfH_666 antwortete auf ein Thema von Neopolis in: Windows Server Forum
... nicht alle auf einmal betrachten ... einfach eine Option nach der anderen ansehen ... ??? Wow!! .... ihr hab also 22 oder 23 zusätzliche Laufwerke im Server? ... Doppel Wow. Warum macht man denn sowas? Die Freigaben kann robocopy nicht transportieren. Dafür könnte man im Zweifel die entsprechenden Reg-Keys übertragen. Ich würde aber empfehlen, die Struktur bei diese Gelegenheit gleich ein wenig zu verschlanken. Im einfachsten Fall robocopy Quelle Ziel /MIR. Das spiegelt die angegebenen Verzeichnisse. Einfach mit einem Test-Verzeichniss ein bissl rumprobieren - das ist ja kein Hexenwerk.