Por que esse código do PowerShell funciona separadamente no PS, mas falha em um script?

2

Eu tenho este bloco no meu script de implantação que estou executando na máquina de compilação. Ele deve mover arquivos na máquina de teste da pasta Instalações para a pasta de aplicativos.
Antes deste bloco, existem várias outras ações executadas com êxito com Invoke-Session

write-host "Deploying" -foregroundcolor red -backgroundcolor yellow
invoke-command -session $s {
    Get-ChildItem -Path "C:\Install\pre_master" | Copy-Item -Destination "C:\inetpub\wwwroot\pre_master" -force -Recurse 
}

Se eu criar uma sessão manualmente no PS e colar esse bloco, tudo funcionará bem.

Se eu executar o script, este passo me atingirá com milhões (para cada arquivo que estou tentando mover, suponho?)

The input object cannot be bound to any parameters for the command either because the command does not take pipeline in put or the input and its properties do not match any of the parameters that take pipeline input. + CategoryInfo : InvalidArgument: (0201-KS.xml:PSObject) [Copy-Item], ParameterBindingException + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.CopyItemCommand

Então, minha pergunta é: Por que esse mesmo bloco de código funciona no PS quando executado manualmente. mas não funciona no script?

Ambas as máquinas têm powershell 2.0

    
por evictednoise 24.11.2016 / 13:58

1 resposta

0

Ainda não sei por que, mas você não pode usar o pipeline quando executa alguns cmdlets usando a sessão remota. Você pode primeiro armazenar o resultado de um cmdlet em uma variável e, em seguida, gravar um loop foreach para canalizar o resultado do cmdlet para outro cmdlet.

Por exemplo, primeiro você pode armazenar o resultado de um cmdlet em uma variável e, em seguida, gravar um loop foreach para copiar os arquivos:

invoke-command -session $s {
    $files = Get-ChildItem -Path "C:\Install\pre_master"; Foreach($file in $files) { Copy-Item -Path $file -Destination "C:\inetpub\wwwroot\pre_master" -force Recurse} 
} 
    
por 24.11.2016 / 14:25

Tags