如何在 Azure Batch 任务中调用预安装的应用程序?

How I can call pre-installed application in Azure Batch task?

我将 sqlcmd 实用程序安装到 Azure Batch 节点(这是常规 windows VM)。所以,我在这个 VM 上有 bcp 实用程序。如何在 Azure Batch 作业中指定 bcp.exe 的路径?

 using (BatchClient batchClient = BatchClient.Open(cred))
{
    string jobId = "1";
    CloudJob job = batchClient.JobOperations.GetJob(jobId);
    job.Commit();        

    string taskCommandLine = String.Format("cmd c/ 'D:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\bcp.exe'");

    string uniqueIdentifier = Regex.Replace(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), "[/+=]", "");
    string taskId = String.Format(name.Replace(".", string.Empty) + "-" + uniqueIdentifier);

    CloudTask task = new CloudTask(taskId, taskCommandLine);
    task.UserIdentity = new UserIdentity(new AutoUserSpecification(elevationLevel: ElevationLevel.Admin, scope: AutoUserScope.Task));

    batchClient.JobOperations.AddTask(jobId, task);
}

这样指定完整路径的方式是否正确
string taskCommandLine = String.Format("cmd c/ 'D:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\bcp.exe'");

您有几种方法可以在不同的路径中启动命令:

  1. PATHenvironment variable中指定可执行目录。确保您使用的是 shell 命令 (cmd.exe).
  2. 将您的工作目录更改为包含可执行文件的正确目录
  3. 根据任务命令行中的 post 指定完整路径。

对于您的特定情况,您的命令格式不正确。用cmd.exe执行时,应该是cmd.exe /c <your command>.