如何在远程计算机上运行PowerShell脚本以安装Google Chrome?
远程安装Google Chrome的最优PowerShell方案
嘿Stan,针对你远程安装Chrome的需求,我整理了两个最优方案,比你原本复制脚本再运行的思路更高效,还能避开不少坑:
方案一:直接远程执行安装逻辑(无需复制脚本)
这个方案我更推荐,不用费劲把本地脚本传到远程机器,直接通过PowerShell远程会话让目标机器自己完成下载安装,全程不用碰文件共享,能避开很多权限问题。
提前准备
- 确认目标机器开启了WinRM服务:域环境里基本默认开启,工作组机器可能需要手动配置。你可以在本地先跑这个命令测连通性:
能正常返回结果就说明没问题。Test-WSMan -ComputerName <目标机器名/IP> - 你得有目标机器的管理员权限哦。
执行命令
把安装逻辑直接塞进Invoke-Command里,一次性搞定:
# 先在本地输入目标机器信息 $comp = Read-Host "请输入目标计算机名或IPv4地址" # 远程执行安装流程 Invoke-Command -ComputerName $comp -ScriptBlock { $Installer = "$env:temp\chrome_installer.exe" $url = 'http://dl.google.com/chrome/install/375.126/chrome_installer.exe' Invoke-WebRequest -Uri $url -OutFile $Installer -UseBasicParsing Start-Process -FilePath $Installer -Args '/silent /install' -Wait Remove-Item -Path $Installer -Force } -Credential (Get-Credential -Message "请输入目标机器的管理员凭据")
为啥这个方案更好?
- 不用纠结
\\$comp\c$的权限问题(比如防火墙限制、共享权限不足) - 安装包是从远程机器的网络下载的,速度比你从本地传过去快多了
- 不会在远程机器留下脚本文件,更干净
方案二:优化你原本的“复制脚本再运行”思路
如果你还是想用本地已有的脚本文件,那我给你优化下步骤,确保脚本能顺利在远程执行:
改进后的完整流程
# 本地输入必要信息 $login = Read-Host "请输入登录ID" $comp = Read-Host "请输入计算机名或IPv4地址" $localScriptPath = "\\localhost\c$\Chrome\Chrome Installer.ps1" $remoteScriptPath = "\\$comp\c$\temp\Chrome Installer.ps1" # 先确保远程机器的C:\temp目录存在(避免复制失败) Invoke-Command -ComputerName $comp -ScriptBlock { if (-not (Test-Path -Path "C:\temp")) { New-Item -Path "C:\temp" -ItemType Directory -Force | Out-Null } } -Credential (Get-Credential -UserName $login -Message "请输入管理员凭据") # 把本地脚本复制到远程机器 Copy-Item -Path $localScriptPath -Destination $remoteScriptPath -Force # 通过远程会话执行脚本 Invoke-Command -ComputerName $comp -ScriptBlock { & "C:\temp\Chrome Installer.ps1" } -Credential (Get-Credential -UserName $login -Message "请输入管理员凭据") # 可选:执行完删掉远程机器上的脚本,保持干净 Remove-Item -Path $remoteScriptPath -Force
重要提醒!
你的原脚本里有Read-Host命令,但远程执行脚本的时候是没法交互的,会直接卡住!所以建议把原脚本改成参数化脚本,或者像上面的代码这样,把需要输入的内容(比如登录ID、机器名)放在本地完成,不要让远程脚本自己弹输入框。
如果\\$comp\c$没法访问,大概率是目标机器的防火墙限制了文件共享,这时候方案一就更靠谱啦。
内容的提问来源于stack exchange,提问作者Stan Di
相关产品推荐
相关产品推荐

