该软件/WMI/PowerShell结合篇(三)执行PowerShell远程脚本

实时监控的基本原理: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发送微信信息


该软件/WMI/PowerShell结合篇(三)执行PowerShell远程脚本