[PowerShell] 远端并从目标主机执行PowerShell指令

因为CI/CD的需要,故开始研究了PowerShell…

设定目标主机
启用远端服务

点击(此处)折叠或打开

Enable-PSRemoting

启用Windows远端层,跳出的讯息"Y"过去就好

点击(此处)折叠或打开

winrm quickconfig

设定呼叫端主机
设定TrustedHosts,"*"按照自己的需求可以更改为IP或是HostName

点击(此处)折叠或打开

set-item wsman:\localhost\Client\TrustedHosts -value *

准备放在目标主机的执行档
简单准备了一个echo,以及可以接受一个传入参数

准备呼叫端主机的执行档
传入三个参数,方别是远端的帐号、密码、IP(或HostName)

点击(此处)折叠或打开

<# 取得傳入參數 #>
$account = $args[0]
$password = $args[1]
$serverName = $args[2]

<# 將明碼轉為 SecureString(有安全疑慮,建議改用其他方式處理密碼) #>
$pw = convertto-securestring -AsPlainText -Force -String $password
<# 建立憑證 #>
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $account,$pw

<# 連線遠端的session #>
$session = New-PSSession -ComputerName $serverName -Credential $cred

<# 遠端要執行的執行檔路徑 #>
$filepath='C:\tools\remote.ps1'

<# 執行遠端主機的執行檔,並且傳入一個參數"test" #>
Invoke-Command -Session $session -scriptblock {& $args[0] $args[1]} -ArgumentList $filepath,"test"

执行
从呼叫端执行

点击(此处)折叠或打开

./test.ps1 pstest testaccount password

理论上就能拿到执行结果了

若出现了类似下面的错误,有可能是上面的设定未完整,或是目标主机的Port 5985未接受连入

点击(此处)折叠或打开

New-PSSession : [10.10.xx.xx] 連線到遠端伺服器 10.10.xx.xx 失敗,傳回下列錯誤
訊息: WinRM 用戶端無法處理該要求。若驗證配置與 Kerberos 不同,或是用戶端電腦沒
有加入網域, 則必須使用 HTTPS 傳輸,或是將目標電腦新增到 TrustedHosts 組態設定
中。 請使用 winrm.cmd 來設定 TrustedHosts。請注意,可能不會驗證在 TrustedHosts
清單中的電腦。 您可以執行下列命令,以取得相關的詳細資訊: winrm help config。 如
需詳細資訊,請參閱 about_Remote_Troubleshooting 說明主題。

先前完全没接触过PowerShell,整个过程真是新鲜又有趣(才怪)
笔记一下半个下午的踩雷过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值