none
Power Shell - отправка письма RRS feed

  • Вопрос

  • Здравствуйте!
    такой вопросик, необходимо с помощью скрпта отправлять письмо с вложением.
    используется  Send-MailMessage

    на просторах нашел пример скрипта:

    #How to create a PSCredential object
    $secpasswd = ConvertTo-SecureString "your_password_here" -AsPlainText -Force
    $mycreds = New-Object System.Management.Automation.PSCredential ("username_replacehere", $secpasswd)
    #Send email using send-mailmessage
    send-mailmessage -to "scottalvarino <scottalvarino@scottalvarino.com>" -from "Alvarino<email@techjunkie.tv>" -subject "email1" -body "this is body1" -smtpserver smtp.techjunkie.tv -credential $mycreds
      

    в прнцепе с ним все работает, но есть пара вопросов:
    1) можно ли избавиться от этого:

    $secpasswd = ConvertTo-SecureString "your_password_here" -AsPlainText -Force
    $mycreds = New-Object System.Management.Automation.PSCredential ("username_replacehere", $secpasswd)
    

    и при этом что бы  -credential принимал значение ("login", "password")
    или даже еще лучше что бы данные авторизации для почты брались не из скрипта а из "хранилища учетных данных для автоматического входа" что бы не светиться пароликом в скрпте :)


    • Изменено ©LIS®™ 19 февраля 2014 г. 11:59
    19 февраля 2014 г. 11:54

Ответы

  • Добавить параметры в скрипт:

    param(
    	$Login,
    	$Password
    )
    	
    #How to create a PSCredential object
    $secpasswd = ConvertTo-SecureString $Password -AsPlainText -Force
    $mycreds = New-Object System.Management.Automation.PSCredential ($Login, $secpasswd)
    #Send email using send-mailmessage
    send-mailmessage -to "scottalvarino <scottalvarino@scottalvarino.com>" 
    	-from "Alvarino<email@techjunkie.tv>" -subject "email1" -body "this is body1" -smtpserver smtp.techjunkie.tv -credential $mycreds
    
    # Запуск скрипта
    .\Send.ps1 -Login test -Password test

    Для использования CredMan:

    1) Качаем скрипт http://gallery.technet.microsoft.com/scriptcenter/PowerShell-Credentials-d44c3cde
    2) Загружаем в текущую сессию . "C:\script\CredMan.ps1"
    3) С помощью Enum-Creds смотрим подходящие учетные данные

    Enum-Creds | Where {$_.TargetName -eq "LegacyGeneric:target=MicrosoftOffice15_Data:orgid:my@xxxx.onmicrosoft.com"} | Foreach {
    		.\Send.ps1 -Login $_.UserName -Password $_.CredentialBlob
    	}

    Если Login определяется из login@domen.ru,то:

     .\Send.ps1 -Login ($_.TargetName.split(":")[-1].split("@")[0]) -Password $_.CredentialBlob

    • Помечено в качестве ответа ©LIS®™ 24 февраля 2014 г. 6:44
    19 февраля 2014 г. 12:22
    Отвечающий

Все ответы

  • Добавить параметры в скрипт:

    param(
    	$Login,
    	$Password
    )
    	
    #How to create a PSCredential object
    $secpasswd = ConvertTo-SecureString $Password -AsPlainText -Force
    $mycreds = New-Object System.Management.Automation.PSCredential ($Login, $secpasswd)
    #Send email using send-mailmessage
    send-mailmessage -to "scottalvarino <scottalvarino@scottalvarino.com>" 
    	-from "Alvarino<email@techjunkie.tv>" -subject "email1" -body "this is body1" -smtpserver smtp.techjunkie.tv -credential $mycreds
    
    # Запуск скрипта
    .\Send.ps1 -Login test -Password test

    Для использования CredMan:

    1) Качаем скрипт http://gallery.technet.microsoft.com/scriptcenter/PowerShell-Credentials-d44c3cde
    2) Загружаем в текущую сессию . "C:\script\CredMan.ps1"
    3) С помощью Enum-Creds смотрим подходящие учетные данные

    Enum-Creds | Where {$_.TargetName -eq "LegacyGeneric:target=MicrosoftOffice15_Data:orgid:my@xxxx.onmicrosoft.com"} | Foreach {
    		.\Send.ps1 -Login $_.UserName -Password $_.CredentialBlob
    	}

    Если Login определяется из login@domen.ru,то:

     .\Send.ps1 -Login ($_.TargetName.split(":")[-1].split("@")[0]) -Password $_.CredentialBlob

    • Помечено в качестве ответа ©LIS®™ 24 февраля 2014 г. 6:44
    19 февраля 2014 г. 12:22
    Отвечающий
  • что то там скрипт во втором варианте просто мегаздоровый :)
    Уточнюсь, если добавить параметр:

    param(
    $Login,
    $Password)

    то паролик и логин придется писать самому при запуске скрипта? если да то не вариант :(
    а второй вариант что то там такой скипт что голову можно сломать) 
    чего нить по проще может быть? ака взять данные из учетки в сохраненных паролях windows или использовать такую то учетку? в любом случае спасибо) попробую разобрать тот скрипт по полочкам может удастся сократить до того объема что мне нужно) 

    20 февраля 2014 г. 11:42