使用Invoke-Command

时间:2016-05-16 19:51:46

标签: sql powershell

我最近一起攻击了一个可以剥离服务器上多个远程安装的进程。我们正在寻找一种在100多个远程服务器上自动安装SQL补丁的方法。上周六我成功通过了这个。它工作得非常好。

我不是PowerShell专家,甚至不是新手。我能够得到一些工作,并希望扩展它。下面的命令是我在PowerShell中发布的,并且希望像应用补丁的每个服务器开始和结束时间一样记录。我想将其保存到所有服务器都可以连接的中央表中。

我的问题是,是否有人有任何好的资源可以让我走上我正在寻找的道路,或者可以帮助我提高我的技能以改善我的过程。

-ComputerName参数被打到一个txt文件,其中包含我想要在该组中修补的服务器名称列表。

将-ScriptBlock参数修改为删除服务器上的批处理文件,该服务器具有通过命令行执行SQL修补程序的命令。      "D:\DBA\SQLPatching\SQL_2012\SP3_CU2\SQLServer2012-KB3137746-x64.exe" /quiet /IAcceptSQLServerLicenseTerms /Action=Patch /AllInstances

由于

 $jobWRM = invoke-command -computerName (get-content D:\DBA\SQLPatching\May2016\LLE\ServerLists\ServerList_EIQDBS01_1.txt) -scriptblock {D:\DBA\SQLPatching\SQL_2012\SP3_CU2\Patch-SQL2012_SP3_CU2.bat} -jobname WinRM -throttlelimit 16 -AsJob

1 个答案:

答案 0 :(得分:0)

如果你想要捕获执行状态,你可以将这些计算机名称放在变量中,并在将完成写入日志时通过它们进行预测。

如果您希望错误为故障排除提供更多深度,Pssessions将为您提供错误(不确定您列出的批处理文件是否会为您提供良好的故障排除数据)。

您可以在网上找到这两种方法的示例

ForEach

PSSessions