【问题标题】:How do I run a command on localhost with saved credentials? -Powershell如何使用保存的凭据在 localhost 上运行命令? -电源外壳
【发布时间】:2021-03-27 13:05:05
【问题描述】:

我想在 powershell 上使用保存的凭据运行一个命令,我有以下脚本

$user = "test"
$passwd = ConvertTo-SecureString -String "ExtremelyStrongPassword" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList $user, $passwd
Copy-Item -Path "C:\Temp\*" "C:\Program Files\Test\" -Credentials $cred

该用户没有管理员权限,但在 localhost 我们有一个具有管理员权限的用户来运行这些进程。

返回的错误是“拒绝访问”

我如何传递这些参数来运行带有海拔的命令?

【问题讨论】:

  • 提升脚本是很常见的事情,网络和视频中都有很多示例。你搜索了什么?您从 tt 搜索中尝试了什么?您在尝试的过程中遇到了哪些错误?
  • 不要尝试将安全凭据从一个帐户传递给另一个帐户(因为这会打开一个安全漏洞),而是将正确的(特定)权限分配给所需的项目(例如文件)。

标签: powershell


【解决方案1】:

切勿在脚本中传递纯文本凭据。使用 Get-Credential cmdlet 来收集和使用它们。即使这样做,也会提示用户输入密码。

  • 这就是 Start-Process 的 -RunAs 开关的作用
  • 或者将您的脚本设置为自动提升
  • 或使用 cmdlet 的凭据开关
  • 或者使用带有任何您需要的凭据的计划任务,并让用户运行它。
  • 使用脚本顶部的 Requires 语句
  • 将需要的凭据存储在 Windows 凭据存储中并调用它们 从那里

about_Requires - PowerShell | Microsoft Docs

简短描述防止脚本在没有所需的情况下运行 元素。

#Requires -RunAsAdministrator

Start-Process

示例 5:以管理员身份启动 PowerShell 此示例启动 PowerShell 通过使用以管理员身份运行选项。

Start-Process -FilePath "powershell" -Verb RunAs

以这种方式使用你所拥有的:

Copy-Item -Path 'C:\Temp\*' 'C:\Program Files\Test\' -Credentials (Get-Credential -Credential 'Domain\UserName')

除了计划任务方法之外,每个方法都会提示用户输入密码,这听起来像是您想要避免的。因此,请考虑以下事项:

从 PowerShell 访问 Windows 凭据管理器

这个简单的 PowerShell 类可用于处理凭据 Windows 中的 Manager 和 Password Vault:检查帐户信息 存在于保险库中,将凭据保存到保险库并读取 从保管库中存储登录名和密码信息。

https://gallery.technet.microsoft.com/scriptcenter/Accessing-Windows-7210ae91

使用注册表存储凭据:

Save Encrypted Passwords to Registry for PowerShell

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2014-07-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多