如何使用保存的凭据在localhost上运行命令-Powershell



我想在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 FilesTest" -Credentials $cred

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

返回的错误是";访问被拒绝";

如何传递这些参数以运行具有高程的命令?

永远不要在脚本中传递纯文本凭据。使用Get-Credential cmdlet收集并使用它们。即使这样做,用户也会被提示输入密码。

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

about_Requires-PowerShell | Microsoft Docs

简短描述防止脚本在没有所需的元素。

#Requires -RunAsAdministrator

启动进程

示例5:以管理员身份启动PowerShell此示例启动PowerShell,方法是使用"以管理员身份运行"选项。

Start-Process -FilePath "powershell" -Verb RunAs

使用您现有的方式:

Copy-Item -Path 'C:Temp*' 'C:Program FilesTest' -Credentials (Get-Credential -Credential 'DomainUserName')

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

从PowerShell 访问Windows凭据管理器

此简单的PowerShell类可用于使用凭据Windows中的管理器和密码保管库:检查帐户信息存在于vault中,将凭据保存到vault并读取存储的vault中的登录和密码信息。

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

使用注册表存储凭据:

将加密密码保存到PowerShell 的注册表

最新更新