我有一个如下的脚本

[string] $ newValue = Get-ConfigurationByType $ setting.Value

在此行之后,$ newValue的值为

“http://ST- $($ partner.Alias).vardiaforsakring.se/CardPaymentAgreementCallback.aspx”

在循环中,我调用ExpandString
foreach ($partner in $partners){ $partnerSpecificValue =$ExecutionContext.InvokeCommand.ExpandString($newValue)}
引发异常

“使用” 1“参数调用” ExpandString“的异常:”对象引用未设置为对象的实例。“
在C:\Programs\Drops\Hydra_SE_v1.28\HydraDeploymentFunctions.ps1:342 char:5
+ $ partnerSpecificValue = $ ExecutionContext.InvokeCommand.ExpandString($ newVal ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo:未指定:(:) [],MethodInvocationException
+ FullyQualifiedErrorId:NullReferenceException

但是,当我尝试输入硬编码字符串时,它将无异常(exception)地返回预期结果

$ partnerSpecificValue = $ ExecutionContext.InvokeCommand.ExpandString(“http://ST- $($ partner.Alias).vardiaforsakring.se/CardPaymentAgreementCallback.aspx”)

$ partnerSpecificValue的值为

http://ST-secure.vardiaforsakring.se/CardPaymentAgreementCallback.aspx

有谁知道解决此错误的解决方法?非常感谢你。我在Windows Server 2012 R2上运行PowerShell v4.0。

最佳答案

ExpandString有问题,在一般情况下无法正常工作。我改用这种方法:

function render() {
    [CmdletBinding()]
    param ( [parameter(ValueFromPipeline = $true)] [string] $str)

    "@`"`n$str`n`"@" | iex
}

例子:
$x=@{test='test'}
'Hashtable x contains value $($x.test)' | render

关于powershell - ExecutionContext.InvokeCommand.ExpandString在PowerShell 4.0中引发异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29665148/

10-13 08:25