Powershell 如何将开始作业参数列表转换为正确的值

Powershell 如何将开始作业参数列表转换为正确的值,powershell,Powershell,由于我们能够读取脚本参数的默认值。有时,参数可能包含一个环境变量: #$script=c:\myScripts.ps1 Param( [String]$LogFolder=“\\$env:COMPUTERNAME\Log”, [String[]$ComputerName=@('PC1',$env:ComputerName) ) 当将其输入到开始作业的-ArgumentList时,它不会转换为值,因此执行的脚本失败: VERBOSE: Parameter name 'LogFolder' val

由于我们能够读取脚本参数的默认值。有时,参数可能包含一个环境变量:

#$script=c:\myScripts.ps1
Param(
[String]$LogFolder=“\\$env:COMPUTERNAME\Log”,
[String[]$ComputerName=@('PC1',$env:ComputerName)
)
当将其输入到
开始作业的
-ArgumentList
时,它不会转换为值,因此执行的脚本失败:

VERBOSE: Parameter name 'LogFolder' value '\\$env:COMPUTERNAME\Log'
VERBOSE: Parameter name 'ComputerName' value 'PC1', '$env:COMPUTERNAME'
有没有办法让powershell将其转换为正确的值?在这种特定情况下,它只涉及一个
字符串
,但也可以是
字符串
的数组

期望的结果

VERBOSE: Parameter name 'LogFolder' value '\\myComputerName\Log'
VERBOSE: Parameter name 'ComputerName' value 'PC1', 'myComputerName'
多亏了我们找到了我们想要的东西:

$ExecutionContext.InvokeCommand.ExpandString(“环境:\COMPUTERNAME”)