2018年3月11日日曜日

【PowerShell】PC起動時にメール送信

と言っても、タスクスケジューラーを使う。zip内のinstall.batを実行して メールやタスクスケジューラー登録を行う。使用しているのは、bat、PowerShell、タスクスケジューラーなので、動かない場合は適切に書き換える。
BootMail_v0.1.zip

■ソース(Bootメール送信.ps1)
# 設定ファイルのパス
$MyInvocation.MyCommand.Path | Split-Path -Parent | sv path
Join-Path $path setting.json | sv setting_path

# 設定ファイル読み込み
cat $setting_path | ConvertFrom-Json | sv conf

# 認証情報生成
ConvertTo-SecureString $conf.pass | sv pass
New-Object System.Management.Automation.PSCredential $conf.user, $pass | sv cred

# ホスト名取得
hostname | sv hst

# メール送信
Send-MailMessage `
    -To         $conf.to     `
    -From       $conf.from   `
    -SmtpServer $conf.server `
    -Port       $conf.port   `
    -Subject    "PC Boot"  `
    -Credential $cred        `
    -UseSsl                  `
    -Body       $hst
■ソース(設定ファイル作成.ps1)
# スクリプトのパスと設定ファイルのパス
$MyInvocation.MyCommand.Path | Split-Path -Parent | sv current_path
Join-Path $current_path setting.json | sv setting_path

Read-Host "送信先(to)メールアドレスを入力してください。"   | sv to
Read-Host "送信元(from)メールアドレスを入力してください。" | sv from
Read-Host "SMTPサーバアドレスを入力してください。"         | sv server
Read-Host "SMTPサーバポート番号を入力してください。"       | sv port

Get-Credential -m "【メールアカウント】と【パスワード】を入力して下さい。" | sv cred

# ユーザ入力情報から設定ファイルを作成。
@{
    to     = $to
    from   = $from
    server = $server
    port   = $port
    user   = $cred.UserName
    pass   = ConvertFrom-SecureString $cred.Password
} | sv setting
    
ConvertTo-Json $setting | Set-Content $setting_path

0 件のコメント:

コメントを投稿