1

我正在编写一个脚本来远程杀死两个进程,删除一些文件夹,并将服务作为应用程序启动。最终这将被部署为在多台服务器上运行,但我目前正在对一台服务器进行测试。一切都很好,除了最后一步是启动远程服务(由于它作为服务运行的一些兼容性问题,它使用 -cl 参数作为应用程序运行)。应用程序通过脚本启动,但在脚本进入下一步时立即关闭。我是一个完全的菜鸟,所以我一直在挖掘很多,但没有找到解决方案的运气。似乎我最终可能不得不在新的运行空间中启动该过程,但我也没有找到一个好的新手指南来做这件事。

此外,当本地化并在机器上运行时,脚本的执行方式也与它应有的一样。

这就是我所拥有的

$a = Get-ChildItem "\\TestMachine\c$\DataFiles"

$pass = cat "C:\cred.txt" | convertto-securestring 

$mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "username",$pass

if ($a.Count -gt 10)
{
Invoke-Command -ComputerName TestMachine -cred $mycred -scriptBlock {stop-process -name TestProcess -force -EA SilentlyContinue}

Invoke-Command -ComputerName TestMachine -cred $mycred -scriptBlock {stop-process -name Winword -force -EA SilentlyContinue}

Get-ChildItem -Path \\TestMachine\c$\WordDocs -Recurse -EA SilentlyContinue | Where-Object {$_.PsIsContainer} | Remove-Item -Recurse -Force -EA SilentlyContinue

Invoke-Command -ComputerName TestMachine -cred $mycred -scriptBlock {Start-Process "C:\Program Files (x86)\Test\TestUploadManager\TestUploadManager.exe" -Verb Runas -ArgumentList -cl}

echo "Success: TestMachine Was successfully reset"
}

else

{
echo "Failed: Reset was not necessary"
}

exit
4

5 回答 5

1

您可以尝试打开远程会话,Enter-PSSession然后使用Start-ProcesscmdletInvoke-Command

您也可以像这样运行程序& "C:\Program Files (x86)\Test\TestUploadManager\TestUploadManager.exe" -cl(在远程会话中)

最后你应该退出会话Exit-PSSession

另一种可能性是“本地”运行脚本。编写脚本,就像在本地机器上运行它一样。将其复制到可访问的共享中。然后使用远程方法在机器上运行脚本。

于 2012-02-13T09:51:29.987 回答
1

汤姆建议的解决方案对我有用。以下是我使用的命令:

  New-PSSession -computername TestMachine
  Start-Process yourservice.exe
  Exit-PSSession

确保使用Exit-PSSession而不是Remove-PSSession使进程yourservice.exe在退出会话后保持活动状态。

于 2014-12-30T23:30:01.420 回答
1

这个 WMI 解决方案最适合我: https ://social.technet.microsoft.com/Forums/scriptcenter/en-US/ead19612-5e7b-4012-8466-0d650232c7a5/invokecommand-and-startprocess?forum= ITCG – Adam Driscoll (指向同一个链接)

采用:

([WMICLASS]"\\localhost\ROOT\CIMV2:win32_process").Create("something.exe argument1Here")

代替:

Start-Process
于 2016-08-08T21:08:47.750 回答
0

在 Start-Process 调用中尝试使用 -Wait 参数。

于 2012-02-11T03:06:04.027 回答
0

我有完全相同的问题。让它干净地工作,结合[WMICLASS] 's create()Start-Process

在这里查看我的答案

于 2016-01-28T04:25:37.083 回答