Pergunta

Eu tenho um script do PowerShell atualizando minha solução:

Add-PSSnapin Microsoft.SharePoint.PowerShell
write-host $args[0]
Update-SPSolution -Identity PkbInfo.SP.wsp -literalpath $args[0] -GACDeployment 

Quando eu o executo com o shell de gerenciamento do SP 2010 (sem Add-PSSnapin, é claro), ele funciona bem, mas quando tento executá-lo com o comando nant:

  <target name="sp.update">
    <exec failonerror="true" program="${powershell.exe}">   
    <arg value="-noprofile" />
    <arg value="-nologo" />
    <arg value="-noninteractive" />
    <arg value="-command" />
    <arg value="${ps.script.name} ${ps.copyto.folder}" />
    </exec>
  </target>

Eu recebo um erro:

     [exec] Update-SPSolution : c:\shared\PkbInfo.wsp: The specified file was no
t found.
     [exec] At C:\Users\me\Documents\production\sharepoint\nant_powershell
.ps1:5 char
     [exec] :18
     [exec] + Update-SPSolution <<<<  -Identity PkbInfo.SP.wsp -literalpath $arg
s[0] -GACDe
     [exec] ployment
     [exec]     + CategoryInfo          : ReadError: (:) [Update-SPSolution], Fi
leNotFound
     [exec]    Exception
     [exec]     + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdl
etUpdateSo
     [exec]    lution
     [exec]
     [exec] Update-SPSolution : Zgłoszono wyjątek typu 'Microsoft.SharePoint.Pow
erShell.SPC
     [exec] mdlet+SkipCurrentRecordException'.

Parece que o argumento que estou passando não foi analisado, o que é estranho, porque Write-Host em ambos os casos (com shell de gerenciamento e nant) exibe o caminho correto.Alguma idéia de por que $args[0] em Update-SPSolution não é convertido em argumento real ao executar com nant?

Foi útil?

Solução

Tente colocar um $() em torno do seu caminho literal, assim:

Update-SPSolution -Identity PkbInfo.SP.wsp -literalpath $($args[0]) -GACDeployment  

Você também pode usar Resolve-Path se o seu caminho for relativo

Numa nota lateral:lembre-se disso Update-SPSolution apenas funciona desde que você atualize os artefatos existentes (por exemplo.nenhum módulo/recurso/arquivo root novo ou excluído)

Outras dicas

Você tenta executar:

Update-SPSolution -Identity PkbInfo.SP.wsp 

E você recebe o erro:

 [exec] Update-SPSolution : c:\shared\PkbInfo.wsp: The specified file was no  
t found.

Verifique o nome do seu arquivo :)

(Eu sei que você pode ter identidade e nome de arquivo diferentes, mas ninguém muda isso, certo?)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top