命令.startservice()在Powershell中不起作用

时间:2014-12-17 12:12:52

标签: powershell service

我有一个小脚本,用户输入脚本名称(描述名称),并可以选择修改属性。这是通过GUI界面完成的:文本框和一些下拉列表。 我尝试了几种方法来制作它,但它们都没有用。

以下是我检索服务信息的方法:

$thisservice = Get-WmiObject -Class Win32_Service -ComputerName $Server | Where {     $_.displayName -eq $serviceBox.text }

我查看$server计算机并将“服务显示名称”与文本框字段中包含的值匹配:$_.displayName -eq $serviceBox.text。这很好用,如果我列出数据,我得到的服务控制台正是如下:.name,.description,.state,.startmode,.displayname

我将服务名称存储在变量中:

$servicename = $thisservice.name

我知道你不能启动服务,除非它是“手动”或“自动”,所以首先我把它设置为自动。在这里,我尝试了不同的方式但没有工作:

$servicename.ChangeStartMode("Auto")

 Set-Service $servicename -StartupType Auto

然后我启动服务(但是即使我在自动格式化服务管理器上预设状态模式,这也不起作用):

$servicename.startservice()

此外$servicename.stopservcie()失败。

我在两台不同的机器上试过这个,我有管理员权限,我尝试用管理员模式运行脚本,结果相同。我甚至直接从PS控制台尝试它,我无法改变服务状态! 我做错了什么?

1 个答案:

答案 0 :(得分:3)

您的问题出在此处:$servicename = $thisservice.name

通过这样做,您将$servicename设置为字符串,而不是服务对象。因此,您无法再在其上调用服务方法。

你应该能够做到:

$thisservice.ChangeStartMode("Automatic")
$thisservice.StartService()