Powershell Remoting with credential

dgjrabp2  于 2023-06-29  发布在  Shell
关注(0)|答案(5)|浏览(136)

当运行远程处理命令时,如Enable-PsSessionInvoke-command等。我们需要为这些命令提供凭证。
我不想每次执行这些命令时都提供凭据。
同样,假设我将用户名存储在变量中&在执行命令时使用该变量。我也想对密码这样做。我能做到吗
例如:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential  mydomain\administrator

因此,在这里我每次执行这些命令时都提供密码。
命令应该如何从变量和其他机制中自动获取用户名和密码?

pcrecxhr

pcrecxhr1#

您可以:

$cred = get-credential #fill you credential in the pop-up window

然后:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential $cred

请记住,$cred中的密码很容易以明文形式恢复!

pu82cl6c

pu82cl6c2#

加密一切。创建一个调用解密信息作为密码的对象。像这样使用它:

read-host -assecurestring | convertfrom-securestring | out-file C:\localdrivespace\username-password-encrypted.txt
$username = "domain\username"
$password = cat C:\localdrivespace\username-password-encrypted.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
fhg3lkii

fhg3lkii3#

如果未显式指定任何凭据,则Powershell将默认为运行powershell会话的用户的凭据。
因此,如果您在远程计算机上以具有管理权限的用户身份运行PowerShell,则在运行命令时不必输入凭据。
您可以做的是创建一个具有服务帐户的存储凭据的计划任务,并允许用户(或仅您自己)访问以运行该任务。
http://blogs.technet.com/b/heyscriptingguy/archive/2011/01/12/use-scheduled-tasks-to-run-powershell-commands-on-windows.aspx
或者,您可以将凭据存储在Windows凭据管理器中,这意味着它们使用您的Windows用户进行加密。
https://gist.github.com/toburger/2947424
但是,使用凭据管理器解决方案,任何能够在您的上下文中运行脚本的用户都能够以明文形式提取密码。
不过,如果您只为自己使用此脚本,或者每个运行脚本的管理员都从自己的用户上下文中这样做,则这不是问题。

5rgfhyps

5rgfhyps4#

任何需要密码的自动脚本都是有缺陷的。其他答案中的注解显示了反转安全字符串是多么容易。

  • 创建一个credentials变量:$cred = get-credential mydomain\me
  • 将凭据存储在xml导出文件中:$cred | export-clixml credfile.xml
  • 模糊文件;添加隐藏属性等
  • 在需要时加载凭据:$cred=import-xmlcli \hidden\credfile.xml
  • 执行需要凭据的命令:enter-pssession -computername server -credential $cred

这就是我的工作

5rgfhyps

5rgfhyps5#

如果您尝试委派凭据,但脚本中的某些操作仍有权限拒绝,则可能需要使用特定设置来设置客户端和服务器计算机。因此,在两台机器上的管理员powershell提示符中:
Get-WSManCredSSP
读取客户端计算机上的输出,其中:
Enable-WSManCredSSP -角色客户端-DelegateComputer *. domain.com
然后在服务器机器上(执行脚本):
启用-WSManCredSSP-角色服务器
然后再次检查:
Get-WSManCredSSP

相关问题