我正在尝试使用启动任务在azure批处理节点上安装.net core 2.2吗?我尝试在启动任务中使用的命令如下:
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Runtime dotnet -Version 2.2.5"
启动任务失败。此外,如果我在节点上手动运行脚本,则它不是在安装.net core sdk。
有帮助吗?
答案 0 :(得分:1)
这可能是个老问题,但我会写出对我有用的内容。正如 Mike 尝试做的那样,我还使用启动任务和 powershell 脚本在 Azure Batch 节点上安装了 .net 核心。
我确认,dot net core 确实安装在不同的位置,并且路径没有导出到环境变量,而只被当前进程使用。这就是它实际上不起作用的原因
所以我在上面的开始任务代码中做了 2 个更改
参考下面的代码,让这件事起作用
powershell "if(!([Environment]::GetEnvironmentVariable('Path', 'Machine') -split ';' -contains \"$Env:ProgramFiles\dotnet\\\")) {[Environment]::SetEnvironmentVariable('Path', \"$([Environment]::GetEnvironmentVariable('Path', 'Machine'));$Env:ProgramFiles\dotnet\\\",'Machine');}"
powershell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Channel LTS -InstallDir \"$Env:ProgramFiles\dotnet\\\""
此后,我可以在机器上运行我的 .net 核心代码
答案 1 :(得分:0)
古尔所说的是正确的。您可以在启动任务中通过resourceFiles安装安装文件。从那里,您可以简单地设置starttask命令行以首先指向启动任务工作目录(将在该目录中下载文件)并运行setup命令。
此处进一步解释:https://docs.microsoft.com/en-us/azure/batch/batch-api-basics#start-task
您可以在以下位置找到批处理环境变量:https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables。建议您使用它们。如果您使用这些目录的显式路径,Microsoft可以随时更改它的路径,这将在重新引导节点,重新镜像或将新节点分配给池时引入其他问题。