I was recently doing some work with the vSphere Content Library and I needed to extract some information using the Content Library API. I was hoping there were a few out of the box PowerCLI cmdlets but to my surprise, there was only one cmdlet called Get-ContentLibraryItem which did not get into the level of details that I was looking for, which was on a per-file level rather than item-level. I had also search the web to see if anyone had built any functions and although a few existed, none that did the very basics which was retrieving all libraries, library items and library item files.
UPDATE (05/05/19) - Updated module with a new function for creating a subscribed Content Library, below is an example:
New-SubscribedContentLibrary -LibraryName NestedESXi -DatastoreName vsanDatastore -SubscriptionURL https://download3.vmware.com/software/vmw-tools/lib.json -SubscriptionThumbprint "7a:c4:08:2d:d3:55:56:af:9f:26:43:65:d0:31:99:0b:d2:f3:d8:69" -OnDemand
UPDATE (11/14/17) - I have recently updated the Content Library module to enhance the Get-ContentLibrary function and added several additional functions listed below
- Set-ContentLibrary
- New-ExtReplicatedContentLibrary
- Remove-SubscribedContentLibrary
- New-LocalContentLibrary
- Remove-LocalContentLibrary
- Copy-ContentLibrary
Not having worked with the Content Library APIs before, I figure this would be a good learning opportunity and created a PowerCLI module called ContentLibrary.psm1 which contains the following functions:
- Get-ContentLibrary
- Get-ContentLibraryItems
- Get-ContentLibraryItemFiles
Before you can make use of these functions, make sure to connect to the CIS endpoint of your vCenter Server using the Connect-CisServer cmdlet.
Here is a screenshot of the vSphere Web Client showing all available Content Libraries:
Here is an example of retrieving the same information using the following command:
Get-ContentLibrary
Note: You also have the ability to filter for the name of a specific Content Library by using the -LibraryName parameter
Here is a screenshot of the vSphere Web Client showing the individual Items within a Content Library:
Here is an example of retrieving the same information using the following command:
Get-ContentLibraryItems -LibraryName Test
Note: You also have the ability to filter for the name of a specific Content Library Item by using the -LibraryItemName parameter
Although the granularity when using the vSphere Web Client is at a Content Library Item, using the Content Library API, you can get additional information on the Item itself which is then composed of a set of files. The following command will allow you to retrieve all Files or you can use -LibraryItemName parameter to filter on a specific Item.
Get-ContentLibraryItemFiles -LibraryName Test -LibraryItemName TinyVM