Artikel über Microsoft Biceps im IT-Administrator

In der aktuellen Ausgabe 11/23 vom IT-Administrator ist von mir ein Artikel über Microsoft Biceps erschienen. Wer damit nichts anfangen kann, einfach das Heft kaufen 🙂

AI in Azure und in der PowerPlatform

Dieser Artikel liefert eine Übersicht über die AI Komponenten von Microsoft in Azure und in der PowerPlatform.

Das Thema AI ist ein Thema, welche viele Entscheider umtreibt und vor dem gleichzeitig viele IT-Entscheider und Mitarbeiter noch etwas ratlos stehen. Abgesehen von der technischen Problematik ist das Thema an sich schwer zu greifen. In der „klassischen“ IT wird von einer Anforderung zu einem erwartenden Ergebnis gearbeitet. Ein Server soll installiert, ein Postfach verschoben werden. Das Ergebnis ist binär, entweder geht es oder eben nicht. Das trifft auf AI nur bedingt zu.

Sicher liefert eine AI Ergebnisse, aber ob damit ein Auftraggeber zufrieden ist, ist die andere Frage. Bei einer Bilderkennung ist dies noch relativ einfach, bei einer Vorhersage über Buchungsvolumina wird es schon komplizierter. Und oft genug werden an eine AI auch Forderungen gestellt und Wünsche formuliert, welche schlicht unerfüllbar sind. In einem System mit vielen sich gegenseitig bedingenden Eingangsgrößen lassen sich oft keine 100% genaue Prognosen erstellen. Dies wird aber zum Teil erwartet, obwohl dies in der Regel nicht der Sinn einer AI ist. Dieser ist eher, eine so nah wie möglich Prognose abzugeben. Und oftmals reicht diese auch schon völlig aus.

In dieser Gemengelage agiert eine AI und diejenigen, welche sie erstellen oder parametrisieren. Doch bevor es damit losgeht, noch ein Hinweis auf die Daten, welcher eine AI zu Grunde liegen. Wie in jeder datengetriebenen Anwendung ist hier die Qualität der Daten entscheidend. Daten, welche unvollständig oder welche geglättet sind, werfen viele Probleme auf. Die Entscheidung einer AI ist immer nur so gut wie die dahinterstehenden Daten. Das unterscheidet die AI nicht vom Menschen. Wenn ich nie gesegelt bin, kann ich kein Schiff segeln. Und genau wie Menschen aus Mustern lernen, so lernt auch eine AI aus Mustern oder eben der ihr zur Verfügung gestellten Daten.

Dies schafft auch Raum zum oft ungewollten Missbrauch. Als negatives Beispiel könnte ein Kreditbewertung gelten, welche weniger Daten weiblicher Kreditnehmerinnen enthält als männlicher. Die AI könnte dies so interpretieren, dass es immer besser ist männliche Kreditnehmer zu bevorzugen und damit weibliche benachteiligen, indem diese automatisch eine schlechtere Bewertung erhalten. Hier könnte man zu einem Daten von weiteren weiblichen Kreditnehmerinnen einspeisen oder das Kriterium Geschlecht in die Bewertung nicht mit einbeziehen.

Algorithmen, Modelle und einiges mehr

AI kann für verschiedene Zwecke eingesetzt werden, zum Beispiel für maschinelles Lernen, was Vorhersagemodelle basierend auf Daten und Statistiken sind. Für Anomalieerkennung, die ungewöhnlichen Muster oder Ereignisse erkennt und gegebenenfalls vorbeugende Maßnahmen ermöglicht. Maschinelles Sehen, die Bilder und Videos analysiert. Sprachverarbeitung, um Sprache zu erkennen und interpretieren sowie übersetzen zu können. Konversationen betreiben, wie es zum Beispiel Bots machen. Natürlich kann man das alles miteinander kombinieren. Zum Beispiel ein Chat, in welchen Benutzer mit einem Bot interagieren und Bilder schicken können, welche automatisch analysiert werden.

Microsoft Azure bietet für die oben genannten Anwendungszwecke die Module Azure Machine Learning, Cognitive Services und Azure Bot Service an. Genutzt werden diese Services primär in Azure ML und in der PowerPlatform.

Arbeiten mit Azure ML

Für den Einstieg in Azure ML ist es notwendig, einige Abläufe und Begriffe zu verstehen. Der prinzipielle Ablauf ist dabei, das als erstes ein Dataset erstellt wird. Dieses Dataset kann aus unterschiedlichen Quellen stammen und ist nicht spezifisch. Im Dataset werden die Daten aggregiert, welche später der AI zur Verfügung gestellt werden.

Als nächstes muss ein Modelltyp ausgewählt werden, also was soll eigentlich erreicht werden. Eine Vorhersage ist keine Klassifizierung. Übliche Modelle im maschinellen Lernen sind Regression für die Vorhersage eines numerischen Wertes, die Klassifizierung mit denen neue Daten aufgrund vorhandener Daten bezeichnet werden können und dem Clustering, welches bei der Mustererkennung verwendet wird. Jeder dieser Modelle verwendet unterschiedliche Algorithmen. Dabei gibt es in jedem Modell nicht nur einen Algorithmus, sondern viele.

Das Durchrechnen vieler verschiedener Algorithmen wird als Experiment bezeichnet. Dafür benötigten Sie eine Compute Umgebung, was nichts weiter als virtuelle, vorkonfigurierte Maschinen sind. Wenn Sie ein Azure ML Experiment erstellen, erstellt Ihnen Azure die Umgebung im Hintergrund.

In einem Experiment wird Azure ML eine Teilmenge der vorhandenen Daten abtrennen und versuchen einen Algorithmus zu finden, der dem vorhandenen Daten am besten entspricht. Es ist nicht notwendig, selbst zu wissen, was der beste Algorithmus ist. Azure ML wird alle ausgewählten Algorithmen durchrechnen und eine Aussage darüber treffen, welcher Algorithmus am besten mit den gegebenen Daten übereinstimmt. Bei der Modellauswahl kann auch festgelegt werden, dass nur bestimmte Algorithmen genutzt werden. Dies verkürzt die Rechenzeit und damit die Kosten erheblich, setzt aber das Wissen um die Algorithmen voraus.

Ist der für die Fragestellung effektivste Algorithmus gefunden, kann ein Modell damit trainiert werden. Es ist möglich, ein Modell mit Modellerklärungen zu untersuchten. Auch hier geht es wieder darum, wie nah ein Algorithmus an der Wirklichkeit ist. Azure ML bietet dazu eine grafische Oberfläche. Diese zeigt die Abweichung vom Ergebnis des Modells und den Daten, welche vorher abgetrennt wurden.

Azure ML Pipelines bilden einen Workflow ab. Damit kann festgelegt werden, woher neue Daten kommen und wie diese in der Anwendung zu verwenden sind. Ein Modell kann damit ständig neu trainiert werden. Erstellt werden können diese im Pipeline Designer oder aber per Code. Azure ML Pipelines können noch weitere Aufgaben erfüllen, dies würde aber den Rahmen dieses Artikels sprengen.

Ist das Modell fertig, kann es per Endpunkt über http(s) veröffentlicht werden. Damit kann eine Anwendung eine kleine Menge an Daten schicken und das Modell beziehungsweise der darunter liegende Algorithmus liefert das Ergebnis an die aufrufende Anwendung zurück.

AI in der PowerPlatform

Azure ML ist extrem flexibel und damit auch vergleichsweise aufwendig. Aber es ist die ideale Lösung, wenn Sie kein vorbereitetes Modell haben und ganz von vorn beginnen. In einer Lösung für Endanwender geht das nicht. Da braucht es schon fertige Modelle, die der Benutzer nur noch mit seinen eignen Daten füttern muss. Und genau das liefert AI Builder in der PowerPlatform. Es gibt darin verschiedene, schon vorkonfigurierte Modelle für Bilderkennung, Dokumentenerkennung und einiges mehr. Es ist auch möglich, mit Einschränkungen Modelle aus Azure ML zu verwenden.

Ein Benutzer muss diese Modelle nur noch trainieren. Will er zum Beispiel verschiedene Verpackungen erkennen, muss er ein Modell zur Bilderkennung auswählen und in dieses verschiedene Bilder von Verpackungen hochladen. Nach dem Hochladen muss er jedes Bild klassifizieren, welche Verpackung dies nun ist. Ist das Training abgeschlossen, kann das Model z.B. in einer PowerApp verwendet werden. Ein Benutzer lädt ein Bild hoch und es wird automatisch erkannt, um welche Verpackung es sich handelt. Dies funktioniert natürlich nur, wenn das ein Bild auch eine Verpackung zeigt. Der AI Builder kann auch in PowerAutomate verwendet werden, wenn zum Beispiel ein Bild hochgeladen wird und ein Flow danach das Bild kategorisiert.

Azure Cognitive Services

Ähnlich dem AI Builder können die Azure Cognitive Services verwendet werden. Während aber im AI Builder eine grafische Oberfläche zur Verfügung steht und keine wirkliche Programmierung unterstützt wird, ist dies bei den Azure Cognitive Services umgedreht. Auch hier gibt es vorbereitete Modelle, zum Beispiel für Bild- oder Sprachanalyse. Diese Modelle sind explizit dafür gedacht in einer Entwicklung verwendet zu werden und stellen dafür spezifische APIs zur Verfügung.

Genutzt werden können diese APIs in jeder Entwicklungsumgebung oder auch in der PowerPlatform. Besonders interessant ist, dass die meisten APIs ein freies Kontigent von Abfragen zur Verfügung stellen. Gerade wenn man damit erst einmal testen möchte, ist dies sehr nützlich. Auf der Website https://aidemos.microsoft.com kann man dies aber auch ohne Anmeldung im Browser.

Fazit

Ob man AI einsetzt, ist keine Frage mehr. Die Frage ist eher, an welcher Stelle welches Werkzeug eingesetzt wird. Microsoft Azure und die PowerPlatform bieten eine große Vielfalt von AI Werkzeugen. Dabei können komplett eigene Modelle bin hin schon zu fertigen Lösungen genutzt werden. Für viele typische Anwendungsfälle wie Bild-, Text und Sprachanalyse stehen diese schon einsatzbereit zur Verfügung.

Arbeiten mit Konnektoren und Bots in Microsoft Teams

Microsoft Teams ist die wahrscheinlich am meisten genutzte Anwendung innerhalb von Microsoft Office 365 außerhalb der klassischen Anwendungen. Eine interessante Lösung, welche noch besser wird, weil sie einfach zu erweitern ist. Dafür gibt es verschiedene Wege. Zwei davon sind Bots und Konnektoren. Dieser Blogartikel beschreibt, wie Sie beide zu einer Teams Umgebung hinzufügen und damit arbeiten können.
Microsoft Teams bietet schon von Haus aus ein großes Potential Informationen zu verwalten und zu strukturieren. In einer nicht angepassten Standardinstallation bleibt man dabei innerhalb des Office 365 Ökosystem, was oftmals auch völlig ausreichend ist. Bots und Konnektoren erweitern Teams, indem man einfach mit Drittsystemen interagieren kann oder weitere Microsoft Anwendungen einbindet. Wobei es natürlich auch Bots und Konnektoren gibt, welche ausschließlich wieder innerhalb von Office 365 agieren. Diese werde ich auch für Demonstrationszwecke verwenden. Die Herangehensweise bleibt sich aber allen Konnektoren und Bots gleich.

Arbeiten mit Bots

Ein Bot ist ein kleines Programm, welches auf eine Eingabe reagiert und flexibel Informationen zurückliefert. Bots gibt es für alles mögliches, für das Wetter, für Workflows, Konferenzen, Umfragen, etc. Man kann auch selbst relativ einfach eigene Bots schreiben und in diese in Teams veröffentlichen, z.B. mit Microsoft Azure (https://dev.botframework.com). Bots können in Microsoft Teams Mandantenweit verfügbar sein, in einem Kanal oder beides. Mit mandantenweiten Bots wird über einen privaten Chat kommuniziert. In einem Kanal wird ein Bot mit @ angesprochen. Oft folgt unmittelbar nach dem Namen die Frage, welche ich an dem Bot habe. Weiter unten finden Sie dazu zwei Beispiele.
Einige Bots sind Microsoft Teams schon bei Installation hinzugefügt. In einer Standardinstallation kann jedes Teammitglied und jeder Besitzer, aber keine Gäste, weitere Bots hinzufügen. In der linken Linkleiste klicken Sie ganz unten auf Apps und in der erscheinenden Seite auf Bots. Suchen Sie den gewünschten Bot und klicken Sie diesen an. Nach einer Nachfrage wird dieser hinzugefügt. Abhängig vom Bot folgen noch weitere Dialoge, z.B. welchen Kanal der Bot hinzugefügt werden soll. Dies natürlich nur, wenn der Bot dies unterstützt. Sie erkennen dies am Dialog. Der folgende Screenshot zeigt ein Bot, welche nur global hinzugefügt und der nicht in einem Kanal verwendet werden kann.
2020-02-13_14h33_15
Wollen Sie mit dem Bot chatten und Sie habe noch keinen Chat mit ihm geführt, klicken Sie auf die drei Punkte in der Mitte der linken Linkleiste und klicken Sie auf den Namen des Bots.
2020-02-13_14h55_02
Sie können jetzt einen Namen einer Ihrer Mitarbeiter eingeben. Der Bot wird versuchen Ihnen alle Informationen über die Person aus dem Azure Active Directory zu liefern. Es sind auch noch weitere Abfragen möglich, der Bot bietet dazu Beispiele. Damit dieser Bot arbeiten kann, müssen Sie diesen erst berechtigen, wie die folgende Abbildung zeigt.
Die folgende Abbildung zeigt einen Bot, welcher zu einem Kanal hinzugefügt werden kann und mit dem man ebenso chatten kann. Einige dieser Bots erzeugen Ihnen auch in einem Kanal automatisch eine neue Registerkarte.
2020-02-13_14h35_07
Wenn man z.B. mit dem Forms Bot eine Umfrage erstellen möchte, kann man diesen in einem Kanal folgenermaßen ansprechen:
@Forms Wie findest Du diesen Blog? Super, Na ja, Nicht so der Hit
Der Bot wird daraufhin ein Formular samt Auswertung erzeugen. Ganz einfach, nur mit der Formulierung der Frage (Fragezeichen nicht vergessen!) und der möglichen Antworten, getrennt mit Komma.
2020-02-15_16h04_21
Wenn Sie einen Bot aus einem Kanal entfernen möchten, klicken Sie auf die drei Punkte neben dem Teamname und wählen Team verwalten. Auf der Registerkarte Apps können Sie den Bots aus dem Kanal löschen. Wenn Sie einen Bot global löschen wollen, zeigen Sie auf die drei Punkte in der Linkleiste und klicken mit der rechten Maustaste auf den Bot. Dort können Sie diesen dann global löschen oder blockieren.
2020-02-13_15h49_10

Arbeiten mit Konnektoren

Im Unterschied zu Bots warten Konnektoren in der Regel nicht auf eine Eingabe, sondern liefern in einen Kanal Updates aus einem verbundenen System. So kann man sich einfach und schnell informieren lassen. Ein Konnektor läuft immer unter der Identität des Benutzers, welcher diesen eingerichtet hat. Unter Umständen können so also Informationen für unbefugte Dritte offengelegt werden. Beachten Sie auch, dass viele Konnektoren eine Weile für ihr Update benötigen. Für Echtzeit sind diese nicht geeignet. Die Abbildung zeigt Updates des Twitter Konnektors, welcher dem Hashtag #SharePoint folgt.
2020-02-15_16h07_04
Sie können Konnektoren über den gleichen Dialog wie Bots hinzufügen und aus dem Kanal ebenso löschen.

Verfügbarkeit von Bots und Konnektoren anpassen

Nicht in jeder Produktivumgebung ist es gewünscht, dass alle Benutzer alle Bots und Konnektoren benutzen dürfen. Welche zur Verfügung stehen, kann ein Administrator einschränken. Dazu geht man auf https://admin.teams.microsoft.com und dort unter Teams Apps => Berechtigungsrichtlinien. Hier können Sie sehr genau die gewünschten Apps einstellen.
2020-02-13_15h32_30

Haben Sie schon einmal mit Bots und Konnektoren gearbeitet? Oder eine andere Frage? Dann schreiben Sie einen Kommentar!

Vielen Dank für Ihr Interesse an meinem Blogeintrag.
Gerne beantworte ich Ihnen persönlich weitergehende Fragen zu diesem Thema.
Kontaktieren Sie mich einfach über mein Kontaktformular oder schreiben Sie einen Kommentar.

Sie wollen mehr über meine Leistungen erfahren? Dann klicken Sie hier.

Artikel über Azure Speicher im Printmagazin IT-Administrator

Am 06.2.2019 erscheint von mir ein Artikel über Microsoft Azure Speicher im Printmagazin IT Administrator – https://www.it-administrator.de. Der Artikel erläutert, wie Sie Speicher in Microsoft Azure reservieren, was die Kosten beeinflusst und wie Sie den Speicher verwalten. Es hat viel Spaß gemacht den Artikel zu schreiben, weitere werden folgen. Als Vorgeschmack hier der Teaser sowie die ersten Absätze des Artikels.

„Wer sich mit Microsoft Azure beschäftigt, kommt an Azure Speicher kaum vorbei. Denn jede virtuelle Maschine, jedes Backup, jedes Log und jede Datenbank nutzt diesen Speicher. Dessen Verwaltung kann sich anfangs als komplexer herausstellen als zunächst gedacht. Der Workshop legt die Grundlagen für einen einfachen Einstieg und will gleichzeitig zum Experimentieren anregen.

Microsoft Azure Speicher ist von jedem Ort der Welt per HTTP oder HTTPS verfügbar, dabei sehr schnell und – wenn Sie einige Prinzipien verstanden haben – auch einfach zu verwalten. Natürlich sind die Daten verschlüsselt, wenn Sie möchten, sogar mit Ihrem eigenen Schlüssel. Der Preis setzt sich aus der Menge der gespeicherten Daten, deren Abruf aus dem Speicher von einem Client und Schreib- und Lesevorgängen in den Daten zusammen. Über verschiedene Optionen kann ein Administrator den für den jeweiligen Anwendungszweck besten Tarif wählen. Einige dieser Optionen lassen sich auch jederzeit ändern, zum Beispiel wann Daten, die bisher in ständigem Zugriff waren, zu Archivdaten werden. Um die dahinter liegende Infrastruktur zur Speicherung und dem Abruf der Daten muss sich der Administrator keine Sorgen machen. So bleibt mehr Zeit für das Wesentliche.

Um Microsoft Azure Speicher zu nutzen, müssen Sie zuerst über ein Azure-Abonnement verfügen und darin ein Speicherkonto erstellen. Das Speicherkonto dient dabei als Container, um verschiedene Anforderungen voneinander abzugrenzen. Um das Speicherkonto zu erstellen, erweitern Sie im Azure-Portal das Menü auf der linken Seite, um die Dienste zu öffnen, und klicken auf „Alle Dienste“. Scrollen Sie anschließend nach unten zu „Speicher“ und wählen Sie „Speicherkonten“. Klicken Sie im angezeigten Fenster auf „Hinzufügen“. “

P_20190205_155710_vHDR_Auto

Kopieren von VHD Dateien zwischen verschiedenen Azure Installationen

Kürzlich hatte ich die Anforderung, zwischen zwei verschiedenen Azureinstallationen VHD Dateien kopieren zu müssen. Dabei hatte ich im ersten Mandanten (Quelle) die VHDs erstellt und in virtuellen Maschinen genutzt. In einer zweiten Installation (Ziel) von Azure wurde diese dann produktiv verwendet. Das Kopieren der VHDs kann ich natürlich realisieren, indem ich die Quell-VHD auf meinen Rechner herunterlade und dann wieder auf das Zielsystem hoch lade. Besser wäre allerdings die Möglichkeit, die VHDs direkt in Azure zu kopieren. Genau dies soll das unten stehende Skript bewirken. Das Skript können Sie auch von http://www.nicothiemer.de/Download/CopyVHDsInAzure.zip herunterladen.

Bei der Ausführung des Skripts gilt die Voraussetzung, dass das Zielsystem in Azure noch nicht konfiguriert ist. Der Azuremandat steht unmittelbar nach dem anlegen zur Verfügung. Da ich mehrere Mandanten habe, muss ich in der PowerShell zwischen diesen wechseln. Wie dies geht, beschreibt dieser Blogbeitrag https://nicothiemer.wordpress.com/2015/08/24/arbeiten-mit-mehreren-mandaten-in-der-azure-powershell. Gestartet werden sollte das Skript aus dem Mandanten des Zielsystems! Dieser muss auch als Default subscription eingetragen sein.Damit das Skript erfolgreich laufen kann, muss ich daher in der PowerShell mit dem Zielmandanten verbunden sein.

Was genau das Skript wie macht, ist in den Kommentaren beschrieben. Natürlich müssen die Dummys für die Variablen mit den echten Werten ersetzt werden. Einfach gesagt kopiert es eine VHD Datei und erstellt anschließend eine VM, welche die VHD nutzt. Es soll auch bewusst als Inspiration dienen. Ich habe darum auf Abfragen, ob schon Objekte bestehen, verzichtet. Damit sollte der eigentliche Code besser lesbar sein.

Anpassungen

Sie müssen sämtliche Variablen mit Ihnen eigenen Werten versehen. Einige Werte benötigen dazu besondere Aufmerksamkeit.

In der Zeile 55 muss noch eine Anpassung vorgenommen werden. In dieser wird mit Set-AzureVNetConfig das neu erstellte Netzwerk konfiguriert. Die XML Datei dazu steht in der Zeile 14 in der Variable $netconfigpath. Neben diesem Pfad müssen Sie außerdem noch die Datei als solche anpassen. Sie finden diese Datei in der .zip Datei zum Download oder am Ende des Artikels.

Was ich noch brauche, ist die URL der VHD, welche kopiert werden soll. Diese kann ich u.a. erhalten, wenn ich mir in der UI von Azure die Eigenschaften der VHD anzeigen lasse. Gehen Sie dazu im Quellsystem im (alten) Azureportal auf ihre virtuellen Rechner und klicken Sie dort auf den Reiter Datenträger. Ganz am rechten Rand haben Sie die Spalte Speicherort. Wenn Sie über diese Einträge mit der Maus fahren, erscheint ein Symbol zum Kopieren. Klicken Sie auf dieses und Sie haben den Speicherort der VHD. Die Variable für den Wert ist $diskSource und steht in Zeile 20.

Natürlich muss die virtuelle Maschine, welche die VHD die Sie kopieren möchten verwendet, heruntergefahren sein. Ich möchte auch nicht verschweigen, dass ich mich bei der Erstellung dieses Skripts großzügig vom Installationsskript für den Kurs MOC 20-346C Managing Office 365 Identities and Services inspiriert haben lassen.

Skript CopyVHDsInAzure.ps1


#Azure variables:

$affinitygroup = "Your affinitygroup"

#locations: https://azure.microsoft.com/en-us/regions/#services
$location = "West Europe"

#Storage
#only use lowercase letters and numbers!
$storage = "your storagename"

#network variables
$dnsname = "Your dns"
$netconfigpath ="C:\Azure\NetworkConfigFinal.xml"
$vnet=" Your virtualnetwork"
$subnet = "Your subnet"

#copy VHDs
$diskSource = "source of your your vhd, eg. https://xxx.blob.core.windows.net/vhds/xxx.vhd "
$diskname = "Name of the new vhd in the destination, eg. xxx-new.vhd"
$AzureDiskname = "Name of the new vhs without vhd., eg. xxx-new"
$srcStorageContainer = "Source storagecontainer, eg. vhds"
$destStorageContainer = "Destination storagecontainer, eg. vhds"

#create VM
$servername="name of the new virtuel machine"
$cloudservice ="name of the cloudservice"
Write-Host " "
Write-Host "Step 1. Create Azure affinity group" -ForegroundColor Magenta
Write-Host " "
#create affinitygroup
New-AzureAffinityGroup -Name $affinitygroup -Location $location
# Wait while affinity group is created
Write-Host " "
Write-Host "Step 2. Create Azure storage service" -ForegroundColor Magenta
Write-Host " "
#create storage
New-AzureStorageAccount -StorageAccountName $storage -AffinityGroup $affinitygroup

#get the current subscription
$subscriptionObj = get-AzureSubscription -Default
$subscriptionId = $subscriptionObj.SubscriptionId
set-azuresubscription -SubscriptionId $subscriptionId -CurrentStorageAccountName $storage
select-azuresubscription -SubscriptionId $subscriptionId

Write-Host " "
Write-Host "Step 3. Create Virtual Network" -ForegroundColor Magenta
Write-Host " "
#create network
$dns = New-AzureDns -IPAddress 10.0.0.4 -Name $dnsname
Set-AzureVNetConfig -ConfigurationPath $netconfigpath

Write-Host " "
Write-Host "Step 4. Copy VHD Blob" -ForegroundColor Magenta
Write-Host " "
#copy VHDs - create Storage Container
$destStorageAccountKeyObj = get-azurestoragekey $storage
$destStorageAccountKey = $destStorageAccountKeyObj.Primary
$dest = New-AzureStorageContext $storage $destStorageAccountKey
New-AzureStorageContainer $destStorageContainer -Permission Container -context $dest

#copy VHDs
Start-AzureStorageBlobCopy -AbsoluteUri $diskSource -DestBlob $diskname -DestContext $dest -DestContainer $destStorageContainer

$stateCopy = Get-AzureStorageBlob -Context $dest -Container $destStorageContainer | where {$_.Name -like $diskname}
$stateCopy | Get-AzureStorageBlobCopyState

do
{
Write-Verbose "Checking storage blob copy status every $delaySeconds seconds."
Write-Verbose "This will repeat until all copy operations are complete."

$continue = $false
Get-AzureStorageBlobCopyState -Blob $diskname -Container $destStorageContainer | Format-Table -AutoSize -Property Status,@{label="Percent";expression={"{0:P2}" -f $($_.BytesCopied/$_.TotalBytes)}}, @{label="VHD";expression={$($_.Source).tostring().substring(44,13)}}
$blobStatusPending = Get-AzureStorageBlobCopyState -Blob $diskname -Container $destStorageContainer

# Continue checking status as long as at least one operations is still pending.
if (!$continue)
{
$continue = $blobStatusPending.Status -eq "Pending"
}

if ($continue)
{
Start-Sleep $delaySeconds
}
} while ($continue)

Write-Host " "
Write-Host "Step 5. Define Virtual Disks" -ForegroundColor Magenta
Write-Host " "

$blobsToDisks = Get-AzureStorageBlob -Context $dest -Container $destStorageContainer | where {$_.Name -like $diskname}
Add-AzureDisk -DiskName $AzureDiskName -MediaLocation $blobsToDisks.ICloudBlob.Uri -OS Windows

Write-Host " "
Write-Host "Step 6 Creating VM" -ForegroundColor Magenta
Write-Host " "

$vmName = $servername
$newVM = New-AzureVMConfig -Name $vmName -DiskName $vmName -InstanceSize 'Small' `
| Add-AzureProvisioningConfig -Windows `
| Set-AzureSubnet -SubnetNames $subnet

New-AzureVM -ServiceName $cloudservice -AffinityGroup $affinitygroup -VMs $newVM -VNetName $vnet -DnsSettings $dns -WaitForBoot
Write-Host "Finish!"

Datei NetworkConfigFinal.xml

<NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration">
<VirtualNetworkConfiguration>
<Dns>
<DnsServers>
<DnsServer name="Your DNS name" IPAddress="10.0.0.4" />
</DnsServers>
</Dns>
<VirtualNetworkSites>
<VirtualNetworkSite name="Your virtualnetwork" AffinityGroup="Your affinitygroup">
<AddressSpace>
<AddressPrefix>10.0.0.0/8</AddressPrefix>
</AddressSpace>
<Subnets>
<Subnet name="Your subnet">
<AddressPrefix>10.0.0.0/11</AddressPrefix>
</Subnet>
</Subnets>
<DnsServersRef>
<DnsServerRef name="Your DNS name" />
</DnsServersRef>
</VirtualNetworkSite>
</VirtualNetworkSites>
</VirtualNetworkConfiguration>
</NetworkConfiguration>

Vielen Dank für Ihr Interesse an meinem Blogeintrag.
Gerne beantworte ich Ihnen persönlich weitergehende Fragen zu diesem Thema.
Kontaktieren Sie mich einfach über mein Kontaktformular.

Sie wollen mehr über mich erfahren? Dann gehen Sie auf meine Site
http://www.nicothiemer.de

Nico Thiemer

Arbeiten mit mehreren Mandaten in der Azure PowerShell

Wenn man wie ich viele Beratungen und/oder Schulungen für Microsoft Azure gibt, hat man nach einer Weile auch einige Testversionen von Microsoft Azure erstellt. In einer deutschen Azure Installation haben diese immer den Namen „Kostenlose Testversion“. Wenn ich jetzt mit meiner Testinstallation in der Azure PowerShell arbeiten möchte, muss ich zuerst eine Konfigurationsdatei importieren. Diese enthält neben dem Name der Installation auch deren eindeutige ID.

Ich gehe davon aus, dass ich im Standardbrowser schon an der Azure Testinstallation angemeldet bin und die Azure PowerShell installiert und offen ist. Mit dem Befehl
Get-AzurePublishSettingsFile
kann ich mir die Installationsdatei besorgen und lokal ablegen. Ist dies die erste Installation, kann ich mit dieser direkt in der PowerShell weiterarbeiten.
Beispiel:
Import-AzurePublishSettingsFile –PublishSettingsFile „C:\Azure\Kostenlose Testversion-8-24-2015-credentials.publishsettings“


Habe ich aber mehrere Installationen, wird es etwas komplizierter. Die Azure PowerShell arbeitet nämlich immer mit der ersten Installation. Wie viele es gibt und deren Daten kann ich mir mit
Get-AzureSubscription
anzeigen lassen.

Im Beispiel oben gibt es insgesamt drei Installationen, alle mit dem gleichen Namen „Kostenlose Testversion“. Wenn ich versuche, zu meiner neuen, aktuellen Installation zu wechseln, wird der folgende Befehl natürlich nicht funktionieren.

Select-AzureSubscription -Default -SubscriptionName „Kostenlose Testversion“

Mit dem Schalter –Default sorge ich dafür, dass die Änderung beständig ist. Das heißt, wenn ich die PowerShell schließe und wieder öffne, soll die Einstellung wieder gelten. Sonst gilt sie nur für die aktuelle Session. Der Name unterscheidet Übrigens zwischen Groß/Kleinschreibung.

In der Beschreibung zu dem Befehl unter https://msdn.microsoft.com/en-us/library/dn495189.aspx steht, der Parameter SubscriptionName ist erforderlich. Also versuche ich es mit

Select-AzureSubscription -Default -SubscriptionName „Kostenlose Testversion“ –SubscriptionId faf0d01c-82ad-482d-bd01-f983f80a3642

Da allerdings erhalte ich den Fehler, dass der Befehl mit diesen Argumenten nicht aufgerufen werden kann. OK, dann versuche ich eben, entgegen der Beschreibung einfach mal den Namen wegzulassen.

Select-AzureSubscription -Default -SubscriptionId faf0d01c-82ad-482d-bd01-f983f80a3642

Und siehe da, es geht!

Irgendwie nicht ganz so logisch, aber gut 🙂

Vielen Dank für Ihr Interesse an meinem Blogeintrag.
Gerne beantworte ich Ihnen persönlich weitergehende Fragen zu diesem Thema.
Kontaktieren Sie mich einfach über mein Kontaktformular.

Sie wollen mehr über mich erfahren? Dann gehen Sie auf meine Site
http://www.nicothiemer.de

Nico Thiemer

Arbeiten mit dem Information Rights Management (IRM) von Office 365 in SharePoint online

Mit Information Rights Management (IRM) verbinden viele Anwender und Administratoren diffuse Ängste und Sorgen. Die einen haben Angst nicht mehr zu dürfen und gegängelt zu werden, die anderen befürchten einen hohen technischen Aufwand bei der Implementierung. Beides ist unbegründet, wie dieser Artikel zu zeigen versucht. Ganz in Gegenteil. Mit ein paar Klicks können Sie einfach und zuverlässig Ihre Dokumente vor unbefugten Zugriff schützen. Ich werde hier zeigen, wie Sie das IRM von Office 356 aktivieren und in SharePoint online nutzen können. Natürlich steht Ihnen das IRM nicht nur in SharePoint zur Verfügung, Sie können es ebenso mit Microsoft Exchange/Outlook nutzen.

Ich gehe im Folgenden davon aus, dass Sie der Administrator des Office 365 Mandanten sind. Zum Einsatz kommt in Office 365 das Microsoft Azure Rights Management, welches Sie zuerst in der Verwaltung von Office 365 aktivieren müssen. Klicken Sie dazu in der Navigation auf der linken Seite der Office 365 Verwaltung auf Diensteistellungen und dann auf Rechteverwaltung.

Folgen Sie dort den Link zur Verwaltung

Klicken Sie dann auf aktivieren und in dem sich öffnenden Fenster noch einmal auf aktivieren. In meinem Fall wurde dann die Seite neu geladen, aber das IRM wurde noch als deaktiviert angezeigt. Nach ein paar Sekunden habe ich noch einmal aktuallisiert und dann war alles in Ordnung. Haben Sie also etwas Geduld.

Wenn Sie jetzt zu SharePoint gehen und testen möchten, steht IRM noch nicht zur Verfügung. Vielmehr muss dieses noch explizit für SharePoint aktiviert werden. Gehen Sie dazu in die SharePoint Verwaltung von Office 365 und klicken Sie dort auf Einstellungen.

Suche Sie die Einstellung Information Rights Management (IRM) und aktivieren Sie diese. Danach steht IRM in allen Websitesammlungen zur Verfügung.

In einer Liste bzw. Bibliothek gibt es jetzt einen neuen Menüpunkt in der Verwaltung mit der Beschriftung Information Rights Management.

Dort können Sie die Eigenschaft aktivieren und einen Titel sowie die Beschreibung einer Richtlinie eingeben. Nach dem speichern unterliegen alle Elemente in der Liste bzw. Bibliothek dem IRM.

Die Richtlinie wird sowohl in den Office WebApps als auch im Windows Client angezeigt.

Office Online

Microsoft Word 2013

Mit einen Klick auf Berechtig. Ändern können Sie jetzt den Zugriff auf das Dokument einschränken. Beachten Sie, dass Sie dabei unabhängig von den Berechtigungen in SharePoint sind. Ist eine Person in SharePoint berechtigt das Dokument zu schreiben, so ist es möglich, dass es durch die Einschränkung im IRM es nun doch nur lesen kann.

Auf das Fenster können Sie auch über das Menüband Überprüfen zugreifen.

Es ist dort auch möglich, noch weitere Rechte zu definieren.

Ebenso können in der Verwaltung der Liste/Bibliothek noch weitere Optionen definieren. Dazu können Sie in der Verwaltungswebseite des IRM auf Optionen klicken.

Alles in allen eine sehr einfache und effektive Möglichkeit Dokumente zu schützen.

Vielen Dank für Ihr Interesse an meinem Blogeintrag.
Gerne beantworte ich Ihnen persönlich weitergehende Fragen zu diesem Thema.
Kontaktieren Sie mich einfach über mein Kontaktformular.

Sie wollen mehr über mich erfahren? Dann gehen Sie auf meine Site
http://www.nicothiemer.de

Nico Thiemer