【发布时间】:2013-01-20 10:56:55
【问题描述】:
我想使用 Powershell 创建一个 Windows 服务。为给定的用户创建它是小菜一碟。我用这个函数改编自here。
function ReinstallService1 ($serviceName, $binaryPath, $login, $pass)
{
Write-Host "installing service"
# creating credentials which can be used to run my windows service
$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ($login, $secpasswd)
# creating widnows service using all provided parameters
New-Service -name $serviceName -binaryPathName $binaryPath -displayName $serviceName -startupType Automatic -credential $mycreds
Write-Host "installation completed"
}
我的问题是:如何创建“网络服务”帐户?
如果我修改 New-Service 行并删除凭据参数,则会为 “本地系统” 帐户创建服务。差点错过。
New-Service -name $serviceName -binaryPathName $binaryPath -displayName $serviceName -startupType Automatic
我在 Google 上搜索了很多,但没有发现任何指示服务帐户的方法。如果我尝试为用户 “NETWORK SSERVICE” 使用 Credential 参数,我不知道要输入什么密码,如果我发明了一个(以防 cmdlet 忽略它)它不起作用。错误是:
新服务:服务'XXXX(XXXX)' 由于以下错误无法创建:帐户名称是 无效或不存在,或该帐户的密码无效 指定名称
【问题讨论】:
-
您能分享您的确切新服务热线吗?当我使用这样的东西时: New-Service -name $serviceName -binaryPathName $path -displayName $serviceName -startupType Automatic -Credential "NT AUTHORITY\NETWORK SERVICE" 我收到密码提示。
-
问题是您在 -Credential 中只传递了用户名。我的线路和你的一样,但我通过 -Credential $MyCreds $MyCreds value is: $MyCreds= $mycreds = New-Object System.Management.Automation.PSCredential ($login, $secpasswd) $login value is "NT AUTHORITY\NETWORK SERVICE " $secpassword 可以是任何东西。
-
@Aniket,我已经在脚本的最终版本中添加了一个答案,所以你可以比我的评论更好地看到它......
标签: powershell windows-7 windows-services