实时监控的基本原理:WMI监控→数据库服务器(内网)→PowerShell→监控服务器内(外网)→发送微信
前面已介绍如何创建WMI监视器,本文介绍如何执行PowerShell远程脚本,实现将WMI获取到的信息从数据库服务器传到监控服务器,即数据库服务器(内网)→PowerShell→监控服务器内(外网)
<强>一、帐号密码信息加密强>
设置密钥,并将密钥,帐号:密码加密后信息存放于文本中
1,设置加密密钥
功能设置键{
参数([string] $ string)
$=$字符串长度。长度
垫=32 -美元
如果长度(长度($ lt 16)或者(gt长度32美元)){抛出“16和32个字符之间的字符串必须”}
$编码=新对象包含。ASCIIEncoding
=$ $字节编码。GetBytes字符串+“0”*美元(pad)
返回$字节}
2,加密方法
# #设置加密数据
函数Set-EncryptedData {
参数(关键美元,[string]明文美元)
$ securestring=新对象System.Security。SecureString
识字课=plainText.toCharArray美元()
foreach (char美元是美元){secureString.AppendChar美元($字符)}
encryptedData=https://www.yisu.com/zixun/ConvertFrom-SecureString -SecureString SecureString美元美元关键关键
返回$ encryptedData
}
3,解密方法
# #得到加密数据
函数Get-EncryptedData {
参数(键,美元数据)
$ Data | ConvertTo-SecureString美元关键关键|
ForEach-Object {[Runtime.InteropServices.Marshal]:: PtrToStringAuto ([Runtime.InteropServices.Marshal]:: SecureStringToBSTR ($ _))}}
<强>二、创建远程会话,并执行远程脚本强>
获取密钥,并对帐号密码进行解密
$ idkeystr=gc D: \ xxx \ IDkey。txt
$用户ID=gc D: \ xxx \ ID。txt
IDkey=设置键idkeystr美元
$ appServerUser=get-EncryptedData IDkey userid美元
$ pwkeystr=gc D: \ xxx \ PWkey。txt
$ passwd=gc D: \ xxx \ PW。txt
PWkey=设置键pwkeystr美元
$ appServerPwd=get-EncryptedData PWkey passwd美元
$ appServer=癕onitorServer”
密码=ConvertTo-SecureString appServerPwd美元-AsPlainText -Force
$ appCred=新对象System.Management.Automation.PsCredential (appServerUser美元,美元密码)
# #创建会话
$ s=New-PSSession -ComputerName appServer凭据appCred美元-UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)认证协商
# #执行无参数脚本
Invoke-Command会话$ s -ScriptBlock {powershell - file E: \ \ xxx \ \ xxx。ps1}
# #执行带参数脚本
Invoke-Command会话$ s -ScriptBlock {powershell - file E: \ \ xxx \ \ xxx。ps1 args[0]美元args参数美元[1][2]}-ArgumentList text1美元,text2美元,美元text3
# #删除会话
$ s | Remove-PSSession
下一篇介绍如何通过PowerShell发送微信信息