Pergunta

Integração contínua

Eu tenho trabalhado em um script do PowerShell para manter nosso processo de desenvolvimento simplificado. Eu estava planejando executá-lo como um evento pós-construção, mas estou tendo alguns problemas.

No prompt PowerShell, o seguinte funciona maravilhosamente:

PS C:\> ./example.ps1

No entanto, ao tentar executar isso de cmd.exe do seguinte modo:

C:\> powershell -command "&\"C:\path to script\example.ps1\""

O script é executado, mas eu recebo uma rodada de erros de volta do PowerShell, consistindo principalmente de erros de resolução de caminho do resolve-path função:

Resolve-Path: Não é possível encontrar caminho 'C: Documentos e Configurações Bdunbar My Documents Visual Studio 2008 Projects CGMfamilyComm FamilyComm iirf cms isapirewrite4.dl l' porque não existe. Em C: Documentos e Configurações Bdunbar My Documents Visual Studio 2008 Projects C GmfamilyComm Scripts cms.ps1: 4 char: 27 + $ iirfpath = (resolve-path <<< ../iirf/cms /isaPirewrite4.dll).path,

Resolve-Path: Não é possível encontrar o caminho 'C: Documentos e Configurações Bdunbar My Documents Visual Studio 2008 Projects CGMfamilyComm FamilyComm FamilyComm' porque não existe. Em C: Documentos e Configurações Bdunbar My Documents Visual Studio 2008 Projects C GmfamilyComm Scripts cms.ps1: 5 char: 27 + $ vdirpath = (resolve-path <<<< ../familyComm). caminho

Existe uma maneira de contornar isso? Poderia ser um problema com a corrida resolve-path debaixo cmd.exe?

Atualizar

Consegui mudar as coisas para contornar os erros que estão ocorrendo, mas ainda recebo erros que funcionam perfeitamente bem do prompt de comando do PowerShell. Não consigo descobrir qual é a diferença.

Foi útil?

Solução

Eu fiz esse trabalho no passado (veja http://sharepointpdficon.codeplex.com/sourcecontrol/changeset/view/13092#300544 se estiver interessado):

C: Windows System32 WindowsPowershell V1.0 PowerShell.exe -nologo -noninteractive -Command. '$ (ProjectDir) implantação postbuildScript.ps1' -projectdir: '$ (ProjectDir)' -configurationName: '$ ) '-Targetdir:' $ (TargetDir) '-targetFilename:' $ (TargetFileName) '-targetName:' $ (TargetName)

Em seguida, jogue esses parâmetros na primeira linha do seu script pós-construção (se você acha que poderá usá-los):

param($ProjectDir, $ConfigurationName, $TargetDir, $TargetFileName)

Também devo salientar, não estou usando isso atualmente. Gostei de usá -lo como um rápido scratchpad para recarregar os dados do teste para executar testes de integração.

Outras dicas

Parece que o seu problema é como os caminhos relativos são resolvidos. Caminhos relativos são resolvidos com base no local atual (armazenado em $pwd) e não com base na localização do script. Então, se você lançou o script de C:\, definitivamente não funcionaria.

Eu sugiro que você calcule os caminhos com base em um argumento (como Peter Seale mostra) ou pegue a localização real do script de:

$MyInvocation.MyCommand.Path
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top