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定期的執行呢? 將打在下一篇。
這篇要來談怎麼用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定期的執行呢? 將打在下一篇。
留言
張貼留言