Pages: [1]
Print
Author Topic: powershell script to list orphaned vmdk's (new revision)  (Read 3672 times)
esarakaitis
Administrator
Sr. Member
*****
Posts: 256


8223109 sack57@hotmail.com littleking57 rootinfortwayne
View Profile WWW Email
« on: March 05, 2009, 08:48:11 AM »

Code:
$arrayVC = "virtualcenterserver"

Foreach ($strVC in $arrayVC)
{
Connect-VIServer $strVC
$arrUsedDisks = Get-VM | Get-HardDisk | %{$_.filename}
$arrUsedDisks += get-template | Get-HardDisk | %{$_.filename}
$arrDS = Get-Datastore
Foreach ($strDatastore in $arrDS)
{
   $strDatastoreName = $strDatastore.name
   $ds = Get-Datastore -Name $strDatastoreName | %{Get-View $_.Id}
   $fileQueryFlags = New-Object VMware.Vim.FileQueryFlags
   $fileQueryFlags.FileSize = $true
   $fileQueryFlags.FileType = $true
   $fileQueryFlags.Modification = $true
   $searchSpec = New-Object VMware.Vim.HostDatastoreBrowserSearchSpec
   $searchSpec.details = $fileQueryFlags
   $searchSpec.sortFoldersFirst = $true
   $dsBrowser = Get-View $ds.browser
   $rootPath = "["+$ds.summary.Name+"]"
   $searchResult = $dsBrowser.SearchDatastoreSubFolders($rootPath, $searchSpec)
   $myCol = @()
   foreach ($folder in $searchResult)
   {
      foreach ($fileResult in $folder.File)
      {
             $file = "" | select Name, FullPath
     $file.Name = $fileResult.Path
     $strFilename = $file.Name
     IF ($strFilename)
     {
     IF ($strFilename.Contains(".vmdk"))
     {
     IF (!$strFilename.Contains("-flat.vmdk"))
     {
     IF (!$strFilename.Contains("delta.vmdk"))  
     {
        $strCheckfile = "*"+$file.Name+"*"
IF ($arrUsedDisks -Like $strCheckfile){}
         ELSE
{
$strOutput = $strDatastoreName + " Orphaned VMDK Found: " + $strFilename
$strOutput
}          
     }
     }  
     }
     }
      }
   }       
   }
}
Logged
Pages: [1]
Print
Jump to: