Had the same issue and found this forum. After a lot of trials and errors I found a solution.
#Set thew new catalog profile
$orgvDCStoragePolicy = search-cloud -querytype AdminOrgVdcStorageProfile | where {($_.Name -match $StorageCatalogPolicyName) -and ($_.VdcName -eq $orgvDCName)} | Get-CIView
$orgvDCStoragePolicy.UpdateServerData()
#Create a private Catalog and share it to all Org members with Read/Write access
$privateCatalog = New-Object VMware.VimAutomation.Cloud.Views.AdminCatalog
$privateCatalog.name = "$orgName Private Catalog"
(Get-Org $orgName | Get-CIView).CreateCatalog($privateCatalog)
New-CIAccessControlRule -Entity $privateCatalog.name -EveryoneInOrg -AccessLevel ReadWrite -Confirm:$False
#Update catalog storage policy
$catalog = Get-Org -name $OrgName | get-catalog -name $privateCatalog.name
$catalog.ExtensionData.CatalogStorageProfiles.VdcStorageProfile = $orgvDCStoragePolicy.href
$catalog.ExtensionData.UpdateServerData()
You have to use the ".href" to reference the object instead of the catalog name. I was hoping to set the catalog storage policy at the creation with this line:
$privateCatalog.ExtensionData.CatalogStorageProfiles.VdcStorageProfile = $orgvDCStoragePolicy.href
It won't take it, I get the following error:
The property 'VdcStorageProfile' cannot be found on this object. Verify that the property exists and can be set.
As a result you end up with "Version 2" of every newly created catalog.
Hope that helps.
-Alex