通过远程PowerShell安装ActivClient的脚本异常及目录解锁问题咨询
ActivClient远程安装脚本问题修复方案
核心问题修复点
1. 远程触发安装失败原因
- 原脚本中
New-PSSession仅指定了会话名称,未添加-ComputerName参数指向目标设备,导致会话创建在本地,所有命令仅在本地执行 - 远程PowerShell会话默认执行策略限制第三方脚本运行,未显式绕过策略会导致
Deploy-Application.ps1无执行权限 - 相对路径调用脚本在远程会话中容易出现路径识别错误,需使用绝对路径配合调用运算符执行
- 远程会话无交互界面,
pause命令会导致会话无限阻塞无法返回执行结果
2. 批量解锁子目录下所有文件的方法
原Get-ChildItem未添加递归参数,仅会处理目标根目录下的第一层文件,添加-Recurse参数遍历所有子目录,搭配-File参数仅针对文件生效,避免无效处理文件夹对象。
修正后完整脚本
$mypath = $MyInvocation.MyCommand.Path $Path = Split-Path $mypath -Parent [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') $title = 'Computer Name' $msg = 'Enter the Computer Name you need to reinstall ActivClient on:' $CName = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title) if (Test-Connection -ComputerName $CName -Count 1 -Quiet){ Write-Host "正在进入远程PowerShell会话" # 新增-ComputerName参数指定目标设备 $PSSession = New-PSSession -ComputerName $CName -Name "ActivClientInstall_$CName" Invoke-Command -Session $PSSession -ScriptBlock{ $targetPath = "C:\Users\Public\Downloads\SDC NIPR - ActivClient v7.2.x - 210811_18NOV" # 新增递归、文件筛选参数遍历所有子目录下的文件解锁 Get-ChildItem -Path $targetPath -Recurse -File -Force | Unblock-File $installScript = Join-Path -Path $targetPath -ChildPath "Deploy-Application.ps1" # 显式绕过执行策略,用绝对路径调用安装脚本 & powershell.exe -ExecutionPolicy Bypass -File $installScript Install 'NonInteractive' Write-Output "目标设备安装命令执行完成,退出码:$LASTEXITCODE" } # 执行完成后清理会话 Remove-PSSession -Session $PSSession } else { Write-Error "无法连通目标设备 $CName,请检查设备名和网络状态" }
部署注意事项
- 运行脚本的账号需具备目标设备的本地管理员权限
- 目标设备需提前开启WinRM服务(远程PowerShell的依赖服务)
- 批量多设备部署时,可将弹窗输入设备名的逻辑替换为从TXT文件读取设备列表循环执行,无需逐个输入
内容的提问来源于stack exchange,提问作者Fluffarmy223
相关产品推荐
相关产品推荐

