当运行远程处理命令时,如Enable-PsSession
、Invoke-command
等。我们需要为这些命令提供凭证。
我不想每次执行这些命令时都提供凭据。
同样,假设我将用户名存储在变量中&在执行命令时使用该变量。我也想对密码这样做。我能做到吗
例如:
Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential mydomain\administrator
因此,在这里我每次执行这些命令时都提供密码。
命令应该如何从变量和其他机制中自动获取用户名和密码?
5条答案
按热度按时间pcrecxhr1#
您可以:
然后:
请记住,
$cred
中的密码很容易以明文形式恢复!pu82cl6c2#
加密一切。创建一个调用解密信息作为密码的对象。像这样使用它:
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
但是,使用凭据管理器解决方案,任何能够在您的上下文中运行脚本的用户都能够以明文形式提取密码。
不过,如果您只为自己使用此脚本,或者每个运行脚本的管理员都从自己的用户上下文中这样做,则这不是问题。
5rgfhyps4#
任何需要密码的自动脚本都是有缺陷的。其他答案中的注解显示了反转安全字符串是多么容易。
$cred = get-credential mydomain\me
$cred | export-clixml credfile.xml
$cred=import-xmlcli \hidden\credfile.xml
enter-pssession -computername server -credential $cred
这就是我的工作
5rgfhyps5#
如果您尝试委派凭据,但脚本中的某些操作仍有权限拒绝,则可能需要使用特定设置来设置客户端和服务器计算机。因此,在两台机器上的管理员powershell提示符中:
Get-WSManCredSSP
读取客户端计算机上的输出,其中:
Enable-WSManCredSSP -角色客户端-DelegateComputer *. domain.com
然后在服务器机器上(执行脚本):
启用-WSManCredSSP-角色服务器
然后再次检查:
Get-WSManCredSSP