agnostiker
Goto Top

Login Powershell Script Fehler

Hi,

eigentlich wollte ich nur ein simples Script verfassen welches nach einem Erfolgreichen Anmelden eines Users dessen Workstation und Loginzeit an
spezifizierte Email Adresse sendet, dazu habe ich folgendes Script erstellt und dachte eigentlich das es so laufen muesste aber ich renne in den unten Stehenden fehler, erstmal das script, eigentlich selbst erklaerend:

$pw = Get-Content \\Server\path\filename.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential "service_account", $pw  
$subject = [Environment]::UserName.substring(1,1).toupper()+[Environment]::UserName.substring(2)+", "+[Environment]::UserName.substring(0,1).toupper()+" hat sich an "+[Environment]::MachineName+" eingeloggt"  
$C10 = [char]10
$Zeit = Get-Date

$body = [Environment]::UserName+" hat sich erfolgreich an "+[Environment]::MachineName+" eingeloggt."+$C10+$C10+$C10  
$body=$body + 'Logon Server: '+$env:logonserver+$C10  
$body=$body + 'Aktuelle Uhrzeit: '+$Zeit+$C10  
Send-MailMessage -Credential $cred -to "user@tld.com" -from "Anmeldung <no-reply@tld.com>" -Subject $subject -body $body -SmtpServer internal.server.lan  

Die Fehlermeldung die mich noch Wahnsinnig macht ist:

ConvertTo-SecureString : Schlüssel ist im angegebenen Status nicht gültig.
In Path\loginmail.ps1:1 Zeichen:73
+ $pw = Get-Content \\path\\netlogon\scripts\filename.txt | ConvertT ...
+                                                                         ~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException
    + FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand
 
New-Object : Ausnahme beim Aufrufen von ".ctor" mit 2 Argument(en):  "Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "password" NULL ist. Ändern Sie den Wert   
des Arguments "password" in einen Wert ungleich NULL."  
In path\loginmail.ps1:2 Zeichen:9
+ $cred = New-Object System.Management.Automation.PSCredential "service_account", $p ...  
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
   + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

Da die Mail im Kontext von bereichts authentifizierten Usern gesendet wird waerend des Login Prozesses muss doch eigentlich auch moeglich sein komplett ohne predefinierten User / ohne Die $Creds auszukommen oder ?

Content-Key: 227578

Url: https://administrator.de/contentid/227578

Printed on: April 18, 2024 at 00:04 o'clock

Member: colinardo
colinardo Jan 24, 2014 at 08:36:11 (UTC)
Goto Top
Hallo agnostiker,
Da die Mail im Kontext von bereichts authentifizierten Usern gesendet wird waerend des Login Prozesses muss doch eigentlich auch moeglich sein komplett ohne predefinierten User / ohne Die $Creds auszukommen oder ?
Eigentlich ja, wenn User berechtigt ist Mails zu versenden. (http://www.windowspro.de/script/send-mailmessage-e-mails-versenden-powe ..)
Liegt das Passwort bereits verschlüsselt in der Textdatei vor ? Wenn ja, hast du das Passwort vermutlich mit einem anderen als dem Service-Account verschlüsselt erzeugt, siehe: http://social.technet.microsoft.com/Forums/de-DE/74fa3d1a-ded7-4e89-827 ...

Grüße Uwe
Member: agnostiker
agnostiker Jan 24, 2014 at 10:06:22 (UTC)
Goto Top
ich habe jetzt einen neuen recieve connector gebaut, welcher anonymous annimmt und auf einem speziellen, nicht nach aussen verfügbaren port laeuft.
das script laeuft ABER es werden nur eine handvoll user protokolliert. diese user haben keinerlei eigenheiten also nicht eine spezielle gruppe, ou oder auf einem
speziellen exchange server, sieht schon fast random aus.

user1 loggt sich ein -> mail
user2 loggt sich ein -> nix
user1 loggt sich wieder ein -> mail
Member: colinardo
colinardo Jan 24, 2014 updated at 11:09:40 (UTC)
Goto Top
ist denn bei allen Usern die "Powershell Script Execution-Policy" (Set-ExecutionPolicy) korrekt gesetzt ?

falls es doch an der Mail-Funktion haken sollte, benutze mal diese Funktion zum Mail versenden
(Zeile 2-5 noch anpassen / letzte Zeile versendet eine Beispiel-Mail mit dieser Function)
Function sendmail($FROM,$TO,$SUBJECT,$BODY,$ATTACHMENTS = $null){
  $SMTPHOST = "smtp.server.de"  
  $SMTPPORT = 25
  $SMTPUSER = "USERNAME"  
  $SMTPPass = "PASSWORD"  
  $SMTPClient = New-object System.Net.Mail.SmtpClient($SMTPHOST,$SMTPPORT)
  $SMTPClient.EnableSsl = $true
  $Mail = new-object System.Net.Mail.MailMessage
  $Mail.from = $FROM 
  $Mail.to.add($TO)
  $SMTPClient.Credentials = new-object System.Net.NetworkCredential($SMTPUSER,$SMTPPass)
  $Mail.Subject = $SUBJECT
  $Mail.Body = $BODY
  # Add Attachments
  if ($ATTACHMENTS){
      foreach ($att in $ATTACHMENTS){
        $Mail.Attachments.Add($att.FullName)
      }
  }
  $SMTPClient.Send($Mail)
}
sendmail "absender@domain.com" "empfaenger@domain.com" "DEIN BETREFF" "DER INHALT"