Invoque um segundo script com argumentos de um script

Sou relativamente novo no PowerShell e tenho um script que lê um arquivo de configuração que resulta em um conjunto de pares de valores de nome que gostaria de passar como argumentos para uma função em um segundo script do PowerShell.

Não sei quais parâmetros serão colocados nesse arquivo de configuração em tempo de design, portanto, no ponto em que preciso invocar esse segundo script do PowerShell, basicamente tenho apenas uma variável que tem o caminho para esse segundo script e uma segunda. variável que é uma matriz de argumentos para passar para o script identificado na variável de caminho.

Portanto, a variável que contém o caminho para o segundo script ($ scriptPath) pode ter um valor como:

"c:\the\path\to\the\second\script.ps1"

A variável contendo os argumentos ($ argumentList) pode ser algo como:

-ConfigFilename "doohickey.txt" -RootDirectory "c:\some\kind\of\path" -Max 11

Como obtenho deste estado de coisas para a execução de script.ps1 com todos os argumentos de $ argumentList?

Eu gostaria que qualquer comando write-host desse segundo script ficasse visível no console a partir do qual esse primeiro script é invocado.

Eu tentei dot-sourcing, Invoke-Command, Invoke-Expression e Start-Job, mas não encontrei uma abordagem que não produza erros.

Por exemplo, achei que a primeira rota mais fácil foi tentar o Start-Job chamado da seguinte forma:

Start-Job -FilePath $scriptPath -ArgumentList $argumentList

... mas isso falha com este erro:

System.Management.Automation.ValidationMetadataException:
Attribute cannot be added because it would cause the variable
ConfigFilename with value -ConfigFilename to become invalid.

... neste caso, "ConfigFilename" é o primeiro parâmetro na lista de parâmetros definida pelo segundo script, e minha invocação aparentemente está tentando definir seu valor como "-ConfigFilename", que obviamente tem como objetivo identificar o parâmetro por nome , não defina seu valor.

o que estou perdendo?

EDITAR:

Ok, aqui está um mock-up do script to-be-called, em um arquivo chamado invokee.ps1

Param(
[parameter(Mandatory=$true)]
[alias("rc")]
[string]
[ValidateScript( {Test-Path $_ -PathType Leaf} )]
$ConfigurationFilename,
[alias("e")]
[switch]
$Evaluate,
[array]
[Parameter(ValueFromRemainingArguments=$true)]
$remaining)

function sayHelloWorld()
{
    Write-Host "Hello, everybody, the config file is <$ConfigurationFilename>."
    if ($ExitOnErrors)
    {
        Write-Host "I should mention that I was told to evaluate things."
    }
    Write-Host "I currently live here: $gScriptDirectory"
    Write-Host "My remaining arguments are: $remaining"
    Set-Content .\hello.world.txt "It worked"
}

$gScriptPath = $MyInvocation.MyCommand.Path
$gScriptDirectory = (Split-Path $gScriptPath -Parent)
sayHelloWorld

... e aqui está um mock-up do script de chamada, em um arquivo chamado invokee.ps1:

function pokeTheInvokee()
{
    $scriptPath = (Join-Path -Path "." -ChildPath "invokee.ps1")
    $scriptPath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($scriptPath)

    $configPath = (Join-Path -Path "." -ChildPath "invoker.ps1")
    $configPath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($configPath)

    $argumentList = @()
    $argumentList += ("-ConfigurationFilename", "`"$configPath`"")
    $argumentList += , "-Evaluate"

    Write-Host "Attempting to invoke-expression with: `"$scriptPath`" $argumentList"
    Invoke-Expression "`"$scriptPath`" $argumentList"
    Invoke-Expression ".\invokee.ps1 -ConfigurationFilename `".\invoker.ps1`" -Evaluate
    Write-Host "Invokee invoked."
}

pokeTheInvokee

Quando eu executo invoker.ps1, este é o erro que estou recebendo atualmente na primeira chamada para Invoke-Expression:

Invoke-Expression : You must provide a value expression on
the right-hand side of the '-' operator.

A segunda chamada funciona muito bem, mas uma diferença significativa é que a primeira versão está usando argumentos cujos caminhos têm espaços, e o segundo não. Estou maltratando a presença de espaços nesses caminhos?

questionAnswers(7)

yourAnswerToTheQuestion