powershell - ExecutionContext.InvokeCommand.ExpandString 在 PowerShell 4.0 中引发异常

标签 powershell powershell-4.0

我有一个脚本如下

[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 字符:5
+ $partnerSpecificValue = $ExecutionContext.InvokeCommand.ExpandString($newVal ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullQualifiedErrorId : 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/

相关文章:

xml - 使用 '' #text'' 和 InnerText XML (Powershell) 之间的区别

powershell - PowerShell-远程运行Windows命令

powershell - 在文本文件的两列之一中查找重复值

powershell - 从Powershell将参数传递给InstallUtil

powershell - 您的租户已禁用此服务。不允许你使用此 cmdlet - Skype Online

powershell - 如何从使用组对象创建的每个组中查找最新日期

powershell - 如何增加 VM 上的并发 PowerShell 实例数?

powershell - 无法从独立服务器运行 PowerShell 群集 cmdlet

c# - Powershell v4 不自动导入模块