Create and manage stores
This article discusses how you can create and manage stores using the new cmdlets in the Zervicepoint Powershell module.
Introduction
Version 1.20.XXXX of Zervicepoint introduces a few new cmdlets designed to create, update and delete stores. This article will provide you with some practical examples.
The new cmdlets covered in this article are:
- Get-ZPStore
- New-ZPStore
- Set-ZPStore
- Remove-ZPStore
- New-ZPCertificate
- New-ZPTrustedIssuer
Please note that in order to retrieve, create, update and remove stores other than the store you're logged in to, you must be a member of the CentralAdministrator role in addition to the ApiStoreAdministrator role required for API access.
Retrieving information about a store
To retrieve information about a store, use the Get-ZPStore cmdlet. You can retrieve a store based on its ID, UniqueID, Name, DisplayName or RouteName. You can also list all the stores in the Zervicepoint instance.
Example: Retrieving stores using Get-ZPStore
# Get store by ID Get-ZPStore -Id 1 # Get store by UniqueId Get-ZPStore -UniqueId d74d3d54-2438-4078-a26e-c14b6324d931 # Get store by Name Get-ZPStore -Name Store # Get all stores (or the current store if you are not a central aministrator) Get-ZPStore
Creating a new store from scratch
To create a new store from scratch you can either create a store object using the New-Object cmdlet, populate its members and run the New-ZPStore cmdlet with the -Object parameter, or you can run New-ZPStore passing the store properties as separate parameters. Below are two examples demonstrating the two approaches.
Example: Creating a new store using the -Object parameter
# Get an empty Store object $store = New-Object Zipper.ZervicePoint.WebApi.PowerShell.Models.Store # Set general properties $store.Name = $store.DisplayName = $store.RouteName = "Demo1" $store.Languages = @("en-US", "sv-SE") $store.DefaultLanguage = "en-US" $store.DefaultCulture = "en-US" $store.DefaultTimeZone = "W. Europe Standard Time" $store.UseNewUI = $true # Set authentication properties $store.IdentityProviderType = [Zipper.ZervicePoint.WebApi.PowerShell.Models.IdentityProviderType]::ADFS $store.Issuer = "https://auth.company.com/adfs/ls/" $store.FederationMetadataEndpoint = "https://auth.company.com/FederationMetadata/2007-06/FederationMetadata.xml" $store.TrustedIssuers.Add((New-ZPTrustedIssuer -Type Login -Name auth.company.com -Thumbprint 56A9436980D7085EC8F25486DA39F3C38CC0F641)) $store.TrustedIssuers.Add((New-ZPTrustedIssuer -Type Provisioning -Name auth.company.com -Thumbprint 56A9436980D7085EC8F25486DA39F3C38CC0F641)) # Set outgoing email properties $store.SMTPServer = "smtpserver.company.com" $store.SMTPPort = 25 $store.SMTPEnableSSL = $true $store.SMTPFromAddress = "noreply@conmpany.com" # Set store administrators $store.StoreAdministrators = @("administrator@company.com") # Set on-premises properties $store.ClientWebServiceUrl = "https://zervicepoint.company.com:8443/ProviderService.svc/CallProvider" $store.ProvisioningAccount = "administrator" # Create a new certificate $certificate = New-ZPCertificate -CommonName demo1.zervicepoint.company.com -PassThru # Set thumbprints for datasigning and tokensigning $store.DataSigningCertificateThumbprint = $certificate.Thumbprint $store.TokenSigningCertificateThumbprint = $certificate.Thumbprint # Create the store New-ZPStore -Object $store
Example: Creating a store using separate parameters
# Create trusted issuer objects for login and provisioning $loginTrustedIssuer = New-ZPTrustedIssuer -Type Login -Name auth.company.com -Thumbprint 56A9436980D7085EC8F25486DA39F3C38CC0F641 $provisioningTrustedIssuer = New-ZPTrustedIssuer -Type Provisioning -Name auth.company.com -Thumbprint 56A9436980D7085EC8F25486DA39F3C38CC0F641 # Create a certificate for datasigning and tokensigning $certificate = New-ZPCertificate -CommonName demo2.zervicepoint.company.com -PassThru # Create the store New-ZPStore -Name "Demo2" -DisplayName "Demo2" -RouteName "Demo2" -Language @("en-US","sv-SE") -DefaultLanguage "en-US" -DefaultCulture "en-US" -DefaultTimeZone "W. Europe Standard Time" -UseNewUI $true -IdentityProviderType ADFS -Issuer "https://auth.company.com/adfs/ls/" -FederationMetadataEndpoint "https://auth.company.com/FederationMetadata/2007-06/FederationMetadata.xml" -TrustedIssuer @($loginTrustedIssuer,$provisioningTrustedIssuer) -SMTPServer "smtpserver.company.com" -SMTPPort 25 -SMTPEnableSSL $true -SMTPFromAddress "noreply@conmpany.com" -StoreAdministrator @("administrator@company.com") -ClientWebServiceUrl "https://zervicepoint.company.com:8443/ProviderService.svc/CallProvider" -ProvisioningAccount "administrator" -DataSigningCertificateThumbprint $certificate.Thumbprint -TokenSigningCertificateThumbprint $certificate.Thumbprint
Creating a new store based on an existing store
You can use the Get-ZPStore cmdlet to get an existing store object, modify any properties you want, and then pass the store object to the New-ZPStore cmdlet. Here's an example:
Example: Creating a store based on an existing store
# Get an existing store $store = Get-ZPStore -Name Store # Modify some properties (Name, RouteName and AddressMappings mast be unique) $store.Name = "Demo3" $store.DisplayName = $store.Name $store.RouteName = $store.Name $store.AddressMappings.Clear() $store.StoreAdministrators = @("demo3administrator@company.com") $certificate = New-ZPCertificate -CommonName demo3.zervicepoint.company.com -PassThru $store.DataSigningCertificateThumbprint = $certificate.Thumbprint $store.TokenSigningCertificateThumbprint = $certificate.Thumbprint # Create the new store $store | New-ZPStore
Creating a new store and cloning the content of an existing store
When creating a new store using the New-ZPStore cmdlet, you can use the -ContentStore parameter to clone the content (services, shared processes, pages, tags etc) of an existing store. Here's an example:
Example: Creating a store and cloning content of an existing store
# Get an existing store $store = Get-ZPStore -Name Store # Set new name, displayname and routename, and clear the address mappings $store.Name = "Demo4" $store.DisplayName = $store.Name $store.RouteName = $store.Name $store.AddressMappings.Clear() # Create the new store $store | New-ZPStore -ContentStore Store
Updating an existing store
To update an existing store, you start by retrieving the store using Get-ZPStore, then changing the desired properties of the store object, and finally passing it to Set-ZPStore. Here's an example:
Example: Generating a new certificate and updating the store
# Get the store $store = Get-ZPStore -Name Demo1 # Generate new certificate and update the thumbprint properties $certificate = New-ZPCertificate -CommonName demo2.zervicepoint.company.com -PassThru $store.DataSigningCertificateThumbprint = $certificate.Thumbprint $store.TokenSigningCertificateThumbprint = $certificate.Thumbprint # Commit changes Set-ZPStore -Object $store
Deleting a store
You can delete an existing store using Remove-ZPStore by either passing the store object (using the pipeline or the -Object parameter), or by passing the ID, UniqueId, Name, DisplayName or RouteName. Below are a few examples:
Example: Deleting a store
# Deleting a store by passing the store object Get-ZPStore -Name Demo1 | Remove-ZPStore # Deleting a store by ID Remove-ZPStore -Id 3 # Deleting a store by Name Remove-ZPStore -Name Demo3