如何通过PSSession调用PowerShell 7执行原PS5环境脚本?
在PowerShell 7远程会话中执行脚本的方法
要让原脚本切换到PowerShell 7环境执行,只需调整远程会话的创建方式,并修正变量传递逻辑:
指定PowerShell 7会话配置
创建远程会话时,通过-ConfigurationName参数指定PowerShell 7的会话配置。默认情况下,PS7安装后会自动注册名为PowerShell.7的配置(若远程机器未注册,需先在目标机器上运行Register-PSSessionConfiguration -Name PowerShell.7 -Force完成配置)。修正远程变量引用
远程会话无法直接访问本地变量,必须在变量前添加Using:前缀,才能将本地变量的值传递到远程环境。
修改后的完整脚本:
$Tenant = 'user' $TenantPass = ConvertTo-SecureString 'pwd' -AsPlainText -Force [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Tenant, $TenantPass # 创建PowerShell 7远程会话 $s = New-PSSession -ComputerName 'sv1' -Credential $credential -ConfigurationName PowerShell.7 Invoke-Command -Session $s -Command { # 使用Using:前缀传递本地变量 & 'C:\file.ps1' -TenantUname $Using:Tenant -newMail '<AD_email/>' -licensa '<CodigoExterno/>' -estado $Using:<isActivar/> } Remove-PSSession $s
如果不确定远程机器上的PS7会话配置名称,可在目标机器上执行Get-PSSessionConfiguration命令,查看已注册的PowerShell 7相关配置名称后替换即可。
内容的提问来源于stack exchange,提问作者Tiago Oliveira
相关产品推荐
相关产品推荐

