BigUnit5150
BigUnit5150

Reputation: 11

Trouble using Invoke-Command with ScriptBlock and -ArgumentList

I'm new to powershell and can't figure why I get the following error

Invoke-Command : A positional parameter cannot be found that accepts argument 'D:\Deploy\file.zip'. At D:\source\Scripts\Build-Deploy\Build-Deploy\ServersDeploy.ps1:105 char:5

This is the script being run

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

Upvotes: 0

Views: 2752

Answers (1)

briantist
briantist

Reputation: 47862

Because you separated the arguments with spaces instead of a comma. That makes them new arguments to Invoke-Command.

-ArgumentList a single parameter that takes an array:

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

Upvotes: 4

Related Questions