PVSTools.psm1 is a work in progress. Most of the functions are still being developed. Please use at your own risk.
Last Update 07/21/2011
Convert-MCLI
Get-PVSDevicePersonality
Get-PVSDevice
Add-PVSDevicePersonality
Remove-PVSDevicePersonality
New-PVSGuid
PVSTools.psm1
Function Convert-MCLI()
{
param
(
[Parameter(Mandatory=$true)]
$results,
[Parameter(Mandatory=$false)]
$TreatResultsAsValues=$false,
[Parameter(Mandatory=$false)]
$addName="",
[Parameter(Mandatory=$false)]
$addValue=""
)
if($TreatResultsAsValues)
{
$strArr = @()
$str = ""
foreach($line in $results)
{
if($line.StartsWith("Record #"))
{
if(-not ($str -eq ""))
{
$strArr += $str
}
$str = ""
}
elseif(-not $line.StartsWith("Executing:"))
{
if($line.Contains(":"))
{
$name = $line.SubString(0,$line.IndexOf(":")).Trim()
$value = $line.SubString($line.IndexOf(":")+1,($line.Length)-($line.indexof(":"))-1).Trim()
if($str.Length -gt 0)
{
$str += ",""$name=$value"""
}
else
{
$str = """$name=$value"""
}
}
}
}
if(-not ($str -eq ""))
{
$strArr += $str
}
$obj = New-object PSObject
if($addName.Length -gt 0)
{
$obj | Add-Member -MemberType NoteProperty -Name $addName -value $addValue
}
$obj | Add-Member -MemberType NoteProperty -Name devicePersonality -value $strArr
$obj
}
else
{
$objs = @()
foreach($line in $results)
{
if($line.StartsWith("Record #"))
{
if(-not ($obj -eq $null))
{
$objs += $obj
}
$obj = New-object PSObject
}
elseif(-not $line.StartsWith("Executing:"))
{
if($line.Contains(":"))
{
$name = $line.SubString(0,$line.IndexOf(":")).Trim()
$value = ($line.SubString($line.IndexOf(":")+1,($line.Length)-($line.indexof(":"))-1)).Trim()
$obj | Add-Member -MemberType NoteProperty -Name $name -Value $value
}
}
}
if(-not ($obj -eq $null))
{
$objs += $obj
}
$objs
return
}
}
Function Get-PVSDevicePersonality()
{
param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromPipeLine=$true)]
[string]$deviceName=""
)
BEGIN
{
#Uses Citrix MCLI Powershell snapin
Add-PSSnapin mcli* -ErrorAction SilentlyContinue
}
PROCESS
{
foreach($device in $deviceName)
{
$cmd = "mcli-get -t devicepersonality -p ""deviceName=$device"""
$results = Invoke-Expression -Command $cmd
Convert-MCLI -results $results -TreatResultsAsValues $true -addName "deviceName" -addValue $device
}
}
}
Function Get-PVSDevice()
{
param
(
[Parameter(Mandatory=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromPipeLine=$true)]
[string]$deviceName=""
)
BEGIN
{
#Uses Citrix MCLI Powershell snapin
Add-PSSnapin mcli* -ErrorAction SilentlyContinue
}
PROCESS
{
foreach($device in $deviceName)
{
if($device.Length -gt 0)
{
$cmd = "mcli-get -t device -p ""deviceName=$device"""
}
else
{
$cmd = "mcli-get -t device"
}
$results = Invoke-Expression -Command $cmd
Convert-MCLI -results $results
}
}
}
Function Add-PVSDevicePersonality()
{
param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromPipeLine=$true)]
[string]$deviceName="",
[Parameter(Mandatory=$true)]
[string]$Name,
[Parameter(Mandatory=$true)]
[string]$Value,
[Parameter(Mandatory=$false)]
[boolean]$Overwrite=$true
)
BEGIN
{
#Uses Citrix MCLI Powershell snapin
Add-PSSnapin mcli* -ErrorAction SilentlyContinue
}
PROCESS
{
$Name = $Name.toLower()
foreach($device in $deviceName)
{
$devicePersonality = (Get-PVSDevicePersonality -DeviceName $device).devicePersonality
$newPersonality = ""
foreach($nvpair in $devicePersonality)
{
if(-not $nvpair.tolower().startswith("""name=$Name"""))
{
if($newPersonality.Length -gt 0)
{
$newPersonality += ","
}
$newPersonality += $nvpair
}
elseif($nvpair.tolower().startswith("""name=$Name""") -and (-not $Overwrite))
{
Get-PVSDevicePersonality -DeviceName $device
return
}
}
}
if($newPersonality.Length -gt 0)
{
$newPersonality += ","
}
$newPersonality += """name=$Name"",""value=$Value"""
$cmd = "mcli-setlist -t devicepersonality -p ""deviceName=$device"" -r $newPersonality"
$results = Invoke-Expression -Command $cmd
Get-PVSDevicePersonality -DeviceName $device
}
}
Function Remove-PVSDevicePersonality()
{
param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromPipeLine=$true)]
[string]$deviceName="",
[Parameter(Mandatory=$true)]
[string]$Name
)
BEGIN
{
#Uses Citrix MCLI Powershell snapin
Add-PSSnapin mcli* -ErrorAction SilentlyContinue
}
PROCESS
{
$Name = $Name.toLower()
foreach($device in $deviceName)
{
$devicePersonality = (Get-PVSDevicePersonality -DeviceName $device).devicePersonality
$newPersonality = ""
foreach($nvpair in $devicePersonality)
{
if(-not $nvpair.tolower().startswith("""name=$Name"""))
{
if($newPersonality.Length -gt 0)
{
$newPersonality += ","
}
$newPersonality += $nvpair
}
}
}
if($newPersonality.Length -gt 0)
{
$cmd = "mcli-setlist -t devicepersonality -p ""deviceName=$device"" -r $newPersonality"
$results = Invoke-Expression -Command $cmd
}
else
{
$cmd = "mcli-setlist -t devicepersonality -p ""deviceName=$device"""
$results = Invoke-Expression -Command $cmd
}
Get-PVSDevicePersonality -DeviceName $device
}
}
Function New-PVSGuid()
{
return ([guid]::NewGuid()).ToString().Replace("-","").ToUpper()
}
Comments