Azure RMS檔案加密(3)-用PowerShell ISE寫script(連接資料庫加密)

嗨大家好
這篇要來談怎麼用PowerShell ISE來寫腳本、怎麼連資料庫來加密。
可以把他想成PowerShell的IDE,開起來長這樣,右邊還有指令可以參考。


那就不囉嗦了直接來看怎麼連接SQL,我寫了一個function來處理連接SQL,因為PowerShell是.NET Framework所以其實就是ADO.NET的連法。

function SQL
{Param ($sqlstring)
    $conn = New-Object System.Data.SqlClient.SqlConnection↵
    $conn.ConnectionString = "Data Source=SQLEXPRESS;Initial Catalog=test;User ID=sa;Password=123456"
    $conn.open()
    $cmd = New-Object System.Data.SqlClient.SqlCommand↵
    $cmd.connection = $conn
    $cmd.commandtext = $sqlstring-f
    $os.__SERVER,$env.username,$os.servicepackmajorversion,$reason
    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $cmd
    $dataTable = New-Object System.Data.DataTable
    $adapter.Fill($dataTable) | Out-Null
    $conn.close()
    return $dataTable
}

把SQL字串當參數丟進commandtext即可,我用DataTable接,最後再回傳DataTable。
接下來分別的DataTable的每個Row去做處理逐筆加密,每個Row的資料分別是加密者信箱、檔案路徑、輸出檔案路徑、被授權者信箱、權限

$dt=SQL("SELECT  [ID],[OwnerEmail],[Path],[OutPath],[UserEmail],[Permission] FROM [test]" )

迴圈裏面去做處理,紅色是參數,記得如果你的被授權者或權限是多筆,如"VIEW","EDIT",要用陣列存,下License command時PowerShell才看得懂XD
陣列這樣宣告 $Permission=New-Object System.Collections.ArrayList
這樣接dt.row的值 $OwnerEmail=$row.Item('OwnerEmail')
上面兩個東西要放在迴圈裡,各位程式高手應該懂,我只是拿出來說明。

foreach($row in $dt)
{
    $License = New-RMSProtectionLicense -OwnerEmail $OwnerEmail -UserEmail $UserEmail -
    Permission $Permission 
    Protect-RMSFile -License $License -File $Path -OutputFolder $OutPath
}

別忘記Azure RMS檔案加密(2)-運用PowerShell加密說的,再加密前記得設定RMSServerAuthentication結束要清理掉。

OK這樣就可以利用Script對SQL的大量資料一次做加密的動作,那到底要怎麼設定這個Script定期的執行呢? 將打在下一篇。

留言

這個網誌中的熱門文章

Python-相關係數矩陣實作(python-correlation matrix )

ASP.NET-後端將值傳給javascript

ASP.NET-FileUpload上傳後自動觸發button click(FileUpload upload auto trigger button click)