2

我一直在尝试使用 powershell 停止和删除远程服务器上的 Windows 服务,特别是通过 Octopus Deploy 自动调用的 PostDeploy.ps1。我已尝试使用此处描述的以下内容

$service = Get-WmiObject -Class Win32_Service -Filter "Name='servicename'"
$service.delete()

当脚本运行时,我得到这个:

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     : 
__DYNASTY        : __PARAMETERS
__RELPATH        : 
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         : 
__NAMESPACE      : 
__PATH           : 
ReturnValue      : 0
PSComputerName   : 

但服务仍然存在。我也尝试过使用

net stop "my service"

其次是

sc.exe delete "my service"

但获得拒绝访问的消息。当我使用以管理员身份运行在盒子上手动使用这些命令时,我可以删除和删除服务。

我也尝试按照此处章鱼部署页面上的示例进行操作。

有关信息,我可以通过 powershell 安装和启动服务。

我可以在我的 ps1 文件中添加一些内容以强制命令以管理员身份运行,还是我需要做其他事情?

4

3 回答 3

3

部署目标机器上的 Octopus 代理执行 Powershell 脚本。因此,您需要确保运行 Octopus 代理的用户已设置适当的权限来管理其他服务:

请参阅以下文章:
1. http://octopusdeploy.com/documentation/configuration/custom-user
2. http://help.octopusdeploy.com/discussions/problems/64-installing-tentacle-under-workgroup-user-or -domain-accoun
3. http://octopusdeploy.com/documentation/security/octopus-tentacle

于 2013-12-06T17:12:05.203 回答
0

如果您有 .ps1 脚本在本地运行,则只需使用PsExec工具在远程计算机上运行脚本,如下所示:

- Create a share on your local machine and put both the psexec.exe and the .ps1 script in it
- Run the following command - change to direct in cmd where the psexec file is:

PsExec.exe \\REMOTECOMPUTER -u -p \\mypc\shared\PostDeploy.ps1

-u 开关(指定域用户名以登录到具有管理权限或域管理员权限的远程计算机) -p 开关(如上指定的管理/域帐户的密码。如果省略此选项,您将被提示输入隐藏密码)

于 2013-12-06T16:57:11.747 回答
0

如果某些命令需要以管理员身份运行,您可以使用计划任务来计划脚本并使其以系统身份运行。

即使使用 PowerShell,您也可以以管理员身份启动 PowerShell:

Start-Process -verb runas PowerShell

你可以试试这个:

Start-Process -verb runas PowerShell PostDeploy.ps1
于 2013-12-06T16:26:10.007 回答