Проблемы с использованием Invoke-Command с ScriptBlock и -ArgumentList

Я новичок в PowerShell и не могу понять, почему я получаю следующую ошибку

Invoke-Command: не найден позиционный параметр, который принимает аргумент D: \ Deploy \ file.zip. В D: \ source \ Scripts \ Build-Deploy \ Build-Deploy \ ServersDeploy.ps1: 105 символов: 5

  • Invoke-Command -ComputerName $ servers -ScriptBlock {
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • CategoryInfo : InvalidArgument: (:) [Invoke-Command], ParameterBindingException
    • FullyQualifiedErrorId: PositionalParameterNotFound, Microsoft.PowerShell.Commands.InvokeCommandCommand

Это запускаемый скрипт

params([string[[]]$servers, [string]$dest_package_path, [string]$src_package_path,[string]$deploy_script)

Invoke-Command -ComputerName $servers -ScriptBlock {
    param($dest_package_path,$src_package_path,$deploy_script) 
    Write-Output "Destination path = $dest_package_path"
    Write-Output "Copying zip $src_package_path to the destination host"
    New-Item -ItemType Directory -Force -Path $dest_package_path
    Write-Output "Directory Created"
    Copy-Item -Path $src_package_path -Destination $dest_package_path -Force        

    Write-Host "Copying remote deploy scripts to the destination host"
    Copy-Item -Path $deploy_script -Destination $dest_package_path -Force
} -ArgumentList $dest_package_path $src_package_path $deploy_script

person BigUnit5150    schedule 10.03.2017    source источник


Ответы (1)


Потому что вы разделили аргументы пробелами вместо запятой. Это делает их новыми аргументами для Invoke-Command.

-ArgumentList единственный параметр, который принимает массив:

Invoke-Command -ComputerName $servers -ScriptBlock {
    # Stuff
} -ArgumentList $dest_package_path,$src_package_path,$deploy_script
person briantist    schedule 10.03.2017