MSSQL/WMI/PowerShell结合篇(三)执行PowerShell远程脚本

 

 

实时监控的基本原理:WMI Monitor—>数据库服务器(内网)—>PowerShell—>监控服务器(内外网)—>发送微信 
前面已介绍如何创建WMI Monitor,本文介绍如何执行PowerShell远程脚本,实现将WMI获取到的信息从数据库服务器传到监控服务器,即数据库服务器(内网)—>PowerShell—>监控服务器(内外网) 


一、帐号密码信息加密 
设置密钥,并将密钥、帐号、密码加密后信息存放于文本中 
1、设置加密密钥 
function Set-Key { 
param([string]$string) 
$length = $string.length 
$pad = 32-$length 
if (($length -lt 16) -or ($length -gt 32)) {Throw "String must be between 16 and 32 characters"} 
$encoding = New-Object System.Text.ASCIIEncoding 
$bytes = $encoding.GetBytes($string + "0" * $pad) 
return $bytes 



2、加密方法 
##set Encrypted Data 
function Set-EncryptedData { 
param($key,[string]$plainText) 
$securestring = new-object System.Security.SecureString 
$chars = $plainText.toCharArray() 
foreach ($char in $chars) {$secureString.AppendChar($char)} 
$encryptedData = ConvertFrom-SecureString -SecureString $secureString -Key $key 
return $encryptedData 



3、解密方法 
##get Encrypted Data 
function Get-EncryptedData { 
param($key,$data) 
$data | ConvertTo-SecureString -key $key | 
ForEach-Object {[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($_))} 





二、创建远程会话,并执行远程脚本 


获取密钥,并对帐号密码进行解密 
$idkeystr=gc D:\xxx\IDkey.txt 
$userid=gc D:\xxx\ID.txt 
$IDkey=set-key $idkeystr 
$appServerUser=get-EncryptedData $IDkey $userid 


$pwkeystr=gc D:\xxx\PWkey.txt 
$passwd=gc D:\xxx\PW.txt 
$PWkey=set-key $pwkeystr 
$appServerPwd=get-EncryptedData $PWkey $passwd 


$appServer='MonitorServer' 
$password = ConvertTo-SecureString $appServerPwd -AsPlainText -Force 
$appCred = New-Object System.Management.Automation.PsCredential($appServerUser,$password) 


##创建会话 
$s = New-PSSession -ComputerName $appServer -Credential $appCred -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Authentication Negotiate 


##执行无参数脚本 
Invoke-Command -Session $s -ScriptBlock {powershell -File E:\\xxx\\xxx.ps1} 


##执行带参数脚本 
Invoke-Command -Session $s -ScriptBlock {powershell -File E:\\xxx\\xxx.ps1 $args[0] $args[1] $args[2]} -ArgumentList $text1,$text2,$text3 


##删除会话 
$s|Remove-PSSession

 IPsec 通过使系统能够选择所需的安全协议、确定用于服务的算法以及放置提供所请求的服务所需的任何加密密钥,在 IP 层提供安全服务。 IPsec 可用于保护一对主机之间、一对安全网关之间或安全网关与主机之间的一个或多个“路径”。 (在整个 IPsec 文档中使用的术语“安全网关”是指实现 IPsec 协议的中间系统。例如,实现 IPsec 的路由器或防火墙就是安全网关。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值