<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>http://vwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=VI-DB_db-base-data-v1.0.ps1</id>
	<title>VI-DB db-base-data-v1.0.ps1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://vwiki.co.uk/index.php?action=history&amp;feed=atom&amp;title=VI-DB_db-base-data-v1.0.ps1"/>
	<link rel="alternate" type="text/html" href="http://vwiki.co.uk/index.php?title=VI-DB_db-base-data-v1.0.ps1&amp;action=history"/>
	<updated>2026-04-19T05:44:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://vwiki.co.uk/index.php?title=VI-DB_db-base-data-v1.0.ps1&amp;diff=1496&amp;oldid=prev</id>
		<title>Sstrutt: Updated categories</title>
		<link rel="alternate" type="text/html" href="http://vwiki.co.uk/index.php?title=VI-DB_db-base-data-v1.0.ps1&amp;diff=1496&amp;oldid=prev"/>
		<updated>2011-10-25T22:06:58Z</updated>

		<summary type="html">&lt;p&gt;Updated categories&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:06, 25 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l689&quot;&gt;Line 689:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 689:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:VMware]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:PowerCLI &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Script&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:PowerShell]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:PowerCLI]]&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sstrutt</name></author>
	</entry>
	<entry>
		<id>http://vwiki.co.uk/index.php?title=VI-DB_db-base-data-v1.0.ps1&amp;diff=1233&amp;oldid=prev</id>
		<title>Sstrutt: Added categories</title>
		<link rel="alternate" type="text/html" href="http://vwiki.co.uk/index.php?title=VI-DB_db-base-data-v1.0.ps1&amp;diff=1233&amp;oldid=prev"/>
		<updated>2011-03-21T18:00:27Z</updated>

		<summary type="html">&lt;p&gt;Added categories&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:00, 21 March 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l688&quot;&gt;Line 688:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 688:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Stop-Transcript&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Stop-Transcript&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:VMware]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:PowerShell]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:PowerCLI]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sstrutt</name></author>
	</entry>
	<entry>
		<id>http://vwiki.co.uk/index.php?title=VI-DB_db-base-data-v1.0.ps1&amp;diff=1204&amp;oldid=prev</id>
		<title>Sstrutt: Initial creation</title>
		<link rel="alternate" type="text/html" href="http://vwiki.co.uk/index.php?title=VI-DB_db-base-data-v1.0.ps1&amp;diff=1204&amp;oldid=prev"/>
		<updated>2011-03-04T15:10:12Z</updated>

		<summary type="html">&lt;p&gt;Initial creation&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
# =========================================================================================================================================&lt;br /&gt;
# Database Base Data Getter&lt;br /&gt;
# =========================================================================================================================================&lt;br /&gt;
# Simon Strutt        Jan 2011&lt;br /&gt;
# =========================================================================================================================================&lt;br /&gt;
#&lt;br /&gt;
# Version 1 &lt;br /&gt;
# - Initial creation&lt;br /&gt;
#&lt;br /&gt;
# ===========================================================================================================================================&lt;br /&gt;
&lt;br /&gt;
$start = Get-Date&lt;br /&gt;
$UserFile = &amp;quot;User.fil&amp;quot;&lt;br /&gt;
$PassFile = &amp;quot;Pass.fil&amp;quot;                           # Encrypted file to store password in&lt;br /&gt;
&lt;br /&gt;
# Include library files&lt;br /&gt;
. .\lib\Standard.ps1&lt;br /&gt;
. .\lib\PowerCLI-helper-v1.1.ps1&lt;br /&gt;
. .\temp\DS-LUN-v4.ps1&lt;br /&gt;
&lt;br /&gt;
# DB connection stuff...&lt;br /&gt;
$user = &amp;#039;powercli&amp;#039; &lt;br /&gt;
$pass = &amp;#039;powercli&amp;#039; &lt;br /&gt;
$database = &amp;#039;vi&amp;#039; &lt;br /&gt;
$MySQLHost = &amp;#039;192.168.10.128&amp;#039; &lt;br /&gt;
&lt;br /&gt;
$LabMgrSvr = &amp;quot;lbmgr-svr-a&amp;quot;             # Lab Manager (optional)&lt;br /&gt;
&lt;br /&gt;
$Major_Error = 0                       # Major error counter&lt;br /&gt;
$ErrorLog = @()                        # Minor error tracker&lt;br /&gt;
&lt;br /&gt;
# Flags&lt;br /&gt;
$UpdateScriptRun = 1                   # Update script runs log in database&lt;br /&gt;
$LogNonQueries = 1                     # Non Query (insert/update etc) logging&lt;br /&gt;
$UpdateCL = 1                          # Clusters&lt;br /&gt;
$UpdateESX = 1                         # ESXs&lt;br /&gt;
$UpdateDS = 1                          # Datastores&lt;br /&gt;
$UpdateNW = 1                          # Networks&lt;br /&gt;
$UpdateVM = 1                          # Virtual Machines&lt;br /&gt;
$UpdateLM = 1                          # Lab Manager (update VM external IPs)&lt;br /&gt;
&lt;br /&gt;
Start-Transcript -Path db-base-data.log&lt;br /&gt;
Log &amp;quot;Started script run at $start&amp;quot; &lt;br /&gt;
&lt;br /&gt;
if (!$UpdateCL -or !$UpdateESX -or !$UpdateDS -or !$UpdateNW -or !$UpdateVM) {&lt;br /&gt;
    $UpdateScriptRun = 0&lt;br /&gt;
    Log(&amp;quot;Updating of script run info in db disabled (performing partial run)&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$ScriptVer = [regex]::matches(($MyInvocation.MyCommand.Name), &amp;quot;(?&amp;lt;=v)[0-9]+(\.[0-9])+(?=.)&amp;quot;)&lt;br /&gt;
Log &amp;quot;Script version is $ScriptVer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# MySQL functions ========================================================================================================================&lt;br /&gt;
&lt;br /&gt;
function ConnectMySQL([string]$user, [string]$pass, [string]$MySQLHost, [string]$database) { &lt;br /&gt;
    # Load MySQL .NET Connector Objects &lt;br /&gt;
    [void][system.reflection.Assembly]::LoadWithPartialName(&amp;quot;MySql.Data&amp;quot;) &lt;br /&gt;
 &lt;br /&gt;
    # Open Connection &lt;br /&gt;
    $connStr = &amp;quot;server=&amp;quot; + $MySQLHost + &amp;quot;;port=3306;uid=&amp;quot; + $user + &amp;quot;;pwd=&amp;quot; + $pass + &amp;quot;;database=&amp;quot;+$database+&amp;quot;;Pooling=FALSE&amp;quot; &lt;br /&gt;
    try {&lt;br /&gt;
        $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr) &lt;br /&gt;
        $conn.Open()&lt;br /&gt;
    } catch [System.Management.Automation.PSArgumentException] {&lt;br /&gt;
        Log &amp;quot;Unable to connect to MySQL server, do you have the MySQL connector installed..?&amp;quot;&lt;br /&gt;
        Log $_&lt;br /&gt;
        Exit&lt;br /&gt;
    } catch {&lt;br /&gt;
        Log &amp;quot;Unable to connect to MySQL server...&amp;quot;&lt;br /&gt;
        Log $_.Exception.GetType().FullName&lt;br /&gt;
        Log $_.Exception.Message&lt;br /&gt;
        exit&lt;br /&gt;
    }&lt;br /&gt;
    Log (&amp;quot;Connected to MySQL database &amp;quot; + $conn.Database + &amp;quot; on &amp;quot; + $conn.DataSource + &amp;quot; (ver &amp;quot; + $conn.ServerVersion + &amp;quot;)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return $conn &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
function DisconnectMySQL {&lt;br /&gt;
    $SQLconn.Close()&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function ExecuteMySQLNonQuery([string]$query) { &lt;br /&gt;
    # NonQuery - Insert/Update/Delete query where no return data is required&lt;br /&gt;
    &lt;br /&gt;
    if ($LogNonQueries) {&lt;br /&gt;
        Log ($query)&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    try {&lt;br /&gt;
        $cmd = $SQLconn.CreateCommand()               # Create command object&lt;br /&gt;
        $cmd.CommandText = $query                     # Load query into object&lt;br /&gt;
        $RowsInserted = $cmd.ExecuteNonQuery()        # Execute command&lt;br /&gt;
        $cmd.Dispose()                                # Dispose of command object&lt;br /&gt;
        if ($RowsInserted) { &lt;br /&gt;
            return $RowInserted &lt;br /&gt;
        } else { &lt;br /&gt;
            return $false &lt;br /&gt;
        }&lt;br /&gt;
    } catch {&lt;br /&gt;
        Log (&amp;quot;ExecuteMySQLNonQuery($query) error...&amp;quot;)&lt;br /&gt;
        Log $_.Exception.GetType().FullName&lt;br /&gt;
        Log $_.Exception.Message&lt;br /&gt;
        Exit&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function ExecuteMySQLQuery([string]$query) { &lt;br /&gt;
    # Query - Select etc query where return data is expected&lt;br /&gt;
    try {&lt;br /&gt;
        $cmd = $SQLconn.CreateCommand()                                             # Create command object&lt;br /&gt;
        $cmd.CommandText = $query                                                   # Load query into object&lt;br /&gt;
        $dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($cmd)     # Create data adapter from query command&lt;br /&gt;
        $dataSet = New-Object System.Data.DataSet                                   # Create dataset&lt;br /&gt;
        $dataAdapter.Fill($dataSet, &amp;quot;data&amp;quot;)                                         # Fill dataset from data adapter, with name &amp;quot;data&amp;quot;              &lt;br /&gt;
        $cmd.Dispose()&lt;br /&gt;
        $dataAdapter.Dispose()&lt;br /&gt;
        return $dataSet.Tables[&amp;quot;data&amp;quot;]                                              # Returns an array of results&lt;br /&gt;
    } catch {&lt;br /&gt;
        Log (&amp;quot;ExecuteMySQLQuery($query) error...&amp;quot;)&lt;br /&gt;
        Log $_.Exception.GetType().FullName&lt;br /&gt;
        Log $_.Exception.Message&lt;br /&gt;
        Exit&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function ExecuteMySQLScalar([string]$query) {&lt;br /&gt;
    # Scalar - Select etc query where a single value of return data is expected&lt;br /&gt;
    try {&lt;br /&gt;
        $cmd = $SQLconn.CreateCommand()                                             # Create command object&lt;br /&gt;
        $cmd.CommandText = $query                                                   # Load query into object&lt;br /&gt;
        $cmd.ExecuteScalar()                                                        # Execute command&lt;br /&gt;
    } catch {&lt;br /&gt;
        Log (&amp;quot;ExecuteMySQLScalar($query) error...&amp;quot;)&lt;br /&gt;
        Log $_.Exception.GetType().FullName&lt;br /&gt;
        Log $_.Exception.Message&lt;br /&gt;
        Exit&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# =============================================================================================&lt;br /&gt;
# Lab Manager SOAP connection functions (adapted from POSH - http://poshcode.org/753)&lt;br /&gt;
&lt;br /&gt;
function New-ObjectFromProxy {&lt;br /&gt;
	param($proxy, $proxyAttributeName, $typeName)&lt;br /&gt;
&lt;br /&gt;
	# Locate the assembly for $proxy&lt;br /&gt;
	$attribute = $proxy | gm | where { $_.Name -eq $proxyAttributeName }&lt;br /&gt;
	$str = &amp;quot;`$assembly = [&amp;quot; + $attribute.TypeName + &amp;quot;].assembly&amp;quot;&lt;br /&gt;
	invoke-expression $str&lt;br /&gt;
&lt;br /&gt;
	# Instantiate an AuthenticationHeaderValue object.&lt;br /&gt;
	$type = $assembly.getTypes() | where { $_.Name -eq $typeName }&lt;br /&gt;
	return $assembly.CreateInstance($type)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Connect-LabManager {&lt;br /&gt;
	param($server, $credential)&lt;br /&gt;
    &lt;br /&gt;
    Write-Host &amp;quot;Connecting to $server...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	# Log in to Lab Manager&amp;#039;s web service.&lt;br /&gt;
	$server = &amp;quot;https://&amp;quot; + $server + &amp;quot;/&amp;quot;&lt;br /&gt;
	$endpoint = $server + &amp;quot;LabManager/SOAP/LabManager.asmx&amp;quot;&lt;br /&gt;
    try {&lt;br /&gt;
	   $proxy = new-webserviceproxy -uri $endpoint -cred $credential -ErrorAction:Stop&lt;br /&gt;
    } catch {&lt;br /&gt;
        Write-Host $_&lt;br /&gt;
        if ($_.ErrorDetails.Message -match &amp;quot;401: Unauthorized&amp;quot;) {&lt;br /&gt;
            Remove-Item $UserFile&lt;br /&gt;
            Remove-Item $PassFile&lt;br /&gt;
            Write-Host &amp;quot;User/pass credential cache files have been deleted&amp;quot;&lt;br /&gt;
        } else {&lt;br /&gt;
             Write-Host $_.Exception.Message&lt;br /&gt;
             Write-Host $_.Exception.GetType().FullName&lt;br /&gt;
        }     &lt;br /&gt;
        PressAnyKeyToExit&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	# Before continuing we need to add an Authentication Header to $proxy.&lt;br /&gt;
	$authHeader = New-ObjectFromProxy -proxy $proxy -proxyAttributeName &amp;quot;AuthenticationHeaderValue&amp;quot; -typeName &amp;quot;AuthenticationHeader&amp;quot;&lt;br /&gt;
	$authHeader.username = $credential.GetNetworkCredential().UserName&lt;br /&gt;
	$authHeader.password = $credential.GetNetworkCredential().Password&lt;br /&gt;
	$proxy.AuthenticationHeaderValue = $authHeader&lt;br /&gt;
	return $proxy&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Ignore-SslErrors {&lt;br /&gt;
	# Create a compilation environment&lt;br /&gt;
	$Provider=New-Object Microsoft.CSharp.CSharpCodeProvider&lt;br /&gt;
	$Compiler=$Provider.CreateCompiler()&lt;br /&gt;
	$Params=New-Object System.CodeDom.Compiler.CompilerParameters&lt;br /&gt;
	$Params.GenerateExecutable=$False&lt;br /&gt;
	$Params.GenerateInMemory=$True&lt;br /&gt;
	$Params.IncludeDebugInformation=$False&lt;br /&gt;
	$Params.ReferencedAssemblies.Add(&amp;quot;System.DLL&amp;quot;) &amp;gt; $null&lt;br /&gt;
	$TASource=@&amp;#039;&lt;br /&gt;
	  namespace Local.ToolkitExtensions.Net.CertificatePolicy {&lt;br /&gt;
	    public class TrustAll : System.Net.ICertificatePolicy {&lt;br /&gt;
	      public TrustAll() { &lt;br /&gt;
	      }&lt;br /&gt;
	      public bool CheckValidationResult(System.Net.ServicePoint sp,&lt;br /&gt;
	        System.Security.Cryptography.X509Certificates.X509Certificate cert, &lt;br /&gt;
	        System.Net.WebRequest req, int problem) {&lt;br /&gt;
	        return true;&lt;br /&gt;
	      }&lt;br /&gt;
	    }&lt;br /&gt;
	  }&lt;br /&gt;
&amp;#039;@ &lt;br /&gt;
	$TAResults=$Provider.CompileAssemblyFromSource($Params,$TASource)&lt;br /&gt;
	$TAAssembly=$TAResults.CompiledAssembly&lt;br /&gt;
&lt;br /&gt;
	## We now create an instance of the TrustAll and attach it to the ServicePointManager&lt;br /&gt;
	$TrustAll=$TAAssembly.CreateInstance(&amp;quot;Local.ToolkitExtensions.Net.CertificatePolicy.TrustAll&amp;quot;)&lt;br /&gt;
	[System.Net.ServicePointManager]::CertificatePolicy=$TrustAll&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Log-Error($text) {&lt;br /&gt;
#    if (!$ErrorLog) {&lt;br /&gt;
#        $ErrorLog = @()&lt;br /&gt;
#    }&lt;br /&gt;
    $script:ErrorLog += $text&lt;br /&gt;
    Log (&amp;quot;ERROR: &amp;quot; + $text)&lt;br /&gt;
    Log (&amp;quot;Error count now &amp;quot; + $ErrorLog.Length)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Pre Amble ==============================================================================================================================&lt;br /&gt;
&lt;br /&gt;
# Connect to MySQL database&lt;br /&gt;
$SQLconn = ConnectMySQL $user $pass $MySQLHost $database&lt;br /&gt;
&lt;br /&gt;
# Create script_run entry&lt;br /&gt;
if ($UpdateScriptRun) {&lt;br /&gt;
    ExecuteMySQLNonQuery(&amp;quot;INSERT INTO script_run (start, version) VALUES (NOW(), &amp;#039;&amp;quot; + $ScriptVer + &amp;quot;&amp;#039;);&amp;quot;)&lt;br /&gt;
    $runid = ExecuteMySQLScalar(&amp;quot;SELECT LAST_INSERT_ID();&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Get list of VC&amp;#039;s (checks the SQL connection is in good working order as well)&lt;br /&gt;
$VCs = ExecuteMySQLQuery(&amp;quot;SELECT vcid, name, site FROM vc;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Disconnect any existing VI Server sessions (otherwise you can end up with duplicate VM&amp;#039;s)&lt;br /&gt;
if ($DefaultVIServers.Count) {&lt;br /&gt;
    Log(&amp;quot;Disconnect existing vCentre server connections...&amp;quot;)&lt;br /&gt;
    Disconnect-VIServer -Server * -Force -Confirm:$false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Load password credential from encrypted file&lt;br /&gt;
$pass = Get-Content $PassFile | ConvertTo-SecureString&lt;br /&gt;
$user = Get-Content $UserFile&lt;br /&gt;
$cred = New-Object System.Management.Automation.PsCredential($user, $pass)&lt;br /&gt;
&lt;br /&gt;
# Business Loop ============================================================================================================================&lt;br /&gt;
&lt;br /&gt;
foreach ($vc in $VCs) {&lt;br /&gt;
    # Check its a valid record 1st&lt;br /&gt;
    if (!$vc.vcid) {&lt;br /&gt;
        Continue&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    # Connect to vCentre&lt;br /&gt;
    try {&lt;br /&gt;
        Log(&amp;quot;Connecting to &amp;quot; + $vc.name)&lt;br /&gt;
        $VCconn = Connect-VIServer -Server $vc.name -Credential $cred -WarningAction SilentlyContinue -ErrorAction &amp;quot;Stop&amp;quot;&lt;br /&gt;
    } catch [VMware.VimAutomation.ViCore.Types.V1.ErrorHandling.InvalidLogin] {&lt;br /&gt;
        Log(&amp;quot;Unable to connect to vCentre, invalid logon error !!&amp;quot;)&lt;br /&gt;
        Log(&amp;quot;Abandoning further script processing in order to prevent potential account lockout.&amp;quot;)&lt;br /&gt;
        $Major_Error = 99&lt;br /&gt;
        Break&lt;br /&gt;
    } catch {&lt;br /&gt;
        Log(&amp;quot;Unable to connect to vCentre - &amp;quot; + $_)&lt;br /&gt;
        $Major_Error += 1&lt;br /&gt;
        Continue&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if ($UpdateScriptRun) {&lt;br /&gt;
        # Get VC info&lt;br /&gt;
        $vcinfo = (Get-View ServiceInstance).Content.About&lt;br /&gt;
        ExecuteMySQLNonQuery(&amp;quot;UPDATE vc SET ver=&amp;#039;&amp;quot; + $vcinfo.Version + &amp;quot;&amp;#039;, build=&amp;quot; + $vcinfo.Build + &amp;quot;, last_pass=NOW() WHERE vcid=&amp;quot; + $vc.vcid + &amp;quot;;&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    # Clusters ------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
    if ($UpdateCL) {&lt;br /&gt;
        # Get existing clusters from VC&lt;br /&gt;
        $vcClusters = Get-Cluster&lt;br /&gt;
        &lt;br /&gt;
        foreach ($cl in $vcClusters) {&lt;br /&gt;
            # Add/update cluster&lt;br /&gt;
            if ($cl.DrsEnabled) {&lt;br /&gt;
                $query = &amp;quot;INSERT INTO cluster (vcid, name, ha, drs, exist) VALUES (&amp;#039;&amp;quot; + $vc.vcid + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $cl.Name + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $cl.HAEnabled.GetHashCode() + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $cl.DrsAutomationLevel + &amp;quot;&amp;#039;, 1) &amp;quot;&lt;br /&gt;
                $query += &amp;quot;ON DUPLICATE KEY UPDATE ha=&amp;quot; + $cl.HAEnabled.GetHashCode() + &amp;quot;, drs=&amp;#039;&amp;quot; + $cl.DrsAutomationLevel + &amp;quot;&amp;#039;, exist=1;&amp;quot;&lt;br /&gt;
            } else {&lt;br /&gt;
                $query = &amp;quot;INSERT INTO cluster (vcid, name, ha, drs, exist) VALUES (&amp;#039;&amp;quot; + $vc.vcid + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $cl.Name + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $cl.HAEnabled.GetHashCode() + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $cl.DrsEnabled.GetHashCode() + &amp;quot;&amp;#039;, 1) &amp;quot;&lt;br /&gt;
                $query += &amp;quot;ON DUPLICATE KEY UPDATE ha=&amp;quot; + $cl.HAEnabled.GetHashCode() + &amp;quot;, drs=&amp;#039;&amp;quot; + $cl.DrsEnabled.GetHashCode() + &amp;quot;&amp;#039;, exist=1;&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
            ExecuteMySQLNonQuery($query)&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        # Mark clusters that no longer exist&lt;br /&gt;
        $dbClusters = ExecuteMySQLQuery(&amp;quot;SELECT clid, name FROM cluster WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        foreach ($cl in $dbClusters) {&lt;br /&gt;
            if (!($vcClusters |?{$_.Name -eq $cl.name})) {&lt;br /&gt;
                if (!$cl.clid) {&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                Log (&amp;quot;HIDE: &amp;quot; + $cl.name)&lt;br /&gt;
                ExecuteMySQLNonQuery(&amp;quot;UPDATE cluster SET exist=0 WHERE clid=&amp;quot; + $cl.clid + &amp;quot;;&amp;quot;)&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    # ESX --------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
    if ($UpdateESX) {&lt;br /&gt;
        $vcESXs = Get-VMHost&lt;br /&gt;
        &lt;br /&gt;
        # Get clusters and ESXs from db&lt;br /&gt;
        $dbClusters = ExecuteMySQLQuery(&amp;quot;SELECT clid, name FROM cluster WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        #$dbESXs = ExecuteMySQLQuery(&amp;quot;SELECT esxid, name from esx WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot;;&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Add/update info in db&lt;br /&gt;
        foreach ($esx in $vcESXs) {&lt;br /&gt;
            $query = &amp;quot;INSERT INTO esx (vcid, clid, name, exist, ver, build, model, cpu_core, cpu_sock, mem, cpu_model) &amp;quot;&lt;br /&gt;
            $query += &amp;quot;VALUES (&amp;quot; + $vc.vcid + &amp;quot;, &amp;quot; + ($dbClusters |?{$_.name -eq $esx.Parent} | Select -ExpandProperty clid) + &amp;quot;, &amp;#039;&amp;quot; + $esx.Name.Split(&amp;quot;.&amp;quot;)[0] + &amp;quot;&amp;#039;, 1&amp;quot;&lt;br /&gt;
            $query += &amp;quot;, &amp;#039;&amp;quot; + $esx.Version + &amp;quot;&amp;#039;, &amp;quot; + $esx.Build + &amp;quot;, &amp;#039;&amp;quot; + ($esx.Model -replace &amp;#039; {2,}&amp;#039;,&amp;#039; &amp;#039;) + &amp;quot;&amp;#039;, &amp;quot; + $esx.NumCpu + &amp;quot;, &amp;quot; + $esx.ExtensionData.Hardware.CpuPkg.Count + &amp;quot;, &amp;quot; + $esx.MemoryTotalMB&lt;br /&gt;
            $query += &amp;quot;, &amp;#039;&amp;quot; + $esx.ExtensionData.Summary.Hardware.CpuModel + &amp;quot;&amp;#039;) ON DUPLICATE KEY UPDATE esxid=LAST_INSERT_ID(esxid), clid=&amp;quot; + ($dbClusters |?{$_.name -eq $esx.Parent} | Select -ExpandProperty clid)&lt;br /&gt;
            $query += &amp;quot;, exist=1, ver=&amp;#039;&amp;quot; + $esx.Version + &amp;quot;&amp;#039;, build=&amp;quot; + $esx.Build + &amp;quot;, model=&amp;#039;&amp;quot; + ($esx.Model -replace &amp;#039; {2,}&amp;#039;,&amp;#039; &amp;#039;)&lt;br /&gt;
            $query += &amp;quot;&amp;#039;, cpu_core=&amp;quot; + $esx.NumCpu + &amp;quot;, cpu_sock=&amp;quot; + $esx.ExtensionData.Hardware.CpuPkg.Count + &amp;quot;, mem=&amp;quot; + $esx.MemoryTotalMB + &amp;quot;, cpu_model=&amp;#039;&amp;quot; + $esx.ExtensionData.Summary.Hardware.CpuModel + &amp;quot;&amp;#039;;&amp;quot;&lt;br /&gt;
            ExecuteMySQLNonQuery($query)&lt;br /&gt;
            &lt;br /&gt;
            # Get esxid from last query&lt;br /&gt;
            $esxid = ExecuteMySQLScalar(&amp;quot;SELECT LAST_INSERT_ID();&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            $query = &amp;quot;INSERT INTO esx_state (esxid, state) VALUES (&amp;quot; + $esxid + &amp;quot;, &amp;#039;&amp;quot; + $esx.ConnectionState + &amp;quot;&amp;#039;) ON DUPLICATE KEY UPDATE state=&amp;#039;&amp;quot; + $esx.ConnectionState + &amp;quot;&amp;#039;;&amp;quot;&lt;br /&gt;
            ExecuteMySQLNonQuery($query)&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
        # Mark ESX&amp;#039;s that no longer exist&lt;br /&gt;
        $dbESXs = ExecuteMySQLQuery(&amp;quot;SELECT esxid, name FROM esx WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        foreach ($esx in $dbESXs) {&lt;br /&gt;
            if (!($vcESXs |?{$_.Name.Split(&amp;quot;.&amp;quot;)[0] -eq $esx.name})) {&lt;br /&gt;
                if (!$esx.esxid) {&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                Log(&amp;quot;HIDE: &amp;quot; + $esx.name)&lt;br /&gt;
                ExecuteMySQLNonQuery(&amp;quot;UPDATE esx SET exist=0 WHERE esxid=&amp;quot; + $esx.esxid + &amp;quot;;&amp;quot;)&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
                &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    # Datastores ------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
    if ($UpdateDS) {&lt;br /&gt;
        $vcDSs = Get-Datastore&lt;br /&gt;
        &lt;br /&gt;
        # Get SAN model(s) and LUN ID&amp;#039;s&lt;br /&gt;
        if ($vcinfo.version -lt 4) {&lt;br /&gt;
            Log(&amp;quot;Getting v3 LUN info...&amp;quot;)&lt;br /&gt;
            $luns = Get-DS-LUNs-v3 (Get-VMHost)&lt;br /&gt;
        } else {&lt;br /&gt;
            Log(&amp;quot;Getting v4 LUN info...&amp;quot;)&lt;br /&gt;
            $luns = Get-DS-LUNs-v4&lt;br /&gt;
        }&lt;br /&gt;
        Log(&amp;quot;...got &amp;quot; + $luns.count + &amp;quot; LUNs&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        foreach ($ds in $vcDSs) {&lt;br /&gt;
            $lun = $luns |?{$_.Datastore -eq $ds.Name}&lt;br /&gt;
            if (!$lun) {&lt;br /&gt;
                Log-Error (&amp;quot;Couldn&amp;#039;t find LUN ID for datastore&amp;quot; + $ds.Name)&lt;br /&gt;
                Continue&lt;br /&gt;
            }&lt;br /&gt;
            # Workaround for occassional duplicate LUNs retruned by Get-DS-LUN&lt;br /&gt;
            if ($lun.count) {&lt;br /&gt;
                $lun = $lun[0]&lt;br /&gt;
            }&lt;br /&gt;
            $query = &amp;quot;INSERT INTO ds (vcid, name, exist, size, used, san_model, lun) VALUES (&amp;#039;&amp;quot; + $vc.vcid + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $ds.Name + &amp;quot;&amp;#039;, 1, &amp;quot; + $ds.CapacityMB + &amp;quot;, &amp;quot; + ($ds.CapacityMB - $ds.FreeSpaceMB)&lt;br /&gt;
            $query += &amp;quot;, &amp;#039;&amp;quot; + $lun.Make + &amp;quot; &amp;quot; + $lun.Model + &amp;quot;&amp;#039;, &amp;quot; + $lun.LUN + &amp;quot;) ON DUPLICATE KEY UPDATE &amp;quot;&lt;br /&gt;
            $query += &amp;quot;exist=1, size=&amp;quot; + $ds.CapacityMB + &amp;quot;, used=&amp;quot; + ($ds.CapacityMB - $ds.FreeSpaceMB) + &amp;quot;, san_model=&amp;#039;&amp;quot; + $lun.Make + &amp;quot; &amp;quot; + $lun.Model + &amp;quot;&amp;#039;, lun=&amp;quot; + $lun.LUN + &amp;quot;;&amp;quot;&lt;br /&gt;
            ExecuteMySQLNonQuery($query)&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        # Link ESX&amp;#039;s to DS&amp;#039;s&lt;br /&gt;
        $dbESXs = ExecuteMySQLQuery(&amp;quot;SELECT esxid, name FROM esx WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        $dbDSs = ExecuteMySQLQuery(&amp;quot;SELECT dsid, name FROM ds WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        foreach ($esx in $dbESXs) {&lt;br /&gt;
            if (!$esx.esxid) {&lt;br /&gt;
                Continue&lt;br /&gt;
            }&lt;br /&gt;
            $vcESXDCs = Get-Datastore -VMHost (Get-VMHost ($esx.name + &amp;quot;*&amp;quot;))&lt;br /&gt;
            foreach ($esxdc in $vcESXDCs) {&lt;br /&gt;
                # Catch linking failure (prevents SQL query failure, allows script to continue)&lt;br /&gt;
                $dsid = $dbDSs |?{$_.name -eq $esxdc.Name} | Select -ExpandProperty dsid&lt;br /&gt;
                if (!$dsid) {&lt;br /&gt;
                    Log-Error (&amp;quot;Couldn&amp;#039;t find datastore&amp;quot; + $esxdc.Name + &amp;quot; in db&amp;quot;)&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                ExecuteMySQLNonQuery(&amp;quot;INSERT IGNORE INTO esx2ds (esxid, dsid) VALUES (&amp;quot; + $esx.esxid + &amp;quot;, &amp;quot; + $dsid +&amp;quot;);&amp;quot;)&lt;br /&gt;
            }&lt;br /&gt;
        }    &lt;br /&gt;
        &lt;br /&gt;
        # Mark datastores that no longer exist&lt;br /&gt;
        $dbDSs = ExecuteMySQLQuery(&amp;quot;SELECT dsid, name FROM ds WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        foreach ($ds in $dbDSs) {&lt;br /&gt;
            if (!($vcDSs |?{$_.Name -eq $ds.name})) {&lt;br /&gt;
                if (!$ds.dsid) {&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                Log (&amp;quot;HIDE: &amp;quot; + $ds.name)&lt;br /&gt;
                ExecuteMySQLNonQuery(&amp;quot;UPDATE ds SET exist=0 WHERE dsid=&amp;quot; + $ds.dsid + &amp;quot;;&amp;quot;)&lt;br /&gt;
            }&lt;br /&gt;
        }   &lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    # Networks ------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
    if ($UpdateNW) {&lt;br /&gt;
        $vcNWs = Get-VirtualPortGroup&lt;br /&gt;
        &lt;br /&gt;
        foreach ($nw in $vcNWs) {&lt;br /&gt;
            $query = &amp;quot;INSERT INTO nw (vcid, name, exist, vlan) VALUES (&amp;#039;&amp;quot; + $vc.vcid + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $nw.Name + &amp;quot;&amp;#039;, 1, &amp;quot; + $nw.VLanId + &amp;quot;) &amp;quot;&lt;br /&gt;
            $query += &amp;quot;ON DUPLICATE KEY UPDATE exist=1, vlan=&amp;quot; + $nw.VLanId + &amp;quot;;&amp;quot;&lt;br /&gt;
            ExecuteMySQLNonQuery($query)&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        # Link ESX&amp;#039;s to NW&amp;#039;s&lt;br /&gt;
        $dbESXs = ExecuteMySQLQuery(&amp;quot;SELECT esxid, name FROM esx WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        $dbNWs = ExecuteMySQLQuery(&amp;quot;SELECT nwid, name FROM nw WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        foreach ($esx in $dbESXs) {&lt;br /&gt;
            if (!$esx.esxid) {&lt;br /&gt;
                Continue&lt;br /&gt;
            }&lt;br /&gt;
            $vcESXNWs = Get-VirtualPortGroup -VMHost (Get-VMHost ($esx.name + &amp;quot;*&amp;quot;))&lt;br /&gt;
            foreach ($esxnw in $vcESXNWs) {&lt;br /&gt;
                # Catch linking failure (prevents SQL query failure, allows script to continue)&lt;br /&gt;
                $nwid = $dbNWs |?{$_.name -eq $esxnw.Name} | Select -ExpandProperty nwid&lt;br /&gt;
                if (!$nwid) {&lt;br /&gt;
                    Log-Error (&amp;quot;Couldn&amp;#039;t find network &amp;quot; + $esxnw.Name + &amp;quot; (vlan &amp;quot; + $esxnw.VLanId + &amp;quot;) in db&amp;quot;)&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                ExecuteMySQLNonQuery(&amp;quot;INSERT IGNORE INTO esx2nw (esxid, nwid) VALUES (&amp;quot; + $esx.esxid + &amp;quot;, &amp;quot; + $nwid +&amp;quot;);&amp;quot;)&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        # Mark networks that no longer exist&lt;br /&gt;
        $dbNWs = ExecuteMySQLQuery(&amp;quot;SELECT nwid, name FROM nw WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        foreach ($ds in $dbNWs) {&lt;br /&gt;
            if (!($vcNWs |?{$_.Name -eq $nw.name})) {&lt;br /&gt;
                if (!$nw.nwid) {&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                Log (&amp;quot;HIDE: &amp;quot; + $nw.name)&lt;br /&gt;
                ExecuteMySQLNonQuery(&amp;quot;UPDATE nw SET exist=0 WHERE nwid=&amp;quot; + $nw.nwid + &amp;quot;;&amp;quot;)&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    # Virtual Machines --------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
    if ($UpdateVM) {&lt;br /&gt;
        $vcVMs = Get-VM&lt;br /&gt;
        $dbClusters = ExecuteMySQLQuery(&amp;quot;SELECT clid, name FROM cluster WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot;;&amp;quot;)&lt;br /&gt;
        $dbESXs = ExecuteMySQLQuery(&amp;quot;SELECT esxid, name FROM esx WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        $dbNWs = ExecuteMySQLQuery(&amp;quot;SELECT nwid, name FROM nw WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot;;&amp;quot;)&lt;br /&gt;
        $dbDSs = ExecuteMySQLQuery(&amp;quot;SELECT dsid, name FROM ds WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot;;&amp;quot;)&lt;br /&gt;
        $dbOSs = ExecuteMySQLQuery(&amp;quot;SELECT osid, guest_name FROM os;&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Add/update VM&amp;#039;s in database&lt;br /&gt;
        foreach ($vm in $vcVMs) {&lt;br /&gt;
            # Add base record&lt;br /&gt;
            # Catch linking failure (prevents SQL query failure, allows script to continue)&lt;br /&gt;
            $clid = $dbClusters |?{$_.name -eq (Get-Cluster -VM $vm).Name} | Select -ExpandProperty clid&lt;br /&gt;
            $vmGuest = Get-VMGuest -VM $vm&lt;br /&gt;
            if (!$clid) {&lt;br /&gt;
                Log-Error (&amp;quot;Couldn&amp;#039;t find cluster &amp;quot; + (Get-Cluster -VM $vm).Name + &amp;quot; for VM: &amp;quot; + $vm.Name + &amp;quot; in db&amp;quot;)&lt;br /&gt;
                Continue&lt;br /&gt;
            }&lt;br /&gt;
            $esxid = $dbESXs |?{$_.name -eq $vm.VMHost.Name.Split(&amp;quot;.&amp;quot;)[0]} | Select -ExpandProperty esxid&lt;br /&gt;
            if (!$clid) {&lt;br /&gt;
                Log-Error (&amp;quot;Couldn&amp;#039;t find ESX &amp;quot; + $vm.VMHost.Name.Split(&amp;quot;.&amp;quot;)[0] + &amp;quot; for VM: &amp;quot; + $vm.Name + &amp;quot; in db&amp;quot;)&lt;br /&gt;
                Continue&lt;br /&gt;
            }&lt;br /&gt;
            if ($vm.PowerState -eq &amp;quot;PoweredOn&amp;quot;) {&lt;br /&gt;
                $on = 1&lt;br /&gt;
            } else {&lt;br /&gt;
                $on = 0&lt;br /&gt;
            }&lt;br /&gt;
            $query = &amp;quot;INSERT INTO vm (uuid, pid, name, exist, is_on, vcid, clid, esxid, hostname) VALUES (&amp;#039;&amp;quot; + $vm.ExtensionData.Config.Uuid + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $vm.PersistentId + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $vm.Name&lt;br /&gt;
            $query += &amp;quot;&amp;#039;, 1, &amp;quot; + $on + &amp;quot;, &amp;quot; + $vc.vcid + &amp;quot;, &amp;quot; + $clid + &amp;quot;, &amp;quot; + $esxid + &amp;quot;, &amp;#039;&amp;quot; + $vmGuest.HostName + &amp;quot;&amp;#039;) ON DUPLICATE KEY UPDATE vmid=LAST_INSERT_ID(vmid), name=&amp;#039;&amp;quot; + $vm.Name&lt;br /&gt;
            $query += &amp;quot;&amp;#039;, exist=1, is_on=&amp;quot; + $on + &amp;quot;, clid=&amp;quot; + $clid + &amp;quot;, esxid=&amp;quot; + $esxid + &amp;quot;, hostname=&amp;#039;&amp;quot; + $vmGuest.HostName + &amp;quot;&amp;#039;;&amp;quot;&lt;br /&gt;
            ExecuteMySQLNonQuery($query)&lt;br /&gt;
            &lt;br /&gt;
            # Get vmid from last query&lt;br /&gt;
            $vmid = ExecuteMySQLScalar(&amp;quot;SELECT LAST_INSERT_ID();&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            $vcNICs = Get-NetworkAdapter -VM $vm       #(VI3 doesn&amp;#039;t return Network Adapter x info)&lt;br /&gt;
            #$vcNICs = $vm.Guest.Nics&lt;br /&gt;
            &lt;br /&gt;
            foreach ($nic in $vcNICs) {&lt;br /&gt;
                # Add NIC&lt;br /&gt;
                $nwid = $dbNWs |?{$_.name -eq $nic.NetworkName} | Select -ExpandProperty nwid &lt;br /&gt;
                if (!$nwid) {&lt;br /&gt;
                    Log-Error (&amp;quot;Couldn&amp;#039;t find network &amp;quot; + $nic.Name + &amp;quot; for VM: &amp;quot; + $vm.Name + &amp;quot; in db&amp;quot;)&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                $nwno = [regex]::replace($nic.Name, &amp;quot;Network (?i:A)dapter &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
                if (!([regex]::matches($nwno, &amp;quot;\d&amp;quot;).Count)) {&lt;br /&gt;
                    if ($vm.NetworkAdapters.Count -eq 1) {&lt;br /&gt;
                        $nwno = 1&lt;br /&gt;
                    } else {&lt;br /&gt;
                        Log-Error (&amp;quot;Couldn&amp;#039;t get NIC number from &amp;quot; + $nic.Name + &amp;quot; for VM: &amp;quot; + $vm.Name)&lt;br /&gt;
                        Continue&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                $query = &amp;quot;INSERT INTO vm_nic (vmid, num, nwid, type) VALUES (&amp;quot; + $vmid + &amp;quot;, &amp;quot; + $nwno + &amp;quot;, &amp;quot; + $nwid + &amp;quot;, &amp;#039;&amp;quot; + $nic.Type + &amp;quot;&amp;#039;) &amp;quot;&lt;br /&gt;
                $query += &amp;quot;ON DUPLICATE KEY UPDATE vnicid=LAST_INSERT_ID(vnicid), nwid=&amp;quot; + $nwid + &amp;quot;, type=&amp;#039;&amp;quot; + $nic.Type + &amp;quot;&amp;#039;;&amp;quot;&lt;br /&gt;
                ExecuteMySQLNonQuery($query)&lt;br /&gt;
                &lt;br /&gt;
                # Get vnicid from last query&lt;br /&gt;
                $vnicid = ExecuteMySQLScalar(&amp;quot;SELECT LAST_INSERT_ID();&amp;quot;)&lt;br /&gt;
                &lt;br /&gt;
                # Find related IP(s)&lt;br /&gt;
                $ips = $vm.Guest.Nics |?{$_.NetworkName -eq $nic.NetworkName} | Select -ExpandProperty IPAddress&lt;br /&gt;
                if (!$ips) {&lt;br /&gt;
                    Log-Error (&amp;quot;Couldn&amp;#039;t find IP(s) for VM: &amp;quot; + $vm.Name + &amp;quot; NIC: &amp;quot; + $nic.Name + &amp;quot; from VC&amp;quot;)&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                foreach ($ip in $ips) {&lt;br /&gt;
                    $query = &amp;quot;INSERT INTO vm2ip (vmid, vnicid, ip) VALUES (&amp;quot; + $vmid + &amp;quot;, &amp;quot; + $vnicid + &amp;quot;, INET_ATON(&amp;#039;&amp;quot; + $ip + &amp;quot;&amp;#039;)) &amp;quot;&lt;br /&gt;
                    $query += &amp;quot;ON DUPLICATE KEY UPDATE ip=INET_ATON(&amp;#039;&amp;quot; + $ip + &amp;quot;&amp;#039;);&amp;quot;&lt;br /&gt;
                    ExecuteMySQLNonQuery($query)&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
                        &lt;br /&gt;
            # Add VMDK record(s)&lt;br /&gt;
            foreach ($vmdk in $vm.HardDisks) {&lt;br /&gt;
                # Create VMDK record&lt;br /&gt;
                $dsid = $dbDSs |?{$_.name -eq (([regex]::matches($vmdk.Filename, &amp;quot;(?&amp;lt;=\[)(.*?)(?=\])&amp;quot;)).Item(0).Value)} | Select -ExpandProperty dsid&lt;br /&gt;
                if (!$dsid) {&lt;br /&gt;
                    Log-Error (&amp;quot;Couldn&amp;#039;t find datastore &amp;quot; + (([regex]::matches($vmdk.Filename, &amp;quot;(?&amp;lt;=\[)(.*?)(?=\])&amp;quot;)).Item(0).Value) + &amp;quot; for VM: &amp;quot; + $vm.Name + &amp;quot; in db&amp;quot;)&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                $dkno = [regex]::replace($vmdk.Name, &amp;quot;Hard (?i:D)isk &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
                $dksize = [math]::Round(($vmdk.CapacityKB / 1024), 0)&lt;br /&gt;
                if ($vmdk.StorageFormat -eq &amp;quot;Thin&amp;quot;) {&lt;br /&gt;
                    $dkthin = 1&lt;br /&gt;
                } else {&lt;br /&gt;
                    $dkthin = 0&lt;br /&gt;
                }&lt;br /&gt;
                $query = &amp;quot;INSERT INTO vmdk (dsid, vmid, num, size, thin, path) VALUES (&amp;quot; + $dsid + &amp;quot;, &amp;quot; + $vmid + &amp;quot;, &amp;quot; + $dkno + &amp;quot;, &amp;quot; + $dksize + &amp;quot;, &amp;quot; + $dkthin&lt;br /&gt;
                $query +=  &amp;quot;, &amp;#039;&amp;quot; + $vmdk.Filename + &amp;quot;&amp;#039;) ON DUPLICATE KEY UPDATE dsid=&amp;quot; + $dsid + &amp;quot;, size=&amp;quot; + $dksize + &amp;quot;, thin=&amp;quot; + $dkthin + &amp;quot;, path=&amp;#039;&amp;quot; + $vmdk.Filename + &amp;quot;&amp;#039;;&amp;quot;&lt;br /&gt;
                ExecuteMySQLNonQuery($query)&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
        &lt;br /&gt;
            # Add/update extended VM info&lt;br /&gt;
                        &lt;br /&gt;
            $vmvcpath = [regex]::replace((Get-FolderPath (Get-Folder -Id $vm.FolderId)), &amp;quot;\\&amp;quot;, &amp;quot;\\&amp;quot;)&lt;br /&gt;
            #$vmvcpath = Get-FolderPath (Get-Folder -Id $vm.FolderId)&lt;br /&gt;
            #$vmxpath = [regex]::replace($vm.ExtensionData.Config.Files.VmPathName, &amp;quot;\&amp;quot;, &amp;quot;\\&amp;quot;)&lt;br /&gt;
            $vmxpath = $vm.ExtensionData.Config.Files.VmPathName&lt;br /&gt;
            $vmscsi = ($vm.ExtensionData.Config.Hardware.Device | where {$_.DeviceInfo.Label -match &amp;quot;SCSI Controller&amp;quot;}).DeviceInfo.Summary&lt;br /&gt;
            $vmnotes = [regex]::replace($vm.Notes, &amp;quot;(\s?\bvRanger.*Repository \[.*\]\s?)|(\[vRanger.*Host \[.*\]\.\]\s?)&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
            $vmnotes = [regex]::replace($vmnotes, &amp;quot;&amp;#039;&amp;quot;, &amp;quot;\&amp;#039;&amp;quot;)&lt;br /&gt;
            $vmnotes = [regex]::replace($vmnotes, &amp;quot;`n&amp;quot;, &amp;quot;\\n&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            $query = &amp;quot;INSERT INTO vm_ext (vmid, cpu, mem, vc_path, vmx_path, scsi_hw, notes) VALUES (&amp;quot; + $vmid + &amp;quot;, &amp;quot; + $vm.NumCpu + &amp;quot;, &amp;quot; + $vm.MemoryMB + &amp;quot;, &amp;#039;&amp;quot; + $vmvcpath&lt;br /&gt;
            $query += &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $vmxpath + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $vmscsi + &amp;quot;&amp;#039;, &amp;#039;&amp;quot; + $vmnotes + &amp;quot;&amp;#039;) ON DUPLICATE KEY UPDATE cpu=&amp;quot; + $vm.NumCpu + &amp;quot;, mem=&amp;quot; + $vm.MemoryMB&lt;br /&gt;
            $query += &amp;quot;, vc_path=&amp;#039;&amp;quot; + $vmvcpath + &amp;quot;&amp;#039;, vmx_path=&amp;#039;&amp;quot; + $vmxpath + &amp;quot;&amp;#039;, scsi_hw=&amp;#039;&amp;quot; + $vmscsi + &amp;quot;&amp;#039;, notes=&amp;#039;&amp;quot; + $vmnotes + &amp;quot;&amp;#039;;&amp;quot;&lt;br /&gt;
            ExecuteMySQLNonQuery($query)&lt;br /&gt;
            &lt;br /&gt;
            # Work out OSID if VM is up&lt;br /&gt;
            if ($vm.PowerState -eq &amp;quot;PoweredOn&amp;quot;) {&lt;br /&gt;
                $osname = (Get-VMGuest -VM $vm).OSFullName&lt;br /&gt;
                if (!$osname) {&lt;br /&gt;
                    Log-Error (&amp;quot;Couldn&amp;#039;t update OS for VM: &amp;quot; + $vm.Name + &amp;quot; in db&amp;quot;)&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                $osid = $dbOSs |?{$_.guest_name -eq $osname} | Select -ExpandProperty osid&lt;br /&gt;
                if (!$osid) {&lt;br /&gt;
                    # No existing db record for OS, add a new one&lt;br /&gt;
                    ExecuteMySQLNonQuery(&amp;quot;INSERT INTO os (guest_name) VALUES (&amp;#039;&amp;quot; + $osname + &amp;quot;&amp;#039;);&amp;quot;)&lt;br /&gt;
                    $osid = ExecuteMySQLScalar(&amp;quot;SELECT LAST_INSERT_ID();&amp;quot;)&lt;br /&gt;
                    $dbOSs = ExecuteMySQLQuery(&amp;quot;SELECT osid, guest_name FROM os;&amp;quot;)&lt;br /&gt;
                }&lt;br /&gt;
                ExecuteMySQLNonQuery(&amp;quot;UPDATE vm_ext SET osid=&amp;quot; + $osid + &amp;quot; WHERE vmid=&amp;quot; + $vmid + &amp;quot;;&amp;quot;)&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        # Mark VM&amp;#039;s that no longer exist&lt;br /&gt;
        $dbVMs = ExecuteMySQLQuery(&amp;quot;SELECT vmid, name FROM vm WHERE vcid = &amp;quot; + $vc.vcid + &amp;quot; AND exist=1;&amp;quot;)&lt;br /&gt;
        foreach ($vm in $dbVMs) {&lt;br /&gt;
            if (!($vcVMs |?{$_.Name -eq $vm.name})) {&lt;br /&gt;
                if (!$vm.vmid) {&lt;br /&gt;
                    Continue&lt;br /&gt;
                }&lt;br /&gt;
                Log (&amp;quot;HIDE: &amp;quot; + $vm.name)&lt;br /&gt;
                ExecuteMySQLNonQuery(&amp;quot;UPDATE vm SET exist=0 WHERE vmid=&amp;quot; + $vm.vmid + &amp;quot;;&amp;quot;)&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
          &lt;br /&gt;
    Disconnect-VIServer -Server $VCconn -Confirm:$false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Lab Manager ---------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
if ($UpdateLM) {&lt;br /&gt;
    # Connect to Lab Manager server&lt;br /&gt;
    try {&lt;br /&gt;
        Log(&amp;quot;Connecting to &amp;quot; + $LabMgrSvr)&lt;br /&gt;
        Ignore-SslErrors&lt;br /&gt;
        $labManager = Connect-LabManager -server $LabMgrSvr -credential $cred&lt;br /&gt;
    } catch {&lt;br /&gt;
        Log-Error(&amp;quot;Unable to connect to Lab Manager - &amp;quot; + $_)&lt;br /&gt;
        $Major_Error += 1&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($labManager) {&lt;br /&gt;
        # Get List of VM&amp;#039;s&lt;br /&gt;
        Log(&amp;quot;Getting Lab Manager VM info...&amp;quot;)&lt;br /&gt;
        $lmVMs = @()&lt;br /&gt;
        $lmConfigs = $labManager.ListConfigurations(1) &lt;br /&gt;
        foreach ($config in $lmConfigs) {&lt;br /&gt;
            if ($config.isDeployed) { &lt;br /&gt;
                $confVMs = $labManager.ListMachines($config.id)&lt;br /&gt;
                foreach ($vm in $confVMs) {&lt;br /&gt;
                    if ($vm.isDeployed) {&lt;br /&gt;
                        $VMrow = &amp;quot;&amp;quot; | Select Path, ConfigOrg, ConfigName, VMname, VMextIP&lt;br /&gt;
                        $VMrow.Path = $config.bucketName + &amp;quot;\\\\&amp;quot; + $config.name&lt;br /&gt;
                        $VMrow.ConfigOrg = $config.bucketName&lt;br /&gt;
                        $VMrow.ConfigName = $config.name&lt;br /&gt;
                        $VMrow.VMname = $vm.name&lt;br /&gt;
                        $VMrow.VMextIP = $vm.externalIP&lt;br /&gt;
                        $lmVMs = $lmVMs + $VMrow&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        foreach ($vm in $lmVMs) {&lt;br /&gt;
            # Get VM&amp;#039;s db ID&lt;br /&gt;
            $query = &amp;quot;SELECT vmid FROM vm JOIN vm_ext USING (vmid) WHERE vc_path LIKE(&amp;#039;%&amp;quot; + $vm.ConfigOrg + &amp;quot;\\\\&amp;quot; + $vm.ConfigName + &amp;quot;%&amp;#039;) AND name LIKE(&amp;#039;%&amp;quot; + $vm.VMname + &amp;quot;&amp;#039;);&amp;quot;&lt;br /&gt;
            $vmid = ExecuteMySQLScalar($query)&lt;br /&gt;
            if (!$vmid) {&lt;br /&gt;
                #Log ($query)&lt;br /&gt;
                Log-Error(&amp;quot;Unable to find db id for Labs VM: &amp;quot; + $vm.ConfigName + &amp;quot;\&amp;quot; + $vm.VMname)&lt;br /&gt;
                Continue&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            $query = &amp;quot;INSERT INTO vm_nic (vmid, num, type) VALUES (&amp;quot; + $vmid + &amp;quot;, 0, &amp;#039;Labs NAT&amp;#039;) &amp;quot;&lt;br /&gt;
            $query += &amp;quot;ON DUPLICATE KEY UPDATE vnicid=LAST_INSERT_ID(vnicid);&amp;quot;&lt;br /&gt;
            ExecuteMySQLNonQuery($query)&lt;br /&gt;
                &lt;br /&gt;
            # Get vnicid from last query&lt;br /&gt;
            $vnicid = ExecuteMySQLScalar(&amp;quot;SELECT LAST_INSERT_ID();&amp;quot;)&lt;br /&gt;
                &lt;br /&gt;
            # Find related IP(s)&lt;br /&gt;
            $query = &amp;quot;INSERT INTO vm2ip (vmid, vnicid, ip) VALUES (&amp;quot; + $vmid + &amp;quot;, &amp;quot; + $vnicid + &amp;quot;, INET_ATON(&amp;#039;&amp;quot; + $vm.VMextIP + &amp;quot;&amp;#039;)) &amp;quot;&lt;br /&gt;
            $query += &amp;quot;ON DUPLICATE KEY UPDATE ip=INET_ATON(&amp;#039;&amp;quot; +  $vm.VMextIP + &amp;quot;&amp;#039;);&amp;quot;&lt;br /&gt;
            ExecuteMySQLNonQuery($query)&lt;br /&gt;
            }&lt;br /&gt;
        }    &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Post Amble =================================================================================================================================&lt;br /&gt;
&lt;br /&gt;
if ($Major_Error) {&lt;br /&gt;
    if ($ErrorLog.Length) {&lt;br /&gt;
        if ($UpdateScriptRun) {ExecuteMySQLNonQuery(&amp;quot;UPDATE script_run SET end=NOW(), error=&amp;quot; + $Major_Error + &amp;quot;, warn=&amp;quot; + $ErrorLog.Length + &amp;quot; WHERE runid=$runid;&amp;quot;)}&lt;br /&gt;
        Log(&amp;quot;Script encountered &amp;quot; + $ErrorLog.Count + &amp;quot; minor errors and &amp;quot; + $Major_Error + &amp;quot; severe errors (VC connect fails)!!!&amp;quot;)&lt;br /&gt;
    } else {&lt;br /&gt;
        if ($UpdateScriptRun) {ExecuteMySQLNonQuery(&amp;quot;UPDATE script_run SET end=NOW(), error=&amp;quot; + $Major_Error + &amp;quot;, warn=0 WHERE runid=$runid;&amp;quot;)}&lt;br /&gt;
        Log(&amp;quot;Script encountered &amp;quot; + $Major_Error + &amp;quot; severe errors (VC connect fails)!!!&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
} else {&lt;br /&gt;
    if ($ErrorLog.Length) {&lt;br /&gt;
        if ($UpdateScriptRun) {ExecuteMySQLNonQuery(&amp;quot;UPDATE script_run SET end=NOW(), error=&amp;quot; + $Major_Error + &amp;quot;, warn=&amp;quot; + $ErrorLog.Length + &amp;quot; WHERE runid=$runid;&amp;quot;)}&lt;br /&gt;
        Log(&amp;quot;Script encountered &amp;quot; + $ErrorLog.Count + &amp;quot; minor errors!&amp;quot;)&lt;br /&gt;
    } else {&lt;br /&gt;
        if ($UpdateScriptRun) {ExecuteMySQLNonQuery(&amp;quot;UPDATE script_run SET end=NOW(), error=0, warn=0 WHERE runid=$runid;&amp;quot;)}&lt;br /&gt;
        Log(&amp;quot;Script encountered no errors.&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
DisconnectMySQL&lt;br /&gt;
Stop-Transcript&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sstrutt</name></author>
	</entry>
</feed>