需求下 學習了 透過 Powershell 進行 Mail 及 ODBC的連線 記錄備用
新增ODBC 連線--此處使用 ODBCCONF.EXE 不過看來M$ 已後要將他打入冷宮了 簡單的說明一下
ODBCCONF.EXE /A /CONFIGDRIVER /CONFIG(SYS)DSN |
example odbcconf.exe CONFIGSYSDSN "Microsoft Access Driver (*.mdb)" "DSN=DRM|Description=DRM|DBQ=D:\DRM\BSC.mdb"
說明:增加一個ACCESS MDB 的ODBC 連結於糸統資料來源 名稱為DRM 描述為DRM 檔案於 D:\DRM\BSC.mdb
參考連結<https://docs.microsoft.com/zh-tw/sql/odbc/odbcconf-exe>
整體來說問題不多 但常會遇到的可能的錯誤 1.DRIVER 找不到或未註冊 2.不知錯誤
1.可透過 get-odbcdrivr 來找到你需要的驅動名稱 (怎麼找都找不到你要的名稱嗎 ,試著開啟 powershell(x86) 試試 ....)
2. DSN | Description 等訊息處, 不要有空格..應該可以避免掉 ...我是這樣成功的,希望你遇到的也是
掛載完成後 就是連線和查訊了
$connectstring = "DSN=DRM;Uid=;Pwd=;"
$sql = "select top 1 * from MJT"
$conn = New-Object System.Data.Odbc.OdbcConnection($connectstring)
$conn.open()
$cmd = New-object System.Data.Odbc.OdbcCommand($sql,$conn)
$da = New-Object system.Data.Odbc.OdbcDataAdapter($cmd)
$dt = New-Object system.Data.datatable
$null = $da.fill($dt)
$conn.close()
Write-Output $dt > D:\MJT.txt
一樣當功能無法正常運行時確認一下在x86 下是否正常 可逐步測試 至$conn.open() 就能知道是否能正常連線了
參考資料
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/803be016-14d6-4c58-b7d8-4785910fe347/odbc-connection-checking?forum=sqldataaccess
https://www.andersrodland.com/working-with-odbc-connections-in-powershell/
至於Send Mail 網上說明很多
最終透過 https://philerb.com/2011/11/sending-mail-with-powershell/ 才了解 原來有兩種不同的方式進行寄信 此處選的是 system.mail.net的方式
由於要夾帶多個附件 又學到了 foreach 的用法 當然就順便套用到 寄件者的部份囉
至於Body 的部份有興趣也可以讓你的 Auto Mail 充滿許多的可行性 不過還未成功夾帶圖片 _Orz
最後當然就是排程叫用囉 由於有些僅能於x86 下執行 所以在叫用上
"C:\Windows\SysWow64\WindowsPowerShell\v1.0\powershell.exe" -file "D:\DRM.ps1"