【问题标题】:Run specific commands in PowerShell under different credentials?在不同凭据下在 PowerShell 中运行特定命令?
【发布时间】:2015-09-02 16:19:50
【问题描述】:

我正在尝试在我的 PowerShell 脚本中运行特定的命令行函数。问题是该命令需要提升权限才能执行。

这是一个精简的例子:

# PowerShell code...
query session /server:"SERVERNAME" #NEEDS ELEVATED PERMISSIONS
# More PowerShell code

query 命令需要在提升的权限下运行。

我尝试了以下方法:

Invoke-Command -ScriptBlock {
    query session /server:"SERVERNAME"
} -Credential get-credential

但这不起作用,因为在使用-Credential 参数时需要存在-ComputerName 参数。我希望能够在不使用远程服务器的情况下运行它。

我知道我可以通过让用户在提升的帐户凭据下启动 PowerShell 来解决这个问题,但我宁愿在脚本运行时提示输入凭据,并在他们的管理员帐户凭据下运行该单个命令。在正常凭据下,脚本所做的一切都很好。

【问题讨论】:

  • 使用-Computername $Env:Computername在本地系统上运行Invoke-Command。

标签: powershell cmd credentials


【解决方案1】:

PowerShell 有一些插件,但我实际上发现最简单的方法是:

  1. 常规命令行中的 Sysinternals
  2. 使用 PSexec 进程,您可以传递 IP 地址、用户名和密码
  3. 把它弄到你满意的程度
  4. 创建一个批处理文件,然后在需要部署到环境时从 PowerShell 运行
  5. 创建方法时,如果您希望调用是动态的并使用不同的用户名/密码/IP 地址登录,请让它使用参数
  6. 如果 exec 将始终使用“loginA”和“pwA”在“computerA”上运行,那么显然不需要参数化
  7. *Sysinternals 不能用于彻底破解终端。远程 exec 的用户必须首先将相同的 Sysinternals 工具安装到系统上以接受远程可执行文件,该工具必须打开一次并获得基于 GUI 的批准才能在所述系统上运行。

注意:任何远程 PSexec 的使用凭据都将以与在该系统上授予的用户名/密码相同的权限级别执行。

这是链接:(PsExec v2.2)。虽然我建议升级一两级并下载整个工具箱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多