Estou tentando executar um trabalho de pipeline no Azure Devops usando o PowerShell para instalar o .Net SDK em meus servidores.
Isso funciona
# Install sdk on each server
Invoke-Command -ComputerName $buildServers -Credential $credential {
c:\temp\dotnet-sdk-8.0.303-win-x64.exe /install /quiet /norestart" | Out-Null
}
Mas quando tento transformar o exe em uma variável $ sdkVersion, não recebo um erro, mas certamente não o instala.
# Install sdk on each server
$sdkVersion = 'dotnet-sdk-8.0.303-win-x64.exe'
Invoke-Command -ComputerName $buildServers -Credential $credential {
"c:\temp\$sdkVersion /install /quiet /norestart" | Out-Null
}
PS Se houver uma maneira mais fácil de fazer isso, sugira-a aqui.
"c:\temp\$sdkVersion /install /quiet /norestart"
está apenas criando uma string que é enviada$null
viaOut-Null
. Além disso,$sdkVersion
também$null
não existe no contexto da invocação paralela. Você pode usar o$using:
modificador de escopo para passar o valor da variável para esse escopo. O que você precisa fazer é primeiro construir o caminho para o seu executável e,"c:\temp\$using:sdkVersion"
em seguida, invocá-lo usando&
ou.
e adicionar os argumentos necessários conforme necessário.