[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]powershell 远程执行命令

本帖最后由 nameyu8023 于 2021-12-22 12:32 编辑

使用  winrm 控制远端的服务器,但是当我使用 Invoke-Command -Credential 指定凭据的时候会弹出一个窗口输入密码。
我如何做到密码直接卸载脚本里,而不是手动输入?

以下是想要执行的命令:
  1. Invoke-Command -Credential administrator password123 -ComputerName 192.168.16.192  -ScriptBlock { get-service }
复制代码
------------以上是源问题,-----------
问题已经解决,记录下以供他人检索.

主要是创建一个凭据,之后可以使用这个凭据来执行远程命令。
以下保存为脚本,使用 powershell -f ./xxx.ps1 mkpw 生成安全的密钥,并将此密钥复制到 $eei_sys_secure_passwd 变量内,此密钥每个系统是唯一的,就是说在本机生成的密钥放到别的机器上无法使用。
可以很好的解决脚本保存明文密码造成的安全隐患。
  1. $eei_sys_username = 'administrator'
  2. $eei_sys_secure_passwd = "01000000d08c9ddf0115d1118c7a00c04fc297eb01000000b7d3f2a3d1f0384a8b6e714a4a2400fe0000000002000000000010660000000100002000000075ac47cbb38d411e20122a3e98f9984cdeca393116072b3ee3d5b9561e33c23e000000000e800000000200002000000074dd261d1a778d770405ec6de91dc2dca02454c8c0d2b8616cdfa3f1a45d10a8200000007153b0c1b85510cbd4d0d0124f27e43fa966e7e6a95a44da3ff7679ef18b864c400000002da99cff0b4ae11b05568033f51f0c9887f78fccb4828919d13bcc0385b50bed2233c95af3d01ee4ad444a4ce4be516cfabd030d8fc40ab24675545f4d14c9cb"
  3. $eei_service_name='wuauserv'
  4. #创建安全的密码字符串
  5. function make-SecurityPasswd()
  6. {
  7.    
  8.     $securityPasswd = Read-Host "Enter Password" -AsSecureString | ConvertFrom-SecureString
  9.     Set-Clipboard $securityPasswd
  10.     $securityPasswdLength = (convertTo-SecureString $securityPasswd).Length
  11.     Write-Output $securityPasswd
  12.     Write-Output "安全密码以复制到剪切板, 原始密码长度: ${securityPasswdLength}"
  13.      
  14. }
  15. if ($args[0] -eq 'mkpw') {
  16.     make-SecurityPasswd
  17.     exit 0
  18. }
  19. #创建安全凭据对象
  20. $Cred = New-Object -TypeName System.Management.Automation.PSCredential `
  21.           -ArgumentList $eei_sys_username, ($eei_sys_secure_passwd | ConvertTo-SecureString)
  22. Invoke-Command -ComputerName $eei_host -Credential $Cred -ArgumentList $eei_service_name -ScriptBlock {
  23.             param($eei_service_name)
  24.             get-Service $eei_service_name
  25.             }
复制代码

返回列表