K.inc Tec Blog

Mein kleines EDV Logbuch

Tag: powershell

PowerShell Mail senden

Authentifiziertes Senden

$MailFrom = "absender@domain.de"
$MailTo = "empfaenger@domain.de"
$Username = "Benutzername@domain.de"
$Password = "Password"
$SmtpServer = "mail.domain.de"
$SmtpPort = "25"
$MessageSubject = "Mail Betreff"
$Message = New-Object System.Net.Mail.MailMessage $MailFrom,$MailTo
$Message.IsBodyHTML = $true
$Message.Subject = $MessageSubject
$Message.Body = @'
<!DOCTYPE html>
<html>
<head>
</head>
<body>
Testnachricht
</body>
</html>
'@
$Smtp = New-Object Net.Mail.SmtpClient($SmtpServer,$SmtpPort)
$Smtp.EnableSsl = $true
$Smtp.Credentials = New-Object System.Net.NetworkCredential($Username,$Password)
$Smtp.Send($Message)

Attachments können wie folgt hinzugefügt und entfernt werden:

$Message.Attachments.Add("C:\test.txt")
$Message.Attachments.Add("C:\test.txt")

# Über Index entfernen
$Message.Attachments.RemoveAt("0")
$Message.Attachments.RemoveAt("1")

Header können mit folgendem Befehl hinzugefügt werden:

$Message.Headers.Add("X-Test-Header","Daten")

Anonymes Senden

Mit folgender einfachen Funktion kann man über Powershell emails anonym, also ohne Benutzeraccount, an einen Mailserver senden. Bitte vorher die Empfänger, das From und den Mailserver anpassen.

function Send-Mail($subject, $body="", $attachments="", $highpriority=$false)
{
$msgTo = @("rcp1@domain.de", "rcp2@domain.de")
$msgFrom = "$($env:computername)@domain.de"

$mailServer = ""

$utf8 = New-Object System.Text.utf8encoding

$anonUsername = "anonymous"
$anonPassword = ConvertTo-SecureString -String "anonymous" -AsPlainText -Force
$anonCredentials = New-Object System.Management.Automation.PSCredential($anonUsername,$anonPassword)

if ($highpriority -and $attachments.length -gt 0) {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 -priority High -Attachments $attachments
}
elseif ($attachments.length -gt 0) {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 -Attachments $attachments
}
elseif ($highpriority) {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 -priority High
}
else {
    send-mailmessage -to $msgTo -from $msgFrom -subject $subject -body $body -smtpServer $mailServer -credential $anonCredentials -encoding $utf8 
}
}

Anmerkungen:

Das Script baut eine anonyme Verbindung mit dem Mailserver auf. Der Mailserver benötigt hierzu also einen EmpfangsConnector (MS Exchange), der anonyme Verbindungen von dem Host erlaubt, auf dem das Script ausgeführt wird.

Powershell S-FTP Upload

Man kann mit der WinSCP Assembly über PowerShell ganz einfach SFTP-Uploads durchführen. WinSCP hat dazu eine gute Doku, die auch zeigt, wie man die Assembly als COM Objekt nutzt und wie man Ressourcen zu einem .NET Projekt hinzufügt und in eine temporäre Datei entpackt:

https://winscp.net/eng/docs/library_install#downloading

Weiterlesen

Powershell Remoting via Group Policy aktivieren

Sicherheitskopie von folgendem Artikel:

https://www.briantist.com/how-to/powershell-remoting-group-policy/

Powershell really is a game changer when it comes management and scripting on Windows, but one of the areas where it really shines is in its remoting capability. Powershell remoting lets you connect to a remote system and run commands locally, then returns the results to the calling machine. This can be done as an automated block or as an interactive session.

Weiterlesen

Registry mit PowerShell bearbeiten

Der Artikel ist angelehnt an folgenden Artikel vom Microsoft Scripting Guy.

https://blogs.technet.microsoft.com/heyscriptingguy/2012/05/07/use-the-powershell-registry-provider-to-simplify-registry-access/

Weiterlesen

Exchange 2010 Autodiscover einrichten und testen

Folgende Einträge müssen richtig gesetzt sein, damit Exchange ordentlich funktioniert. Bei Problemen mit einzelnen Diensten, wie z.B. OWA oder Autodiscover, sollten diese Werte geprüft werden.

Weiterlesen

PowerShell Codesignatur

Um Powershell Code auf restriktiv konfigurierten Systemen (Set-ExecutionPolicy AllSigned) zum laufen zu bringen ist ein Codesignaturzertifikat notwendig. Ich zeige euch hier wie es geht.

Weiterlesen

© 2016 kinc.de