当密码具有特殊符号时,使用powershell更改服务的登录帐户

时间:2016-04-09 20:00:35

标签: powershell powershell-remoting powershell-v4.0

我正在运行以下powershell脚本来更改远程服务的登录用户帐户,然后启动它。

$result = $remoteService.Change($null,$null,$null,$null,$null,$null,$logonAccount, $logonPassword,$null,$null,$null)

    if ($result.ReturnValue -eq '0') 
    {
        write-host "logon account changed"
        $remoteService.StartService();
    } 
    else 
    {
        write-host "Error: $result.ReturnValue"
    };

如果我的密码只包含字母数字字符,我可以看到服务启动,如下面的结果所示

logon account changed
ReturnValue      : 0

但是,另一个帐户包含带有@,#和 - 等特殊字符的密码,如果我使用此帐户,我的服务启动将失败,错误代码为15。

logon account changed
ReturnValue      : 15

我使用sc命令(示例)

的结果相同
sc \\servername config servicename obj= domain\accountname password= w@e#dF-sxs32
sc \\servername  start servicename

[SC] StartService FAILED 1069:
The service did not start due to a logon failure.

我可以手动更改服务的登录用户,并使用上述相同的帐户从Windows services.msc UI成功启动它。所以我认为问题可能在于密码。

我为此苦苦挣扎。任何人都可以请帮助。 感谢

1 个答案:

答案 0 :(得分:0)

我检查过,你的sc命令效果很好。

sc \\mycomp config myservice obj= mycomp\User1 password= w@e#dF-sxs32

所以,问题不在@#-_

的密码中

您的域\ accountname用户似乎没有权限或权限在服务器名称服务器上运行任何服务。

有关将帐户登录为服务权限的信息,请参阅MSDN https://technet.microsoft.com/en-us/library/cc794944(v=ws.10).aspx