在我们的ERP应用程序中,我们每天从生产中刷新测试实例数据库,通常首先关闭前端应用程序。 我们目前使用从数据库服务器发出的 psexec 来管理远程调用,并在数据库刷新开始之前传递一些命令以关闭应用程序。
由于我们正在迁移到不支持运行psexec的网络,我一直在寻找想法或帮助,使用WMI或Powershell添加到SQL刷新作业以远程关闭应用程序。
通常,一旦我们在远程服务器上获得了cmd shell访问权限,我们就会发出:
SET APPSERVER=HCM83CPY
SET DATABASE=HR83CPY
echo Shutting down %DATABASE% Application Server...
echo.
ECHO Shutting down Application Server
d:
CHDIR D:psoftHR%APPSERVER%appserv
psadmin -c shutdown! -d %DATABASE%
感谢回复
WMI 配置起来可能很痛苦,尤其是在安全网络上时。 如果您想沿着这条路走下去,这里有一些指导。
你没有说你在两端有什么操作系统。 如果您使用的是 2008 R2 或更高版本,则您已经拥有 PowerShell 2.0。 如果可以安装 3.0 或 4.0,您将获得更好的体验(例如,更容易设置远程处理、自动加载模块)。 只要你使用的是PowerShell 2.0,就应该看看PowerShell远程处理。 启动电源壳并运行:
help about_remoting
从那里,您将被引导到:
- about_PSSessions
- about_Remote_Disconnected_Sessions
- about_Remote_Requirements
- about_Remote_FAQ
- about_Remote_TroubleShooting
- about_Remote_Variables
有很多阅读要做,我不可能在这里做到公正,但为了激发您的胃口,一旦配置了远程处理,您就可以在源计算机上发出此问题:
Invoke-Command -ComputerName server1 -ScriptBlock { Get-ChildItem C: }
获取服务器 1 的 C: 的内容。 你不限于运行 PowerShell 命令。 例如
Invoke-Command -ComputerName server1 -ScriptBlock { ipconfig /all }
将从服务器 1 带回详细的 ipconfig。 您可以使用变量(本地和远程)建立会话并运行多个命令。 如果需要,您也可以使用 WMI,但使用在 WinRM 上运行的新 CIM cmdlet(与 PowerShell 远程处理使用的技术相同),而不是邪恶的 DCOM。 尝试Get-Command *cim*
获取列表,然后使用"帮助"获取更多信息。