In this post, we will be stepping through the process of creating a new Work Area using the New-PWRichProject cmdlet and an associated Connected Project using the Add-PWConnectedProject. We will also be using few other Connected Project related cmdlets for data validation and to obtain a token which is required for all of Connected Project cmdlets we will be using.
We will be using the following cmdlets to accomplish this task. All of the ProjectWise related cmdlets are available using the PWPS_DAB module. At the time of this post, I am using version 1.23.5.0. Take a look at the help for each of the cmdlets to become familiar with their functionality, available parameters, etc.
- New-PWRichProject
- Get-PWConnectionClientToken
- Get-PWConnectedProjectAssetTypes
- Get-PWConnectedProjectDataLocations
- Get-PWConnectedProjectIndustryTypes
- Add-PWConnectedProject
Defining Variables
Before we get started, we will be creating some variables to be used for creating the Work Area and the Connected Project.
#region VARIABLES
# Variables for creating the Work Area.
# Fullpath and name of the Work Area to create.
$NewFolderPath = 'Projects\MyNewProject'
# Storage area to be used. Required.
$StorageArea = 'Storage02'
# Work Area type to be used. Required.
$ProjectType = 'General'
# Variables for creating the Connected Project.
$ConnectedProjectNumber = '123456-BMF'
$ConnectedProjectName = 'BMF-MyNewProject'
$AssetType = 'Process Manufacturing Plant'
$DataLocation = 'East US'
$Industry = 'Buildings And Facilities'
$Location = 'Navarre, FL'
$CountryCode = 'USA'
#endregion VARIABLES
Create Work Area
Now, we will create a new Work Area within our ProjectWise datasource. There are multiple ways to create a new Work Area, however we will be using the New-PWRichProject cmdlet.
#region CREATE WORK AREA
$Splat_NewWorkArea = @{
NewFolderPath = $NewFolderPath
StorageArea = $StorageArea
ProjectType = $ProjectType
}
$newWorkArea = New-PWRichProject @Splat_NewWorkArea -Verbose
#endregion CREATE WORK AREA
The following shows the contents of the Splat prior to running the cmdlet.
The following shows the new Work Area we just created. Notice there is not a Connected Project associated with it.
Get Required Token
We will now get a token to be used with the Connected Project cmdlets.
# Get required Token to create new Connected Project.
$Token = Get-PWConnectionClientToken
Validate Variable Entries
This section is not required. However, I like to verify my data prior to running any cmdlets. Each of the validation variables will be populated with a true or false indicating success or failure. These variables will be used when populating the Splat to create the Connected Project.
#region VARIABLE VALIDATION
# Used to validate the provided Asset type.
$validateAssetType = if( Get-PWConnectedProjectAssetTypes -Token $Token |
Where-Object {$_ -eq $Type}) { $true } else { $false }
# Used to validate the provided Data Location.
$validateDataLocation = if( Get-PWConnectedProjectDataLocations -Token $Token |
Where-Object { $_ -eq $DataLocation }) { $true } else { $false }
# Used to validate the provided Industry.
$validateIndustry = if( Get-PWConnectedProjectIndustryTypes -Token $Token |
Where-Object { $_ -eq $Industry }) { $true } else { $false }
#endregion VARIABLE VALIDATION
Populate the Splat
Here we will be populating the Splat to be used to create the Connected Project. We will be using the previously populated validation variables to determine whether some parameters should be included.
#region POPULATE SPLAT
$Splat_NewConnectedProject = @{
InputFolder = $newWorkArea
Token = $Token
ConnectedProjectNumber = $ConnectedProjectNumber
ConnectedProjectName = $ConnectedProjectName
Location = $Location
CountryCode = $CountryCode
}
if($validateAssetType){
# Removing spaces to conform to allowed AssetType values.
$Splat_NewConnectedProject.AssetType = $($AssetType.Replace(' ', ''))
}
if($validateDataLocation){
$Splat_NewConnectedProject.DataLocation = $DataLocation
}
if($validateIndustry){
# Removing spaces to conform to allowed Industry values.
$Splat_NewConnectedProject.Industry = $Industry.Replace(' ', '')
}
#endregion POPULATE SPLAT
The following shows the contents of the Splat prior to running the cmdlet.
Create Connected Project
Finally, we will be creating the Connected Project using the populated Splat.
#region CREATE CONNECTED PROJECT
# Create new Connected Project and associate it with the provided Work Area.
$NewConnectedProject = Add-PWConnectedProject @Splat_NewConnectedProject -Verbose
#endregion CREATE CONNECTED PROJECT
The following images show the newly created Connected Project.
The following shows the Connected Project has been successfully associated with the Work Area.
Experiment with it and have fun.
Hopefully, you find this useful. Please let me know if you have any questions or comments. If you like this post, please click the Like button at the bottom of the page.
Getting a couple errors: PS C:\windows\system32> $validateDataLocation = if( Get-PWConnectedProjectDataLocations -Token $Token |
Where-Object { $_ -eq $DataLocation }) { $true } else { $false }
Get-PWConnectedProjectDataLocations : One or more errors occurred.
At line:1 char:29
+ … ataLocation = if( Get-PWConnectedProjectDataLocations -Token $Token |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-PWConnectedProjectDataLocations], AggregateException
+ FullyQualifiedErrorId : System.AggregateException,PWPS_DAB.GetPWConnectedProjectDataLocations
and
#endregion CREATE CONNECTED PROJECT
VERBOSE: Location: Delaware
VERBOSE: CountryCode: USA
VERBOSE: Industry: 12
VERBOSE: AssetType: 9999
VERBOSE: DataLocationId: 99999999-9999-9999-9999-999999999999
VERBOSE: BaseURL: https://connect-contextregistry.bentley.com
WARNING: Error: Response at ‘https://connect-contextregistry.bentley.com’, ‘sv1.0/Repositories/BentleyCONNECT–Main/ConnectedContext/Project’ was null.
Any clues?
LikeLike
I would suggest posting this to the Bentley Communities site. https://communities.bentley.com/products/projectwise/content_management/f/projectwise-powershell-extensions-forum#pifragment-25914=1
LikeLike