Запуск exe-файла на удаленной виртуальной машине Azure из приложения-функции .NET 8 C#.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Запуск exe-файла на удаленной виртуальной машине Azure из приложения-функции .NET 8 C#.

Сообщение Anonymous »

Мне поручено написать приложение-функцию на C#, которое будет отвечать за запуск exe-файла на удаленной виртуальной машине. Я пытаюсь использовать Azure.ResourceManager SDK для этого, но не могу понять, как создать RunCommandInput.
Вот что мой код выглядит так:

Код: Выделить всё

public async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req)
{
_logger.LogInformation("Invoking remote executable on Windows VM using RunCommand");

// Azure authentication and setup
string tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
string clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
string clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");
string subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
string resourceGroupName = "YOUR_RESOURCE_GROUP";
string vmName = "YOUR_VM_NAME";

// Use DefaultAzureCredential for authentication
var credential = new DefaultAzureCredential();

// Initialize Azure resource manager client
var armClient = new ArmClient(credential, subscriptionId);

// Get the specific VM resource
var subscription = armClient.GetSubscriptionResource(new ResourceIdentifier($"/subscriptions/{subscriptionId}"));
ResourceGroupResource resourceGroup = subscription.GetResourceGroup(resourceGroupName);
VirtualMachineResource vmResource = resourceGroup.GetVirtualMachine(vmName);

try
{
// Use Azure Compute's RunCommand to execute a PowerShell script on the VM
var runCommandInput = new RunCommandInput("RunPowerShellScript");
//{
//    Script = new List { commandToExecute },
//    Parameters = new List {}
//};

_logger.LogInformation("Running command on VM...");

// Execute the command
var runCommandResult = await vmResource.RunCommandAsync(WaitUntil.Completed, runCommandInput);

// Log the result
//_logger.LogInformation($"Command executed successfully. Status: {runCommandResult.Value.Status}");
}
catch (RequestFailedException ex)
{
_logger.LogError($"Failed to execute command on VM: {ex.Message}");
}

return new OkObjectResult("OK");
}
Теперь в классе RunCommandInput есть поля, называемые параметрами и сценариями, но они оба доступны только для чтения и не могут быть назначены напрямую, и я не нашел никаких вспомогательных методов/расширений, которые бы установит эти поля.
Существует конструктор, который устанавливает эти поля, но это внутренний конструктор, поэтому я не могу его вызвать.
Здесь — это ссылка на исходный код этого класса: https://github.com/Azure/azure-sdk-for- ... mmandInput .cs
Может кто-нибудь объяснить, как мне использовать класс RunCommandInput, поскольку в Интернете очень мало информации или вообще ее нет.
Кроме того, действительно ли мое решение работоспособно или его невозможно достичь с помощью ARM SDK?

Подробнее здесь: https://stackoverflow.com/questions/791 ... nction-app
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»