【发布时间】:2020-04-30 20:55:40
【问题描述】:
我以管理员身份访问计算机,我必须使用 Powershell 脚本启动、停止和重新启动一些窗口服务。我们不希望在运行脚本时出现 UAC 提示,因为只有一个用户可以访问该机器。同样由于某些特定要求,我们必须通过在其中添加管理员凭据来运行该脚本文件。
除了我迄今为止尝试过的其他解决方案外,与我正在寻找的解决方案相近的解决方案如下
$username = "Domain\user"
$password = ConvertTo-SecureString "myPassword" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential -ArgumentList ($username, $password)
Set-Service -Name Spooler -Status Running -PassThru -Credential $psCred
但我收到以下错误。
Set-Service : 找不到与参数名称匹配的参数 '凭据'。在行:6 字符:53 + ... t-Service -Name Spooler -Status Running -PassThru -Credential $psCred + ~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Set-Service], ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.SetServiceCommand
更新 1(尝试建议)
Invoke-Command -credential $psCred -command {Set-Service -Name Spooler -Status Running -PassThru} -computername myComputerName
[myComputerName] 连接到远程服务器 myComputerName 失败 出现以下错误消息:客户端无法连接到 请求中指定的目的地。验证服务上的 目的地正在运行并正在接受请求。查阅日志和 WS-Management 服务的文档 目的地,最常见的是 IIS 或 WinRM。如果目的地是 WinRM服务,在目标上运行以下命令进行分析 并配置 WinRM 服务:“winrm quickconfig”。更多 有关信息,请参阅 about_Remote_Troubleshooting 帮助主题。 + CategoryInfo : OpenError: (myComputerName:String) [], PSRemotingTransportException + FullyQualifiedErrorId : 无法连接,PSSessionStateBroken
更新 2
我必须使用命令 Enable-PSRemoting -Force -SkipNetworkProfileCheck 在机器上启用 PSRemoting,以便 Invoke-Command 可以执行,但在重复命令 Invoke-Command -credential $psCred -command {Set-Service -Name Spooler -Status Running -PassThru} -computername localhost 后出现以下错误
[localhost] 连接到远程服务器 localhost 失败,原因是 以下错误消息:访问被拒绝。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。 + CategoryInfo : OpenError: (localhost:String) [], PSRemotingTransportException + FullyQualifiedErrorId : AccessDenied,PSSessionStateBroken
在提升的 powershell 窗口中运行相同的命令集工作正常。
考虑到我是 Powershell 世界的新手,请您指导我正确的方向。
【问题讨论】:
-
Set-Service命令没有凭据参数。你可以使用Invoke-Command -credential $pscred -command {Set-Service -Name Spooler -Status Running -PassThru} -
@LievenKeersmaekers,我尝试了您的建议,但没有奏效。搜索原因后,我发现“没有-computername 的-credential 不能存在”。请检查我的问题中的更新
-
试试
-computername localhost -
@LievenKeersmaekers,我已经尝试了与您的建议相关的几个步骤,并在我的问题的 Update 2 中分享了调查结果。请看一下
-
在这种情况下,您可以尝试运行 powershell,如this question