|
Hi
You can use SearchDatastoreSubFolders of the HostDatastoreBrowser object to browse all files in the datastore $ds = Get-Datastore <datastorename> | %{Get-View $_.Id}
You can also check query property of the SearchSpec object in order to filter files by type(i.e. only VmDisk or Vmconfig files)Regards,$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 = "{0}" -f ($ds.summary.Name) $searchResult = $dsBrowser.SearchDatastoreSubFolders($rootPath, $searchSpec) foreach ($folder in $searchResult) { foreach ($fileResult in $folder.File) { $file = "" | select Name, Size, Modified, FullPath $file.Name = $fileResult.Path $file.Size = $fileResult.Filesize $file.Modified = $fileResult.Modification $file.FullPath = $folder.FolderPath + $file.Name $file | out-default } } Yasen |
|
benham wrote:
Hi, Would like to find out how to list all the files and size in datastore? The objective is to help generate a spreadsheet for storage planning. Anyone has a sample script? Could not seem to get it working with get-datastore. Another alternative if you're feeling a bit adventurous would be to use the community extensions. There is a cmdlet within the extension called get-datastorefiles. Basically the full script you would use is: This will return an array of objects that you can use on the pipeline, etc. Note: This requires the latest PowerShell 2 CTP. |
|
How can I loop it, so that I can capture multiple selected datastore? e.g. of certain naming convention type? Pardon me, I am very new to PowerShell, still trying to learn the basics. Cheers! |
|
You can just add the code for one datastore in a loop for each datastore you get:
Get-Datastore <filter> | % {
$ds = Get-View $_.Id process datastore files here } So the script will look smth like this:
Get-Datastore <search criteria> | % {
Regards,$ds = 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 $rootPath = "{0}" -f ($ds.summary.Name) $dsBrowser = Get-View $ds.browser $searchResult = $dsBrowser.SearchDatastoreSubFolders($rootPath, $searchSpec) $fileList = @{} foreach ($folder in $searchResult) { foreach ($fileResult in $folder.File) { $file = "" | select Name, Size, Modified, FullPath $file.Name = $fileResult.Path $file.Size = $fileResult.Filesize $file.Modified = $fileResult.Modification $file.FullPath = $folder.FolderPath + $file.Name $fileList.Add($file.FullPath, $file) } } } $fileList.Values | select Name, Size, Modified, FullPath | export-csv "datastore.csv" Yasen |
|
Hi all, In VI Toolkit v1.0 there is a datastore provider. This may be very interesting feature to use in some cases. Here is how you can use it: First you need to mount the datastore provider to some drive: PS C:\> Get-Datastore -Name "storage1 (3)"| New-DatastoreDrive -Name "ds" Name Provider Root CurrentLocation ---- ---- ds VimDatastore \Datastore\443@10.23.113.41\Data... Now you can 'cd' to it and do all directory operations you like: PS C:\> cd ds: PS ds:\> dir Datastore path: storage1 (3) LastWriteTime Type Length Name ---- ---- 2/25/2008 6:11 PM Folder Win2003 64bit Template 2/24/2008 8:19 AM Folder Win2003 32bit Template 2/24/2008 12:07 AM Folder WinXP 32bit Template 6/16/2008 2:27 PM Folder RedHat 9 Template 2/24/2008 11:10 PM Folder WinXP 64bit Template 6/20/2008 11:57 AM Folder PS20_win2003 8/6/2008 11:15 AM Folder testMachine_Vista_32bit 8/5/2008 5:07 PM Folder testMachine_2003_64bit 8/6/2008 11:25 AM Folder testMachine_XP_64bit 6/6/2008 2:22 PM Folder Ubuntu 6/24/2008 2:29 PM Folder WinVista Business 64b... 8/6/2008 11:00 AM Folder VC4.0 |