Jump to content

Powershell: Abfrage per Mail versenden.


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo liebe Leute,

 

ich habe eine kurze Frage an die Powershell Profis hier. Wir haben dieses Script im Einsatz, um nicht aktive Benutzer zu finden (Logon älter 90 Tage).

Dies wurde bisher immer in eine CSV geschrieben. Nun besteht die Anforderung die Ausgabe als Email zu verschicken. Kann mir jemand da einen Tipp geben?

 

Ich habe versucht nach dem select-object statt des export-csv mit send-mailmessage zu arbeiten. Leider bekomme ich es nicht hin.  Wäre super wenn jemand

eine Lösung weiß.

# Gets time stamps for all User in the domain that have NOT logged in since after specified date 
import-module activedirectory  
$domain = "domain.mydom.com"  
$DaysInactive = 90  
$time = (Get-Date).Adddays(-($DaysInactive)) 
  
# Get all AD User with lastLogonTimestamp less than our time and set to enable 
Get-ADUser -Filter {LastLogonTimeStamp -lt $time -and enabled -eq $true} -Properties LastLogonTimeStamp | 
  
# Output Name and lastLogonTimestamp into CSV  
select-object Name,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp).ToString('yyyy-MM-dd_hh:mm:ss')}} | export-csv OLD_User.csv -notypeinformation

Vielen Dank im voraus.

 

Gruß,

William

bearbeitet von w.sennecke
Link zu diesem Kommentar

Tach William,

 

schau die mal das cmdlet Send-MailMessage an.

Den Body für die Nachricht erstellst du einfach so:

$Body = Get-ADUser -Filter {LastLogonTimeStamp -lt $time -and enabled -eq $true} -Properties LastLogonTimeStamp | select-object Name,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp).ToString('yyyy-MM-dd_hh:mm:ss')}} 
Link zu diesem Kommentar

 

Tach William,

 

schau die mal das cmdlet Send-MailMessage an.

Den Body für die Nachricht erstellst du einfach so:

$Body = Get-ADUser -Filter {LastLogonTimeStamp -lt $time -and enabled -eq $true} -Properties LastLogonTimeStamp | select-object Name,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp).ToString('yyyy-MM-dd_hh:mm:ss')}} 

Hi;

 

leider bekomme es noch nicht so ganz hin. Das komplette Script sieht nun so aus:

# Gets time stamps for all User in the domain that have NOT logged in since after specified date 
import-module activedirectory  
$domain = "domain.com"  
$DaysInactive = 90  
$time = (Get-Date).Adddays(-($DaysInactive)) 
$Body = Get-ADUser -Filter {LastLogonTimeStamp -lt $time -and enabled -eq $true} -Properties LastLogonTimeStamp | select-object Name,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp).ToString('yyyy-MM-dd_hh:mm:ss')}}
  
send-mailmessage -to admins@domain.com -from admins@domain.com -Subject “Benutzeranmeldungen älter als 90 Tage” -body $Body -smtpserver mail.domain.com -encoding ([System.Text.Encoding]::UTF8)

Es erscheint folgende Meldung:

Send-MailMessage : "System.Object[]" kann nicht in den Typ "System.String" konvertiert werden, der für den Parameter "Body" erforderlich ist. Die angegebene Methode wird nicht unterstützt.

 

Ich habe das Gefühl ich bin dicht dran. :)

 

Hast du noch eine Idee?

bearbeitet von w.sennecke
Link zu diesem Kommentar
$Body = Get-ADUser -Filter {LastLogonTimeStamp -lt $time -and enabled -eq $true} -Properties LastLogonTimeStamp | select-object Name,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp).ToString('yyyy-MM-dd_hh:mm:ss')}} | Out-String

füge mal | Out-String hinten an.

 

Super, es klappt!! Vielen vielen Dank. Kann ich als I-Tüpfelchen noch irgendwie absteigend nach Zeit sortieren?

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...