human
C＃を使用して特定の環境変数を使用してAzure VMを作成するにはどうすればよいですか？VMのオペレーティングシステムはWindows 11でなければなりません。
gpt
C#とWindows 11を使って特定の環境変数を持つAzure VMを作成するには、以下の手順に従う必要がある：

1.パッケージ・マネージャー・コンソールで以下のコマンドを実行して、Azure Management Libraries for .NETをインストールする：
``` 
Install-Package Microsoft.Azure.Management.Fluent
```
2.Azure Active Directory（AD）アプリを作成し、必要な権限を付与して認証を設定します。これは、AzureポータルまたはAzure CLIで行うことができます。アプリをセットアップした後、テナントID、クライアントID、クライアントシークレットを取得します。

3.Visual Studio で C# コンソールアプリケーションを作成し、以下の名前空間を追加します：
``` 
using Microsoft.Azure.Management.Compute.Fluent;
using Microsoft.Azure.Management.Compute.Fluent.Models;
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;
using System;
```
4.以下のコードを追加して、特定の環境変数を持つ Windows 11 VM を作成する：
``` 
public static async Task Main(string[] args)
{
    // Fill in your Azure AD app credentials
    var clientId = "YOUR_CLIENT_ID";
    var clientSecret = "YOUR_CLIENT_SECRET";
    var tenantId = "YOUR_TENANT_ID";
    var subscriptionId = "YOUR_SUBSCRIPTION_ID";

    // Authenticate with Azure
    var credentials = new AzureCredentials(new ServicePrincipalLoginInformation
    {
        ClientId = clientId,
        ClientSecret = clientSecret
    }, tenantId, AzureEnvironment.AzureGlobalCloud);

    // Initialize the Azure management client
    var azure = Azure.Authenticate(credentials).WithSubscription(subscriptionId);

    // Set up the VM configuration
    var groupName = "yourResourceGroup";
    var vmName = "yourVmName";
    var location = Region.USWest;

    // Create or update the resource group
    var resourceGroup = await azure.ResourceGroups.Define(groupName)
        .WithRegion(location)
        .CreateAsync();

    // Define the VM
    var vm = await azure.VirtualMachines.Define(vmName)
        .WithRegion(location)
        .WithExistingResourceGroup(resourceGroup)
        .WithNewPrimaryNetwork("10.0.0.0/28")
        .WithPrimaryPrivateIPAddressDynamic()
        .WithNewPrimaryPublicIPAddress("yourPublicIP")
        .WithPopularWindowsImage(KnownWindowsVirtualMachineImage.Windows11Pro)
        .WithAdminUsername("yourAdminUsername")
        .WithAdminPassword("yourAdminPassword")
        .WithSize(VirtualMachineSizeTypes.StandardD2sV3)
        .DefineNewExtension("CustomScriptExtension")
            .WithPublisher("Microsoft.Compute")
            .WithType("CustomScriptExtension")
            .WithVersion("1.10")
            .WithMinorVersionAutoUpgrade()
            .WithPublicSetting("fileUris", new List<string> { "https://yourScriptUrl/set-environment-variables.ps1" })
            .WithPublicSetting("commandToExecute", "powershell -ExecutionPolicy Unrestricted -File set-environment-variables.ps1")
            .Attach()
        .CreateAsync();

    Console.WriteLine("VM created!");
}
```
5.プレースホルダーを実際の Azure 認証情報およびその他の詳細情報に置き換えます。また、https://yourScriptUrl/set-environment-variables.ps1 を、環境変数を設定する PowerShell スクリプトの実際の URL に置き換える必要があります。

6.set-environment-variables.ps1 という名前の PowerShell スクリプトを作成し、一般にアクセス可能な場所にアップロードします。このスクリプトは、次のように目的の環境変数を設定します：
```
[System.Environment]::SetEnvironmentVariable("VAR_NAME1", "VAR_VALUE1", [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable("VAR_NAME2", "VAR_VALUE2", [System.EnvironmentVariableTarget]::Machine)
# Add more environment variables as needed

# Restart the VM to apply the environment variables
Restart-Computer -Force
```
VAR_NAME1、VAR_VALUE1、VAR_NAME2、およびVAR_VALUE2を、希望の環境変数名と値に置き換えます。必要に応じてさらに行を追加し、追加の環境変数を設定する。

このスクリプトは、マシン・レベルで環境変数を設定する。特定のユーザーに設定したい場合は、[System.EnvironmentVariableTarget]::Machineを[System.EnvironmentVariableTarget]::Userに置き換えてください。

これらの手順を完了すると、C# コンソール・アプリケーションは、指定された環境変数を持つ Azure VM を作成します。VMのオペレーティングシステムはWindows 11になります。Windows 11 イメージがまだ利用可能でない場合は、コード内の KnownWindowsVirtualMachineImage 列挙を更新する必要があるかもしれないことに注意してください。この場合、Windows Server イメージを使用し、手動で Windows 11 にアップグレードします。
human
詳細な説明をありがとう！C＃を使用して作成プロセス中にVMにデータディスクを追加する方法を教えてください。