【问题标题】:How can I successfully run my script with administrator permissions?如何以管理员权限成功运行我的脚本?
【发布时间】:2016-09-28 15:41:47
【问题描述】:

我一直在研究一个小型的、可重新部署的 .ps1 脚本,该脚本将用于自动清除最终用户的打印假脱机程序和打印队列,并在未来实现更多功能。这是一些需要提升的命令的 sn-p。

    net stop spooler

   Remove-Item C:\Windows\System32\spool\PRINTERS\* -Force

   net start spooler

为了在最终用户的计算机上成功运行此脚本,我创建了一个类似这样的 Powershell 凭据对象。 (管理员凭据是否为明文并不重要,因为它是通过 RMM 在后台执行的)。

$password = "adminpassword" | ConvertTo-SecureString -asPlainText -Force
$username = "adminusername" 
$credential = New-Object System.Management.Automation.PSCredential($username,$password)

但是,当我尝试像这样使用新创建的变量运行任何命令时,

net stop spooler -credential $credential

我遇到了某种复杂情况,例如 PS 窗口只返回命令的语法,而不是实际运行它。我在 Powershell 自动化方面相对缺乏经验;如果有人可以提供一个解决方案,说明如何最好地将新制作的凭证对象集成到我的脚本中,以便它可以在整个提升权限的情况下运行,我们将不胜感激。

【问题讨论】:

    标签: powershell authentication scripting automation


    【解决方案1】:

    net stop 不是 PowerShell 命令,不会获取凭据对象。

    如果您在本地提升运行,以下是如何执行此操作的示例:

    stop-service -Name spooler
    

    【讨论】:

    • 我刚才试过了,我得到一个错误提示:Stop-Service : A parameter cannot be found that match parameter name 'credential'。
    • 停止服务不需要凭证。您将需要 New-PSSession 和 Invoke-Command 来远程执行它。
    猜你喜欢
    • 2011-07-24
    • 2010-11-25
    • 2010-10-26
    • 1970-01-01
    • 2013-07-24
    • 2019-10-15
    • 1970-01-01
    • 2011-11-28
    • 2019-07-03
    相关资源
    最近更新 更多