document.write('\
<div class="poshcode code posh">\
<style type="text/css">\
.posh li.li2, .posh li.li1 { list-style-type:decimal-leading-zero; white-space:nowrap;}');
document.write(".syntax .posh { overflow: auto; background-color:#EAEAEA; border:1px solid #DDDDDD; border-width: 1px 1px 0px 1px;}\
.syntax .poshcredit {\
background-color:#EAEAEA;\
border-bottom:1px solid #DDDDDD;\
color:#666666;\
font-size:85%;\
overflow:hidden;\
padding:0.5em 1em;\
}");
document.write("/**\
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\
 * (http://qbnz.com/highlighter/ and http://geshi.org/)\
 */\
.posh .de1, .posh .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\
.posh  {font-family:monospace;}\
.posh .imp {font-weight: bold; color: red;}\
.posh li, .posh .li1 {background: #ffffff;}\
.posh .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\
.posh .li2 {background: #f8f8f8;}\
.posh .kw1 {color: #666699; font-weight: bold;}\
.posh .kw2 {color: #333399; font-weight: bold; font-style: italic;}\
.posh .kw3 {color: #003366; font-weight: bold;}\
.posh .kw4 {color: #660033;}\
.posh .co1 {color: #666666; font-style: italic;}\
.posh .coMULTI {color: #666666; font-style: italic;}\
.posh .es0 {color: #000099; font-weight: bold;}\
.posh .br0 {color: #333;}\
.posh .sy0 {color: #66cc66;}\
.posh .st0 {color: #009900;}\
.posh .nu0 {color: #cc66cc;}\
.posh .me1 {color: #003366;}\
.posh .me2 {color: #003366;}\
.posh .re0 {color: #0066cc; font-style: italic;}\
.posh .re1 {font-style: normal;}\
.posh .re2 {color: #000066;}\
.posh .re3 {color: #660033; font-weight: bold;}\
.posh .re4 {color: #003366; font-weight: bold;}\
.posh span.xtra { display:block; }\
");
document.write('</style>');
document.write('<div class="syntax"><div class="posh" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1"># This function returns all datastores that can be shared amongst ESX hosts.</span></div></li>\
<li class="li2"><div class="de2"><span class="kw1">function</span> <span class="re0">Get-<span class="re1">ShareableDatastore</span></span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1"># Get all datastores.</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$datastores</span> <span class="sy0">=</span> <span class="re0">Get-<span class="re1">Datastore</span></span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1"># Load the HostStorageSystems of all hosts.</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$hosts</span> <span class="sy0">=</span> <span class="re0">Get-<span class="re1">VMHost</span></span> <span class="sy0">|</span> <span class="re0">Get-<span class="re1">View</span></span> <span class="re2">-property</span> ConfigManager</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$storageSystems</span> <span class="sy0">=</span> @<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re3">$h</span> <span class="kw1">in</span> <span class="re3">$hosts</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$sdi</span> <span class="sy0">=</span> <span class="re0">Get-<span class="re1">View</span></span> <span class="re3">$h</span>.<span class="me1">ConfigManager</span>.<span class="me1">StorageSystem</span> <span class="re2">-Property</span> StorageDeviceInfo</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Debug</span></span> <span class="br0">&#40;</span><span class="st0">&quot;GSD: SDI for host $h is &quot;</span> <span class="sy0">+</span> <span class="re3">$sdi</span><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$storageSystems</span> <span class="sy0">+=</span> <span class="re3">$sdi</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re3">$dso</span> <span class="kw1">in</span> <span class="re3">$datastores</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$ds</span> <span class="sy0">=</span> <span class="re3">$dso</span> <span class="sy0">|</span> <span class="re0">Get-<span class="re1">View</span></span> <span class="re2">-Property</span> Info</div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1"># Check if this datastore is NFS.</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$dsInfo</span> <span class="sy0">=</span> <span class="re3">$ds</span>.<span class="me1">Info</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Debug</span></span> <span class="br0">&#40;</span><span class="st0">&quot;GSD: Is it NFS? &quot;</span> <span class="sy0">+</span> <span class="re3">$dsInfo</span>.<span class="me1">getType</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re3">$dsInfo</span> <span class="re2">-is</span> <span class="re4"><span class="br0">&#91;</span>VMware.<span class="me1">Vim</span>.<span class="me1">NasDatastoreInfo</span><span class="br0">&#93;</span></span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Output</span></span> <span class="re3">$dso</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">continue</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1"># Get the first extent of the datastore.</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$firstExtent</span> <span class="sy0">=</span> <span class="re3">$dsInfo</span>.<span class="me1">Vmfs</span>.<span class="me1">Extent</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Debug</span></span> <span class="br0">&#40;</span><span class="st0">&quot;GSD: first extent: &quot;</span> <span class="sy0">+</span> <span class="re3">$firstExtent</span>.<span class="me1">DiskName</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1"># Find a host that maps this LUN.</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re3">$hss</span> <span class="kw1">in</span> <span class="re3">$storageSystems</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$lun</span> <span class="sy0">=</span> <span class="re3">$hss</span>.<span class="me1">StorageDeviceInfo</span>.<span class="me1">ScsiLun</span> <span class="sy0">|</span> <span class="kw4">Where</span> <span class="br0">&#123;</span> <span class="re3">$_</span>.<span class="me1">CanonicalName</span> <span class="re2">-eq</span> <span class="re3">$firstExtent</span>.<span class="me1">DiskName</span> <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re3">$lun</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Debug</span></span> <span class="br0">&#40;</span><span class="st0">&quot;GSD: found &quot;</span> <span class="sy0">+</span> <span class="re3">$lun</span>.<span class="me1">DeviceName</span> <span class="sy0">+</span> <span class="st0">&quot; on &quot;</span> <span class="sy0">+</span> <span class="re3">$hss</span>.<span class="me1">MoRef</span>.<span class="me1">Value</span><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Debug</span></span> <span class="br0">&#40;</span><span class="st0">&quot;GSD: LUN details: Name:&quot;</span> <span class="sy0">+</span> <span class="re3">$lun</span>.<span class="me1">DisplayName</span> <span class="sy0">+</span> <span class="st0">&quot;, Type:&quot;</span> <span class="sy0">+</span> <span class="re3">$lun</span>.<span class="me1">DeviceType</span> <span class="sy0">+</span> <span class="st0">&quot;, Vendor:&quot;</span> <span class="sy0">+</span> <span class="re3">$lun</span>.<span class="me1">Vendor</span> <span class="sy0">+</span> <span class="st0">&quot;, Model:&quot;</span> <span class="sy0">+</span> <span class="re3">$lun</span>.<span class="me1">Model</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1"># Search the adapter topology of this host, looking for the LUN.</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$adapterTopology</span> <span class="sy0">=</span> <span class="re3">$hss</span>.<span class="me1">StorageDeviceInfo</span>.<span class="me1">ScsiTopology</span>.<span class="me1">Adapter</span> <span class="sy0">|</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">Where</span> <span class="br0">&#123;</span> <span class="re3">$_</span>.<span class="me1">Target</span> <span class="sy0">|</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">Where</span> <span class="br0">&#123;</span> <span class="re3">$_</span>.<span class="me1">Lun</span> <span class="sy0">|</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">Where</span> <span class="br0">&#123;</span> <span class="re3">$_</span>.<span class="me1">ScsiLun</span> <span class="re2">-eq</span> <span class="re3">$lun</span>.<span class="me1">key</span> <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="sy0">|</span> <span class="kw4">Select</span> <span class="re2">-First</span> <span class="nu0">1</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1"># We\'ve found a host that has this LUN. Find how it maps to an adapter.</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$adapter</span> <span class="sy0">=</span> <span class="re3">$hss</span>.<span class="me1">StorageDeviceInfo</span>.<span class="me1">HostBusAdapter</span> <span class="sy0">|</span> <span class="kw4">Where</span> <span class="br0">&#123;</span> <span class="re3">$_</span>.<span class="me1">Key</span> <span class="re2">-eq</span> <span class="re3">$adapterTopology</span>.<span class="me1">Adapter</span> <span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Debug</span></span> <span class="br0">&#40;</span><span class="st0">&quot;GSD: HBA type is: &quot;</span> <span class="sy0">+</span> <span class="re3">$adapter</span>.<span class="me1">getType</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1"># It\'s shared if it\'s Fibre Channel or iSCSI (we checked for NFS earlier)</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re3">$adapter</span> <span class="re2">-is</span> <span class="re4"><span class="br0">&#91;</span>VMware.<span class="me1">Vim</span>.<span class="me1">HostFibreChannelHba</span><span class="br0">&#93;</span></span> <span class="re2">-or</span> <span class="re3">$adapter</span> <span class="re2">-is</span> <span class="re4"><span class="br0">&#91;</span>VMware.<span class="me1">Vim</span>.<span class="me1">HostInternetScsiHba</span><span class="br0">&#93;</span></span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Debug</span></span> <span class="st0">&quot;GSO: $dso is sharable&quot;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Output</span></span> <span class="re3">$dso</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1"># Otherwise it\'s not shared and we quit walking through hosts.</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>\
</ol></div>');document.write('<div class="poshcredit"><a style="float:right;" href="http://poshcode.org/get/1299" title="download file">download</a><a href="http://poshcode.org/?show=1299" title="full view">This Script</a> brought to you by <a href="http://PoshCode.org">PoshCode</a>\
</div>\
</div>\
</div>');