Einige einfache Beispiele zu den PowerShell Cmdlets der Citrix Provisioning Services
# https://developer-docs.citrix.com/projects/provisioning-services-powershell-object-programming-guide/en/latest/#start-pvscreatedisk
# Registry module
Set-Location "C:\Program Files\Citrix\Provisioning Services Console"
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe Citrix.PVS.SnapIn.dll
# Import module
Import-Module "C:\Program Files\Citrix\Provisioning Services Console\Citrix.PVS.SnapIn.dll"
# List all vDisks off all sites
(Get-PvsDiskLocator).Name
# List of vDisks on a specific PVS server
(Get-PvsDiskLocator -ServerName 'W2K16PVS01').Name
# Test if a specific vDisk exists
if ((Get-PvsDiskLocator).Name -eq "MyDisk1") { write-host "vDisk found"}
# List all devices with all details
Get-PvsDevice
# List all devices with some specific params
Get-PvsDevice | Select-Object Name,DeviceMAC,BootFrom,Active
# List details of a specific device
Get-PvsDevice -DeviceName 'PVSTARGET01'
# List assigned disks of a specific device
(Get-PvsDiskLocator -DeviceName 'PVSTARGET01').Name
# Remove a specific disk assignments from a specific device
Remove-PvsDiskLocatorFromDevice -DeviceName 'PVSTARGET01' -DiskLocatorName 'MyDisk1' -SiteName 'Site' -StoreName 'Store'
# Remove ALL disk assignments from a specific device
$Disks = (Get-PvsDiskLocator -DeviceName 'PVSTARGET01')
foreach ($Disk in $Disks)
{
Write-host "Removing disk $($Disk.name) from device"
Get-PvsDevice -Name 'PVSTARGET01' -Fields Guid | Remove-PvsDiskLocatorFromDevice -Name $Disk.DiskLocatorName -SiteName 'Site' -StoreName 'Store'
}
# Assign a disk to device
Add-PvsDiskLocatorToDevice -Name 'MyDisk1' -DeviceName 'PVSTARGET01' -SiteName 'Site' -StoreName 'Store'
# Create a new empty vdisk
Start-PvsCreateDisk -Name "MyDisk1" -Description "MyDescription1" -SiteName "Site" -StoreName "Store" -ServerName "W2K16PVS01" -Size 40000 -VHDX
# Change Disk mode (Note: WriteCacheType: 0 (Private), (other values are standard image) 1 (Cache on Server), 3 (Cache in Device RAM), 4 (Cache on Device Hard Disk), 6 (Device RAM Disk), 7 (Cache on Server, Persistent), or 9 (Cache in Device RAM with Overflow on Hard Disk).
Set-PvsDisk -Name 'MyDisk1' -StoreName 'Store' -SiteName 'Site' -WriteCacheType 9 -WriteCacheSize 512
# Create a new disk version
New-PvsDiskMaintenanceVersion -DiskLocatorName 'MyDisk1' -StoreName 'Store' -SiteName 'Site'
# Commit the changes made in the current Maintenance or a Test version. Promotes the Maintenance version or a Test version to a Testor new Production
Invoke-PvsPromoteDiskVersion -DiskLocatorName 'MyDisk1' -StoreName 'Store' -SiteName 'Site' # Promote disk version (PRODUCTION)
Invoke-PvsPromoteDiskVersion -DiskLocatorName 'MyDisk1' -StoreName 'Store' -SiteName 'Site' -Test # Promote disk version (TEST)
# Connect via PS Remoting from the golden master target system to the PVS server and create a new empty disk and assign this disk in preperation for a later image capture to this disk
$CredObject = New-Object System.Management.Automation.PsCredential("ServiceAccount@test.local", (ConvertTo-SecureString "Passw0rd" -AsPlainText -Force))
Invoke-Command -ComputerName "W2K16PVS01.test.local" -Credential $CredObject -ScriptBlock {
# Import module
Set-Location "C:\Program Files\Citrix\Provisioning Services Console"
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe Citrix.PVS.SnapIn.dll
Import-Module "C:\Program Files\Citrix\Provisioning Services Console\Citrix.PVS.SnapIn.dll"
# Generate empty vDisk
Start-PvsCreateDisk -Name "MyDiskName" -Description "MyDisk" -SiteName "Site" -StoreName "Store" -ServerName "W2K16PVS01" -Size 40000 -VHDX
# Assign disk to device
Add-PvsDiskLocatorToDevice -Name "MyDiskName" -DeviceName "PVSTARGET01" -SiteName "Site" -StoreName "Store"
}