Share via


iSCSICLI Batch file to quickly connect to an iSCSI target

This script can be run from the command line including Server Core to quickly connect to an iSCSI target

Pre-Requisites:

  1. Windows host running the Microsoft iSCSI Software Initiator  (You can check the iSCSI initiator location guide on how to get the initiator here:  

https://blogs.msdn.com/san/archive/2008/07/28/microsoft-iscsi-software-initiator-location-guide.aspx

      2. Pre-configured iSCSI target. You will first need to create a LUN on your iSCSI target. A list of supported targets   is here:  https://blogs.msdn.com/san/archive/2008/08/04/logo-listings-for-enterprise-storage-arrays.aspx

@ECHO OFF

SETLOCAL

setlocal EnableDelayedExpansion

REM - Batch file quick connect to an iSCSI Target.

REM - 1. First add portal for the IP address that has been entered. 

REM - 2. List Targets.

REM - 3. If only one target is listed, then logon.

REM - 4. Mark it persistent.

REM - 5. Done.

SET ipaddress=%1

echo "Trying to add target %1 for discovery"

iscsicli QAddTargetPortal %ipaddress%

REM – Find out the number of Targets discovered for the portal address

SET _count=0

FOR /F "usebackq skip=1" %%G IN (`iscsicli ListTargets`) DO (

SET _cmp=%%G

SET _result=!_Cmp:~0,4!

REM - Get a valid IQN Name.

IF !_RESULT!==iqn. (

set TargetName=!_cmp!

SET /a _count = _count + 1

)

)

REM - Check if there is only one target.

if !_count! equ 1 (

echo "Found A Target - %TargetName%: Attempt to login"

iscsicli QLoginTarget %TargetName%

Echo “Mark the target as a persistent target”

iscsicli PersistentLoginTarget %TargetName% * * * * * * * * * * * * * * * *

) ELSE (

echo "Did not find a single Target to login"

)