Tags: Storage, PowerShell
Um iSCSI-Verbindungen interaktiv zu konfigurieren, steht das entsprechende Applet für den iSCSI-Initiator zur Verfügung. Wenn man das Verbinden und Trennen von iSCSI-Targets jedoch automatisieren möchte, dann bietet sich dafür PowerShell an. Sie deckt mit dem iSCSI-Modul alle Funktionen des GUI-Tools ab.
Wenn man das Applet für den iSCSI-Initiator auf einem Rechner startet, auf dem noch nie eine Verbindung konfiguriert wurde, dann erhält man den Hinweis, dass der iSCSI-Service nicht laufe. Möchte man statt des GUI-Tools lieber PowerShell verwenden, dann muss man sich um solche Voraussetzungen selbst kümmern.
Voraussetzungen prüfen
Daher besteht der erste Schritt darin, den Status dieses Dienstes abzufragen:
Get-Service -Name MSiSCSI
Erweist sich hier, dass der Service erst gestartet werden muss, dann kann man dies mit folgendem Befehl erledigen:
Start-Service -Name MSiSCSI
Zudem ändert man den Starttyp auf automatisch, so dass er nach jedem Reboot des Rechners wieder ausgeführt wird.
Set-Service -Name MSiSCSI -StartupType Automatic
Wenn man nicht sicher ist, ob bereits Verbindungen zu einem iSCSI-Target bestehen, dann kann man dies mit
Get-IscsiTarget
prüfen. In der folgenden Abbildung liefert der Befehl ein leeres Ergebnis.
Discovery der Targets
Um eine neue aufzubauen, macht man den Initiator mit dem entsprechenden Storage-Gerät bekannt. Diesem Zweck dient der Aufruf von
New-IscsiTargetPortal -TargetPortalAddress "<IP oder FQDN>"
Dieser Befehl würde den Standard-Initiator für den Discovery-Prozess sowie den Default-Port 3260 verwenden. Beide kann man über entsprechende Parameter spezifizieren, wobei für die Angabe des Ports TargetPortalPortNumber zuständig ist.
Verfügt der Client über mehrere Initiatoren, dann kann man diese mittels
iscsicli listinitiators
anzeigen. Den gewünschten übergibt man dann an den Parameter InitiatorInstanceName:
New-IscsiTargetPortal -TargetPortalAddress "192.168.0.180" `
-InitiatorInstanceName "ROOT\ISCSIPRT\0000_0"
Ein weiterer Aufruf von Get-IscsiTarget liefert nun die nötigen Informationen für das weitere Vorgehen. Dazu gehört in erster Linie die NodeAddress der gefundenen Targets. Diese benötigt man anschließend, um eine Verbindung mit einem Target aufzubauen.
In unserem Beispiel wird das Target von einem Synology-NAS bereitgestellt:
Connect-IscsiTarget -NodeAddress `
"iqn.2000-01.com.synology:DS214.Target-1.0e1a3dc1d1"
Dieses Kommando lässt sich je nach Bedarf variieren. So bewirkt der obige Aufruf nur eine Verbindung bis zum nächsten Reboot. Möchte man sie dauerhaft einrichten, dann ergänzt man ihn um den Parameter -IsPersistent $true.
Will man alle verfügbaren Targets verbinden, dann reicht ein
Get-IscsiTarget | Connect-IscsiTarget
Verbindung trennen
Das PowerShell-Modul iSCSI verfügt auch über Cmdlets für die entgegengesetzten Operationen. Um eine Verbindung mit einem Target zu beenden, würde man in unserem Beispiel folgenden Befehl absetzen:
Disconnect-IscsiTarget -NodeAddress `
"iqn.2000-01.com.synology:DS214.Target-1.0e1a3dc1d1"
Schließlich lässt sich noch das Target-Portal auf diese Weise entfernen:
Remove-IscsiTargetPortal -TargetPortalAddress "192.168.0.180"
Hier muss man darauf achten, dass man die Parameter genauso angibt wie zuvor bei New- IscsiTargetPortal. Hat man etwa als Adresse eine IP verwendet, dann darf man hier keinen DNS-Namen übergeben.
Ähnliches gilt für InitiatorInstanceName: Hat man diesen ursprünglich an das Cmdlet übergeben, dann muss man das beim Entfernen ebenfalls tun.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Postfächer in Exchange (Online) mit PowerShell verwalten
- Partitionen (remote) vergrößern und verkleinern mit PowerShell
- Netzlaufwerke anzeigen, freigeben, verbinden und trennen mit PowerShell
- VMware gibt vSphere 6.0 und PowerCLI 6.0 R1 frei: Die Neuerungen im Überblick
- IDE versus SCSI: Storage-Controller in Hyper-V einrichten
Weitere Links
3 Kommentare
Bei Windows Admin Center habe ich derweil noch nichts dazu gesehen, auch wenn iSCSI mit heute 45 Gbit und mehr noch nicht tot ist, außer man denkt nur in AzureStackHCI :)
Wie sieht es mit Server Manager und iSCSI aus? Meinst du das mit GUI?
Ich habe mich auf iscsicpl.exe bezogen, das übrigens auch unter Server Core läuft.
ah ok Danke Wolfgang! Unter Core auch ohne Feature on Demand? Interessant.
Schau mal wie dir die Ansicht in Server Manager gefällt. Files > iSCSI.