können wir tun, mit Microsoft.Azure.Management.Fluent und WindowsAzure.Storage.
Ich erstelle eine Demo für sie und es funktioniert für mich richtig. Das Folgende ist meine Detailschritte.
Wie Sie erwähnten link. Zuerst müssen wir die VM freigeben. Vorher müssen wir die Authentifizierung für die Betriebsressource in Azure anfordern.
1.Get Azure-Objekt mit einer Authentifizierungsdatei, wie Sie eine Authentifizierungsdatei erstellen, finden Sie unter document. Vorher müssen wir eine Azure AD-Anwendung registrieren und die entsprechende Rolle zuweisen, weitere Details finden Sie unter document. Dann können wir die Client-ID, den Schlüssel (geheimen Schlüssel) und den Mandanten von der Azure AD-App abrufen. Das Dateiformat wie folgt
subscription=########-####-####-####-############
client=########-####-####-####-############
key=XXXXXXXXXXXXXXXX
tenant=########-####-####-####-############
managementURI=https\://management.core.windows.net/
baseURL=https\://management.azure.com/
authURL=https\://login.windows.net/
graphURL=https\://graph.windows.net/
das Objekt zu erstellen
var credentials = SdkContext.AzureCredentialsFactory.FromFile(@"path of authentication file");
var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.BASIC)
.Authenticate(credentials)
.WithDefaultSubscription()
2.Deallocate die VM mit C# -Code.
azure.VirtualMachines.PowerOff(resourcegroup,vmName); //shutdown the VM
azure.VirtualMachines.Deallocate(resourcegroup, vmName); //deallocate the VM
3.Get der VM Disk-Vhd uri Info mit Code
var vm = azure.VirtualMachines.GetByGroup(resourcegroup, vmName);
string vhdUri= vm.StorageProfile.OsDisk.Vhd.Uri; //result : https://storageaccountname.blob.core.windows.net/vhds/blob.vhd
4.Von die vhduri dann können wirSpeicherkonto und blobname bekommen.
5.Starten Sie, um den Blob in den Zielcontainer zu kopieren. Weitere Informationen zur Verwendung von Blob finden Sie im Dokument.
var account = azure.StorageAccounts.GetByGroup(resourcegroup,storageaccount);
var key = account.GetKeys()[0];
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("connectionstring");
// Create a CloudFileClient object for credentialed access to File storage.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("tomvhds");
CloudBlobContainer sourceBlobContainer = blobClient.GetContainerReference("vhds");
container.CreateIfNotExists();
CloudPageBlob destBlob = container.GetPageBlobReference(destinationBlob);
CloudPageBlob sourcePageBlob = sourceBlobContainer.GetPageBlobReference(sourceblob);
destBlob.StartCopy(sourcePageBlob);
copyVhdurl = destBlob.Uri.ToString();
6.Create die Scheibe für vm Erstellen
var disk = azure.Disks.Define("diskname")
.WithRegion(location)
.WithExistingResourceGroup(resourcegroup)
.WithWindowsFromVhd(copyvhduri)
.Create();
7.Create die VM und aus dem Azure-Portal
var windowsVm = azure.VirtualMachines.Define(machinename)
.WithRegion(location) //eastasia
.WithNewResourceGroup(resourcegroupName)
.WithNewPrimaryNetwork("10.0.0.0/28")
.WithPrimaryPrivateIpAddressDynamic()
.WithNewPrimaryPublicIpAddress("dnslab")
.WithSpecializedOsDisk(disk, OperatingSystemTypes.Windows)
.WithSize(VirtualMachineSizeTypes.StandardA0)
.Create();
überprüfen 0 packages.config Datei
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.Azure.Management.AppService.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Batch.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Cdn.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Compute.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Dns.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Graph.RBAC.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.KeyVault.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Network.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Redis.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.ResourceManager.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Sql.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.Storage.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Azure.Management.TrafficManager.Fluent" version="1.0.0-beta50" targetFramework="net452" />
<package id="Microsoft.Data.Edm" version="5.8.2" targetFramework="net452" />
<package id="Microsoft.Data.OData" version="5.8.2" targetFramework="net452" />
<package id="Microsoft.Data.Services.Client" version="5.8.2" targetFramework="net452" />
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.3" targetFramework="net452" />
<package id="Microsoft.Rest.ClientRuntime" version="2.3.5" targetFramework="net452" />
<package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.5" targetFramework="net452" />
<package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.2.10" targetFramework="net452" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net452" />
<package id="System.ComponentModel.EventBasedAsync" version="4.0.11" targetFramework="net452" />
<package id="System.Dynamic.Runtime" version="4.0.0" targetFramework="net452" />
<package id="System.Linq.Queryable" version="4.0.0" targetFramework="net452" />
<package id="System.Net.Requests" version="4.0.11" targetFramework="net452" />
<package id="System.Spatial" version="5.8.2" targetFramework="net452" />
<package id="WindowsAzure.Storage" version="8.1.1" targetFramework="net452" />
</packages>
Werfen Sie einen Blick auf Microsoft.WindowsAzure.Management.Berechnen Sie https://msdn.microsoft.com/en-us/library/dn722415.aspx https://www.nuget.org/packages/Microsoft.WindowsAzure.Management.Compute/ – Lanorkin