- 修复RouteService中错误过滤home路由的问题 - 后端现在正确返回所有用户有权限的路由 - 添加设备管理相关功能(列表、在线监控、电源管理、远程监控) - 添加详细的修复文档和重启脚本 - 更新权限配置脚本 问题根源:后端代码中有逻辑会过滤掉home路由,导致前端收到空数组,无法生成菜单 解决方案:移除过滤home路由的逻辑,让后端返回所有有权限的路由
776 lines
39 KiB
PowerShell
776 lines
39 KiB
PowerShell
# Copyright (C) 2007 Intel Corporation
|
||
|
||
Function Invoke-AMTForceBoot {
|
||
<#
|
||
.Synopsis
|
||
Invokes the Intel Active Management Technology force boot command
|
||
.Description
|
||
This CmdLet invokes an Intel Active Management Technology (AMT) force boot to a PXE server, the local hard drive, CD/DVD ROM drive, or remote DVD/CD ISO image from clients that have Intel AMT firmware version 3.0 or higher.
|
||
.Notes
|
||
Supported AMT Firmware Versions: 3.0 or higher.
|
||
|
||
AMT Provisioning:
|
||
The vPro client AMT firmware must be provisioned prior to accessing AMT functionality. This Cmdlet will fail if it is run against a vPro client that has not been provisioned.
|
||
|
||
AMT Client Authentication:
|
||
To invoke commands against AMT enabled clients credentials to authenticate must be specified.
|
||
When no credential is provided as a parameter, the script will use the local logged on Kerberos credential.
|
||
When only the username (Kerberos or Digest) parameter is included the user will be prompted to provide the associated password.
|
||
Credentials should be stored as a PowerShell variable then passed into the Cmdlet with the credential parameter.
|
||
$AMTCredential = get-credential
|
||
|
||
AMT Client Encryption:
|
||
If the Intel vPro client has been configured to use TLS (a web server certificate has been issued to the Intel Management Engine) the Cmdlet must be called with a -TLS switch.
|
||
|
||
When managing an Intel vPro client over TLS (Port 16993) it is important that the computername parameter matchs the primary subject name of the issued TLS certificate. Typically this is the fully qualified domain name (FQDN).
|
||
|
||
If Mutual TLS is desired, the Cmdlet must be called with -TLS switch and with a valid certificate name from the certificate store in the -CertificateName parameter.
|
||
Status:
|
||
Status output designates if the Cmdlet was run successfully. For failed attempts additional status may be provided.
|
||
.Link
|
||
http:\\vproexpert.com
|
||
http:\\www.intel.com\vpro
|
||
http:\\www.intel.com
|
||
|
||
.Example
|
||
Invoke-AMTForceBoot vproclient.vprodemo.com -TLS -CertificateName "myCertificate" -Operation:PowerOn -Device:PXE -Credential $AMTCredential
|
||
|
||
ComputerName Port Operation Device Status
|
||
------------ ---- --------- ------ ------
|
||
vproclient.vprodemo.com 16993 PowerOn PXE Successful
|
||
.Example
|
||
Invoke-AMTForceBoot vproclient.vprodemo.com -Operation PowerOn -Device:HardDrive -Username:vprodemo\ITHelpDesk
|
||
|
||
Will prompt for Kerberos username password.
|
||
|
||
ComputerName Port Operation Device Status
|
||
------------ ---- --------- ------ ------
|
||
vproclient.vprodemo.com 16992 PowerOn HardDrive Successful
|
||
.Example
|
||
Invoke-AMTForceBoot vproclient -Operation:Reset -Device:IDER -IDERPath:"C:\bootable_image.iso" -Credential $AMTCredential
|
||
|
||
Will boot remote client to ISO img with no SOL interaction.
|
||
|
||
ComputerName Port Operation Device Status
|
||
------------ ---- --------- ------ ------
|
||
vproclient 16992 PowerOn IDER Successful
|
||
.Example
|
||
Invoke-AMTForceBoot Computer:vproclient -Operation:Reset -Device:BIOSSetup -Credential $AMTCredential -Console SOL -SOLTerminalPath $SOLTerminalPath -SOLTerminalArgList $SOLTerminalArgList
|
||
|
||
Will boot remote client to BIOS with SOL interaction through a specifed terminal client.
|
||
To use Microsoft telnet the following would be defined
|
||
$SOLTerminalPath = "telnet"
|
||
$SOLTerminalArgList = "-t ANSI 127.0.0.1 %Port"
|
||
The $SOLTerminalArgList must have a %Port defined so the CMDLet will know where to insert the port
|
||
|
||
ComputerName Port Operation Device Status
|
||
------------ ---- --------- ------ ------
|
||
vproclient 16992 PowerOn BIOSSetup Successful
|
||
.Example
|
||
Invoke-AMTForceBoot -ComputerName computer1.vprodemo.com,doesnotexist.vprodemo.com -TLS -Operation Reset -Device:Optical | Where {$_.Status -eq "Failed"}
|
||
|
||
Will perform the power operation on every AMT client in the list, but only display the ones that failed.
|
||
|
||
ComputerName Port Operation Device Status
|
||
------------ ---- --------- ------ ------
|
||
doesnotexist.vprodem... 16993 Reset Optical Failed
|
||
.Example
|
||
Get-Content computers.txt | Invoke-AMTForceBoot -TLS -Operation:PowerOn -Device:PXE
|
||
|
||
Will pull the list of amt clients from a text file and pipe them in the Invoke-AMTForceBoot CMDLet.
|
||
|
||
ComputerName Port Operation Device Status
|
||
------------ ---- --------- ------ ------
|
||
computer1.vprodemo.com 16993 PowerOn PXE Successful
|
||
computer2.vprodemo.com 16993 PowerOn PXE Successful
|
||
computer3.vprodemo.com 16993 PowerOn PXE Successful
|
||
.Example
|
||
Get-SomeDataFromOtherCMDLet | Select ComputerName | Invoke-AMTForceBoot -TLS -Operation PowerOn -Device:HardDrive
|
||
|
||
Get-SomeDataFromOtherCMDLet is a custom script that has an output of ComputerName, Port, and Operation; however, you only select ComputerName. Remaining parameters are manually provided.
|
||
|
||
ComputerName Port Operation Device Status
|
||
------------ ---- --------- ------ ------
|
||
computer1.vprodemo.com 16993 PowerOn HardDrive Successful
|
||
computer2.vprodemo.com 16993 PowerOn HardDrive Successful
|
||
computer3.vprodemo.com 16993 PowerOn HardDrive Successful
|
||
.Example
|
||
Invoke-AMTForceBoot vproclient.vprodemo.com -Operation:Reset -Device:BIOSSetup -Credential $AMTCredential -Console SOL -SOLTerminalPath "telnet" -SOLTerminalArgList "-t ANSI 127.0.0.1 %Port"
|
||
|
||
This will reboot the client to the BIOS Setup screens while connecting SOL to a telnet window.
|
||
|
||
Ok
|
||
|
||
ComputerName : 192.168.1.106
|
||
Port : 16992
|
||
Operation : reset
|
||
Device : BIOSSetup
|
||
Status : Successful
|
||
|
||
#>
|
||
[CmdletBinding()]
|
||
Param (
|
||
[Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$true, position=0, HelpMessage="Hostname, FQDN, or IP Address")] [String[]] $ComputerName,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=1, HelpMessage="Valid Ports are 16992 (non-TLS) or 16993 (TLS)")][ValidateSet("16992", "16993")] [String] $Port,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Use TLS (Port 16993)")] [switch] $TLS,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Accept self-signed certificate for TLS connection (skip any certificate checks.)")] [switch] $AcceptSelfSignedCert,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Name of certificate. (Use for mutual TLS)")] [string] $CertificateName,
|
||
[Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=2, HelpMessage="Valid Operations are PowerOn or Reset")][ValidateSet("PowerOn", "Reset")] [String] $Operation,
|
||
[Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=3, HelpMessage="Valid Devices are Default, HardDrive, PXE, Optical, IDER or BIOSSetup")][ValidateSet("Default", "HardDrive", "PXE", "Optical", "IDER", "BIOSSetup")] [String] $Device,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=4, HelpMessage="Enter valid path to ISO or IMG file")] [String] $IDERPath,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=5, HelpMessage="Valid Consoles are SOL")][ValidateSet("SOL")] [String] $Console,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=6, HelpMessage="Path to SOL console")] [String] $SOLTerminalPath,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=7, HelpMessage="Path to SOL console")] [String] $SOLTerminalArgList,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Digest or Kerberos User")] [string] $Username,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Digest or Kerberos Password")] [string] $Password,
|
||
[Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=8, HelpMessage="PS Credential")] [System.Management.Automation.PSCredential] $Credential
|
||
)
|
||
|
||
|
||
Process {
|
||
#create a connection object
|
||
try
|
||
{
|
||
$Results = @()
|
||
$Obj = new-object psobject
|
||
$Connection = New-Object Intel.Management.Wsman.WsmanConnection
|
||
|
||
if ($Credential.username.Length -gt 0) {
|
||
$Connection.SetCredentials($Credential.Username, $Credential.Password)
|
||
} elseif ($Username.length -gt 0) {
|
||
if ($Password.length -gt 0) {
|
||
$passwd = ConvertTo-SecureString $Password -AsPlainText –Force
|
||
$Connection.SetCredentials($Username, $passwd)
|
||
} else {
|
||
$Cred = Get-Credential $Username
|
||
$Connection.SetCredentials($Cred.Username, $Cred.Password)
|
||
}
|
||
}
|
||
|
||
if ($Port.Length -lt 1) {
|
||
if ($TLS.IsPresent) {
|
||
$Port = 16993;
|
||
}
|
||
else {
|
||
$Port = 16992;
|
||
}
|
||
}
|
||
|
||
if($CertificateName.Length -gt 0)
|
||
{
|
||
$Connection.Options.SetClientCertificateByCertificateName($CertificateName)
|
||
}
|
||
|
||
if($AcceptSelfSignedCert.IsPresent)
|
||
{
|
||
$Connection.Options.AcceptSelfSignedCertificate=$true;
|
||
}
|
||
|
||
switch ($Operation) {
|
||
"PowerOn" {$PowerInt = 2}
|
||
"Reset" {$PowerInt = 10}
|
||
}
|
||
|
||
if($Console -eq "SOL")
|
||
{
|
||
if($SOLTerminalArgList -ne "")
|
||
{
|
||
if($SOLTerminalArgList.contains("%Port")) {}
|
||
else
|
||
{
|
||
write-output ""
|
||
write-output 'The $SOLTerminalArgList parameter must contain a "%Port" parameter.'
|
||
write-output 'To use Microsoft telnet the following would be defined'
|
||
write-output '$SOLTerminalPath = "telnet"'
|
||
write-output '$SOLTerminalArgList = "-t ANSI 127.0.0.1 %Port"'
|
||
write-output ""
|
||
return
|
||
}
|
||
}
|
||
|
||
if(($SOLTerminalPath -eq "") -or ($SOLTerminalArgList -eq ""))
|
||
{
|
||
write-output ""
|
||
write-output 'If "-console SOL" is specifed:'
|
||
write-output ' -SOLTerminalPath parameter containing the path to the terminal application must be present.'
|
||
write-output ' -SOLTerminalArgList parameter containing the arguments to pass to the terminal application must be present.'
|
||
|
||
write-output 'To use Microsoft telnet the following would be defined'
|
||
write-output '$SOLTerminalPath = "telnet"'
|
||
write-output '$SOLTerminalArgList = "-t ANSI 127.0.0.1 %Port"'
|
||
write-output ""
|
||
return
|
||
}
|
||
}
|
||
|
||
|
||
ForEach ($Comp in $ComputerName) {
|
||
|
||
try {
|
||
#Attempt Connection with Client
|
||
$Connection.SetHost($Comp, $Port)
|
||
#Identify if redirection library required
|
||
if (($device -eq "IDER") -or ($console -eq "SOL")) {
|
||
|
||
if ($device -eq "IDER") {
|
||
$IDERPath = $IDERPath.ToLower()
|
||
|
||
#params for doing redirection
|
||
if ($IDERPath.EndsWith("iso")) {
|
||
$floppyFile = "$env:TEMP\floppy.img"
|
||
$cdFile = $IDERPath
|
||
$iderBootDevice = "1"
|
||
|
||
write-host "Performing IDER boot with CD image."
|
||
} elseif ($IDERPath.EndsWith("img")) {
|
||
$cdFile = "$env:TEMP\cd.iso"
|
||
$floppyFile = $IDERPath
|
||
$iderBootDevice = "0"
|
||
write-host "Performing IDER boot with floppy image."
|
||
} else {
|
||
write-host "You must enter a valid ISO or IMG file."
|
||
return
|
||
}
|
||
}
|
||
|
||
$cimRef = $Connection.NewReference("SELECT * FROM http://intel.com/wbem/wscim/1/amt-schema/1/AMT_RedirectionService")
|
||
$cimObj = $cimRef.Get();
|
||
try{
|
||
if (!$cimObj.GetProperty("EnabledState").ToString().Equals("32771")) {
|
||
$cimObj.SetProperty("EnabledState", "32771")
|
||
$cimRef.Put($cimObj)
|
||
}
|
||
if ($cimObj.GetProperty("ListenerEnabled").ToString().Equals("false")) {
|
||
$cimObj.SetProperty("ListenerEnabled", "true")
|
||
$cimRef.Put($cimObj)
|
||
}
|
||
}catch
|
||
{
|
||
Write-Host $_.Exception.Message
|
||
}
|
||
|
||
$LibSettingsFile="$env:TEMP\MC.ini"
|
||
$CertTrustFile="$env:TEMP\certs.pem"
|
||
|
||
$imrLib = New-Object Intel.Management.Redirection.MediaRedirection
|
||
|
||
#Initialize the Intel Media Redirection Library (imrLib)
|
||
[Intel.Management.Redirection.IMRVersion]$libVersion = New-Object Intel.Management.Redirection.IMRVersion
|
||
$imrResult = $imrLib.Init([ref] $libVersion, $LibSettingsFile)
|
||
|
||
$imrResult=$imrLib.RemoveAllClients()
|
||
|
||
#define a redirection client based on the WsmanConnection Address
|
||
$imrClient = $imrLib.GetClientInfo($Connection.Address)
|
||
|
||
#add the redirection client to the Library (Library return a value clientID)
|
||
[System.UInt32]$clientId=[System.UInt32]::MaxValue
|
||
$imrResult = $imrLib.AddClient($imrClient, [ref] $clientId)
|
||
|
||
#SOL session cannot be open while boot to HD \ Cd\ PXE is performed.
|
||
if(($Device -eq "PXE") -or ($Device -eq "Optical") -or ($Device -eq "HardDrive")){
|
||
write-output "SOL or IDER session cannot be open during boot to Hard Drive, CD or PXE."
|
||
} else {
|
||
|
||
if ($device -eq "IDER") {
|
||
#create redirection session parameters (e.g user name and password) based on the Wsman Connection
|
||
$iderParams = $imrLib.CreateSessionParams($Connection.Username, $Connection.Password)
|
||
|
||
#define session timeouts
|
||
$iderTimeouts = $imrLib.GetDefaultIDERTout()
|
||
|
||
#Open an IDER session
|
||
$imrResult = $imrLib.IDEROpenTCPSession($clientId, $iderParams, $iderTimeouts, $floppyFile, $cdFile)
|
||
|
||
#after opening the session the next thing we will do is send a command to enable the IDER device for immediate use
|
||
[Intel.Management.Redirection.IDERDeviceResult]$deviceResult = New-Object Intel.Management.Redirection.IDERDeviceResult
|
||
[Intel.Management.Redirection.IDERDeviceCmd]$deviceCommand = New-Object Intel.Management.Redirection.IDERDeviceCmd
|
||
|
||
$deviceCommand.pri_op = [Intel.Management.Redirection.SetOperation]::Enable
|
||
$deviceCommand.pri_timing = [Intel.Management.Redirection.SetOption]::Immediately
|
||
|
||
#enable the ider device for immediate use by setting the device state
|
||
$imrResult = $imrLib.IDERSetDeviceState($clientId, $deviceCommand, [ref] $deviceResult);
|
||
}
|
||
|
||
|
||
if ($console -eq "SOL"){
|
||
|
||
#create redirection session parameters (e.g user name and password) based on the Wsman Connection
|
||
$solParams = $imrLib.CreateSessionParams($Connection.Username, $Connection.Password)
|
||
|
||
#define session timeouts
|
||
$solTimeouts = $imrLib.GetDefaultSOLTout()
|
||
|
||
#openSol Session
|
||
$imrResult = $imrLib.SOLOpenTCPSession($clientId, $solParams, $solTimeouts, $imrLib.GetDefaultSOLParams())
|
||
|
||
Write-Host $imrResult
|
||
|
||
$link= $imrLib.CreateTerminalLink($clientId);
|
||
if($link.Open() -eq $false) {
|
||
write-output "Error opening SOL Link"
|
||
#close the session
|
||
$imrResult = $imrLib.SOLCloseSession($clientId)
|
||
#remove client
|
||
$imrResult = $imrLib.RemoveClient($clientId)
|
||
#close the library
|
||
$imrResult = $imrLib.Close()
|
||
return
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#Set the boot source
|
||
$SourceRef = $Connection.NewReference("SELECT * FROM CIM_BootSourceSetting")
|
||
|
||
switch ($Device) {
|
||
"HardDrive" {$InstanceID = 'Intel(r) AMT: Force Hard-drive Boot'}
|
||
"PXE" {$InstanceID = 'Intel(r) AMT: Force PXE Boot'}
|
||
"Optical" {$InstanceID = 'Intel(r) AMT: Force CD/DVD Boot'}
|
||
}
|
||
|
||
$SourceRef.AddSelector("InstanceID", $InstanceID)
|
||
|
||
$objRef = $Connection.NewReference("SELECT * FROM CIM_BootConfigSetting")
|
||
$objRef.AddSelector("InstanceID", 'Intel(r) AMT: Boot Configuration 0')
|
||
|
||
$InputObj = $objRef.CreateMethodInput("ChangeBootOrder")
|
||
if (($device -eq "HardDrive") -or ($device -eq "PXE") -or ($device -eq "Optical")) {
|
||
$InputObj.SetProperty("Source", $SourceRef)
|
||
}
|
||
|
||
$OutObj = $objRef.InvokeMethod($InputObj)
|
||
|
||
#Set the AMT boot settings
|
||
$cimRef = $Connection.NewReference("SELECT * FROM AMT_BootSettingData")
|
||
$cimObj = $cimRef.Get()
|
||
|
||
|
||
if ($device -eq "IDER") {
|
||
$cimObj.SetProperty("UseIDER", "true")
|
||
$cimObj.SetProperty("IDERBootDevice", $iderBootDevice)
|
||
} else {
|
||
$cimObj.SetProperty("UseIDER", "false")
|
||
}
|
||
|
||
if ($device -eq "BIOSSetup") {
|
||
$cimObj.SetProperty("BIOSSetup", "true")
|
||
} else {
|
||
$cimObj.SetProperty("BIOSSetup", "false")
|
||
}
|
||
|
||
if(($console -eq "SOL") -and ($Device -ne "PXE") -and ($Device -ne "Optical") -and ($Device -ne "Harddrive")) {
|
||
$cimObj.SetProperty("UseSOL", "true")
|
||
} else {
|
||
$cimObj.SetProperty("UseSOL", "false")
|
||
}
|
||
|
||
$cimObj.SetProperty("BootMediaIndex", "0");
|
||
$cimObj.SetProperty("UserPasswordBypass", "false")
|
||
$putResult=$cimRef.Put($cimObj)
|
||
|
||
$BootConfigSettingRef = $Connection.NewReference("SELECT * FROM CIM_BootConfigSetting")
|
||
$BootConfigSettingRef.AddSelector("InstanceID", 'Intel(r) AMT: Boot Configuration 0')
|
||
|
||
$objRef = $Connection.NewReference("CIM_BootService")
|
||
$InputObj = $objref.CreateMethodInput("SetBootConfigRole")
|
||
$InputObj.SetProperty("BootConfigSetting", $BootConfigSettingRef)
|
||
$InputObj.SetProperty("Role", "1")
|
||
$OutObj = $objRef.InvokeMethod($InputObj)
|
||
|
||
#Get a reference to the ManagedSystem (User of the Service)
|
||
$UserRef = $Connection.NewReference("SELECT * from CIM_ComputerSystem WHERE Name='ManagedSystem'")
|
||
|
||
#Get the Instance of CIM_AssociatedPowerManagmentService for the ManagedSystem
|
||
$ObjRef = $Connection.NewReference("CIM_AssociatedPowerManagementService");
|
||
$ObjRef.AddSelector("UserOfService", $userRef);
|
||
$AssociatedObj = $ObjRef.Get()
|
||
|
||
#Get current power state
|
||
$PowerState = $AssociatedObj.GetProperty("PowerState").ToString()
|
||
|
||
#If client in S4/S5 then poweron operation otherwise reset operation
|
||
if (($PowerState -eq 8) -or ($PowerState -eq 7)) {
|
||
$PowerInt = 2
|
||
}
|
||
else {
|
||
$PowerInt = 10
|
||
}
|
||
|
||
#Now associate to the Provider of the Service (CIM_PowerManagementService)
|
||
$ServiceRef = $AssociatedObj.GetProperty("ServiceProvided").Ref
|
||
|
||
#Now invoke the RequestPowerStateChange
|
||
$InputObj = $ServiceRef.CreateMethodInput("RequestPowerStateChange")
|
||
$InputObj.SetProperty("PowerState", "$PowerInt")
|
||
$InputObj.SetProperty("ManagedElement", $UserRef)
|
||
$OutObj = $ServiceRef.InvokeMethod($InputObj);
|
||
|
||
#Note Return Status
|
||
$ReturnValue = $OutObj.GetProperty("ReturnValue").ToString()
|
||
|
||
|
||
#Display SOL console
|
||
if (($console -eq "SOL" ) -and ($device -ne "HardDrive") -and ($device -ne "PXE") -and ($device -ne "Optical")) {
|
||
$argumentlist = $SOLTerminalArgList.replace("%Port", $link.Port)
|
||
|
||
start-process -FilePath $SOLTerminalPath -ArgumentList $argumentlist -Wait
|
||
|
||
}
|
||
|
||
|
||
#Identify if redirection library required
|
||
if (($console -eq "SOL")-and ($link) ) {
|
||
$link.Close()
|
||
|
||
#close the session
|
||
$imrResult = $imrLib.SOLCloseSession($clientId)
|
||
#remove client
|
||
$imrResult = $imrLib.RemoveClient($clientId)
|
||
#close the library
|
||
$imrResult = $imrLib.Close()
|
||
}
|
||
|
||
if ($device -eq "IDER") {
|
||
write-host -NoNewLine "Press any key to end the IDER session with" $Comp
|
||
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
|
||
write-host ""
|
||
|
||
#close the session
|
||
$imrResult = $imrLib.IDERCloseSession($clientId)
|
||
#remove client
|
||
$imrResult = $imrLib.RemoveClient($clientId)
|
||
#close the library
|
||
$imrResult = $imrLib.Close()
|
||
}
|
||
|
||
#Add Member to Object. Include Computer Name and Operation success
|
||
$Obj | Add-Member -MemberType noteproperty -Name ComputerName -value $Comp
|
||
$Obj | Add-Member -MemberType noteproperty -Name Port -value $Port
|
||
$Obj | Add-Member -MemberType noteproperty -Name Operation -value $Operation
|
||
$Obj | Add-Member -MemberType noteproperty -Name Device -value $Device
|
||
if ($ReturnValue -eq 0) {
|
||
$Obj | Add-Member -MemberType noteproperty -Name Status -value "Successful"
|
||
} else {
|
||
$Obj | Add-Member -MemberType noteproperty -Name Status -value "Failed"
|
||
$Obj | Add-Member -MemberType noteproperty -Name Reason -value $_.Exception.Message
|
||
}
|
||
|
||
} catch {
|
||
#Identify if redirection library required
|
||
if ($console -eq "SOL") {
|
||
if($link)
|
||
{
|
||
try
|
||
{
|
||
$link.Close()
|
||
}
|
||
catch
|
||
{
|
||
|
||
}
|
||
}
|
||
#close the session
|
||
$imrResult = $imrLib.SOLCloseSession($clientId)
|
||
}
|
||
|
||
if ($device -eq "IDER") {
|
||
write-host -NoNewLine "Press any key to end the IDER session with" $Comp
|
||
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
|
||
write-host ""
|
||
#close the session
|
||
$imrResult = $imrLib.IDERCloseSession($clientId)
|
||
}
|
||
|
||
#remove client
|
||
$imrResult = $imrLib.RemoveClient($clientId)
|
||
#Close the library
|
||
if ($imrLib) {
|
||
$imrResult = $imrLib.Close()
|
||
|
||
|
||
|
||
#Add Member to Object. Include Computer Name and Operation success
|
||
$Obj | Add-Member -MemberType noteproperty -Name ComputerName -value $Comp
|
||
$Obj | Add-Member -MemberType noteproperty -Name Port -value $Port
|
||
$Obj | Add-Member -MemberType noteproperty -Name Operation -value $Operation
|
||
$Obj | Add-Member -MemberType noteproperty -Name Device -value $Device
|
||
$Obj | Add-Member -MemberType noteproperty -Name Status -value "Failed"
|
||
$Obj | Add-Member -MemberType noteproperty -Name Reason -value $_.Exception.Message
|
||
|
||
}
|
||
}
|
||
|
||
#Append to Result
|
||
$Results += $Obj
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
$Obj | Add-Member -MemberType noteproperty -Name ComputerName -value $Comp
|
||
$Obj | Add-Member -MemberType noteproperty -Name Port -value $Port
|
||
$Obj | Add-Member -MemberType noteproperty -Name Operation -value $Operation
|
||
$Obj | Add-Member -MemberType noteproperty -Name Device -value $Device
|
||
$Obj | Add-Member -MemberType noteproperty -Name Status -value "Failed"
|
||
$Obj | Add-Member -MemberType noteproperty -Name Reason -value $_.Exception.Message
|
||
|
||
#Append to Result
|
||
$Results += $Obj
|
||
}
|
||
|
||
# Set back to false for the next cmdlet, if PS is still open
|
||
$Connection.Options.AcceptSelfSignedCertificate=$false;
|
||
|
||
#Write out Results
|
||
Write-Output $Results
|
||
|
||
}
|
||
|
||
}
|
||
# SIG # Begin signature block
|
||
# MIItiwYJKoZIhvcNAQcCoIItfDCCLXgCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB6xb+oMCtQEsp1
|
||
# ogMTaTWefq0DAC41KOKKw3QDU6ey4aCCEX4wggVvMIIEV6ADAgECAhBI/JO0YFWU
|
||
# jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
|
||
# DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM
|
||
# EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy
|
||
# dmljZXMwHhcNMjEwNTI1MDAwMDAwWhcNMjgxMjMxMjM1OTU5WjBWMQswCQYDVQQG
|
||
# EwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMS0wKwYDVQQDEyRTZWN0aWdv
|
||
# IFB1YmxpYyBDb2RlIFNpZ25pbmcgUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEBAQUA
|
||
# A4ICDwAwggIKAoICAQCN55QSIgQkdC7/FiMCkoq2rjaFrEfUI5ErPtx94jGgUW+s
|
||
# hJHjUoq14pbe0IdjJImK/+8Skzt9u7aKvb0Ffyeba2XTpQxpsbxJOZrxbW6q5KCD
|
||
# J9qaDStQ6Utbs7hkNqR+Sj2pcaths3OzPAsM79szV+W+NDfjlxtd/R8SPYIDdub7
|
||
# P2bSlDFp+m2zNKzBenjcklDyZMeqLQSrw2rq4C+np9xu1+j/2iGrQL+57g2extme
|
||
# me/G3h+pDHazJyCh1rr9gOcB0u/rgimVcI3/uxXP/tEPNqIuTzKQdEZrRzUTdwUz
|
||
# T2MuuC3hv2WnBGsY2HH6zAjybYmZELGt2z4s5KoYsMYHAXVn3m3pY2MeNn9pib6q
|
||
# RT5uWl+PoVvLnTCGMOgDs0DGDQ84zWeoU4j6uDBl+m/H5x2xg3RpPqzEaDux5mcz
|
||
# mrYI4IAFSEDu9oJkRqj1c7AGlfJsZZ+/VVscnFcax3hGfHCqlBuCF6yH6bbJDoEc
|
||
# QNYWFyn8XJwYK+pF9e+91WdPKF4F7pBMeufG9ND8+s0+MkYTIDaKBOq3qgdGnA2T
|
||
# OglmmVhcKaO5DKYwODzQRjY1fJy67sPV+Qp2+n4FG0DKkjXp1XrRtX8ArqmQqsV/
|
||
# AZwQsRb8zG4Y3G9i/qZQp7h7uJ0VP/4gDHXIIloTlRmQAOka1cKG8eOO7F/05QID
|
||
# AQABo4IBEjCCAQ4wHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYD
|
||
# VR0OBBYEFDLrkpr/NZZILyhAQnAgNpFcF4XmMA4GA1UdDwEB/wQEAwIBhjAPBgNV
|
||
# HRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMDMBsGA1UdIAQUMBIwBgYE
|
||
# VR0gADAIBgZngQwBBAEwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21v
|
||
# ZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEE
|
||
# KDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI
|
||
# hvcNAQEMBQADggEBABK/oe+LdJqYRLhpRrWrJAoMpIpnuDqBv0WKfVIHqI0fTiGF
|
||
# OaNrXi0ghr8QuK55O1PNtPvYRL4G2VxjZ9RAFodEhnIq1jIV9RKDwvnhXRFAZ/ZC
|
||
# J3LFI+ICOBpMIOLbAffNRk8monxmwFE2tokCVMf8WPtsAO7+mKYulaEMUykfb9gZ
|
||
# pk+e96wJ6l2CxouvgKe9gUhShDHaMuwV5KZMPWw5c9QLhTkg4IUaaOGnSDip0TYl
|
||
# d8GNGRbFiExmfS9jzpjoad+sPKhdnckcW67Y8y90z7h+9teDnRGWYpquRRPaf9xH
|
||
# +9/DUp/mBlXpnYzyOmJRvOwkDynUWICE5EV7WtgwggXpMIIEUaADAgECAhEA/lzU
|
||
# lQGKZRek0E74e2uTOjANBgkqhkiG9w0BAQwFADBUMQswCQYDVQQGEwJHQjEYMBYG
|
||
# A1UEChMPU2VjdGlnbyBMaW1pdGVkMSswKQYDVQQDEyJTZWN0aWdvIFB1YmxpYyBD
|
||
# b2RlIFNpZ25pbmcgQ0EgUjM2MB4XDTI0MDMxMzAwMDAwMFoXDTI1MDMxMzIzNTk1
|
||
# OVowWjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExGjAYBgNVBAoM
|
||
# EUludGVsIENvcnBvcmF0aW9uMRowGAYDVQQDDBFJbnRlbCBDb3Jwb3JhdGlvbjCC
|
||
# AaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAI69Cz15squYBdM5ZXnjFBNn
|
||
# vqzI4WUgaQ/PjBKog2t/IkSByXK+3K1m4CwQtTgqpMCD193E3A/xDHmWVEvpCKUB
|
||
# +xc8c/8FE6TymrIKA/0UH7jVesLgCo0AxfM0dkcqrvLKvnchseekdaM2b+E41NSj
|
||
# AhhWgGp1LoTZyrAOJNpGsPIfgA/0+J6RCECh9BARbXCRXAnzTuPtWDXfKlOwSa4+
|
||
# o2tJM7TPNALTJSLHoZbvfUOpgOh+0lWx49himoW6lfDt5cZDPOT8wNwpd5DWwB8M
|
||
# hzLfNEpbvR/85s8SP/dWRrAVkSRxS1wqIZa9OsxD+rjBBIe8JDR1Y9hjGBUKybMA
|
||
# Y30Pp8rDpFeH1Ya1A8gNeae8KRSlacroyoxhRviL9n8nCZIhiqL6Q0Qu9cJGwlYi
|
||
# L9mAMRyVPI3BHf0s6r6BRqt8yBYP/2dsgc4z9YV9DGJUaKz2kjwud1OJZupFDZio
|
||
# +shzbO/h78iJSQiMVHgMVFEVOZFERE3dVSEFsWdPAwIDAQABo4IBrjCCAaowHwYD
|
||
# VR0jBBgwFoAUDyrLIIcouOxvSK4rVKYpqhekzQwwHQYDVR0OBBYEFCjtPWp/OnUU
|
||
# 51aXAiBwcQ/gvYfGMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMBMGA1Ud
|
||
# JQQMMAoGCCsGAQUFBwMDMEoGA1UdIARDMEEwNQYMKwYBBAGyMQECAQMCMCUwIwYI
|
||
# KwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAEEATBJBgNV
|
||
# HR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLnNlY3RpZ28uY29tL1NlY3RpZ29QdWJs
|
||
# aWNDb2RlU2lnbmluZ0NBUjM2LmNybDB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUH
|
||
# MAKGOGh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY0NvZGVTaWdu
|
||
# aW5nQ0FSMzYuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNv
|
||
# bTAjBgNVHREEHDAagRhwa2llbmdpbmVlcmluZ0BpbnRlbC5jb20wDQYJKoZIhvcN
|
||
# AQEMBQADggGBAB01WGV1cWjtTCQGkNtDRpmS08NuUis1F2+0cwIrk2dY8tXKiZ5R
|
||
# supkBKWfpjNSHdW79DvVCotBbyRYUdDSeFkQ8jRPm+vlzyFhRWuW4qSYcIlx6qia
|
||
# pGZEFsvmEEXMnwG9zEEeKsYlnM/ZSI23uLZCXyhJx35G2PpBr3tMym6gIvta5Dml
|
||
# 4S/XEJJI/ZvIKhPO5QUemCS07S9QN7SOKeEkk1LdV1ccCBNtRpAzmGVr4iYS4pbV
|
||
# r8yishYe25TSAPeWEy9PYEMnjZbQQS8lD8XFB6gfiTJLFCCzIKsHzMIk+FuJlwVl
|
||
# q4ec/Wrx0+fpVeo2SPJZI/iE82gtD5oywotprC47MdvVlcvbePYnHoJqqRtnhX+E
|
||
# 6jlGRtnhUCPV+BsRScp4v8DIUJGdV5AzS5rYu3YhJGDJgTgPGvBtmvaPeJtxcKzX
|
||
# UnMpPtanuJgW3o1ucSo9SKb9dNqFcLcOUVD2lDjh85Z0anJom924xhVm4cGNWSF7
|
||
# az8cVA6zH/Rc6DCCBhowggQCoAMCAQICEGIdbQxSAZ47kHkVIIkhHAowDQYJKoZI
|
||
# hvcNAQEMBQAwVjELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRl
|
||
# ZDEtMCsGA1UEAxMkU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIFJvb3QgUjQ2
|
||
# MB4XDTIxMDMyMjAwMDAwMFoXDTM2MDMyMTIzNTk1OVowVDELMAkGA1UEBhMCR0Ix
|
||
# GDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDErMCkGA1UEAxMiU2VjdGlnbyBQdWJs
|
||
# aWMgQ29kZSBTaWduaW5nIENBIFIzNjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCC
|
||
# AYoCggGBAJsrnVP6NT+OYAZDasDP9X/2yFNTGMjO02x+/FgHlRd5ZTMLER4ARkZs
|
||
# Q3hAyAKwktlQqFZOGP/I+rLSJJmFeRno+DYDY1UOAWKA4xjMHY4qF2p9YZWhhbeF
|
||
# pPb09JNqFiTCYy/Rv/zedt4QJuIxeFI61tqb7/foXT1/LW2wHyN79FXSYiTxcv+1
|
||
# 8Irpw+5gcTbXnDOsrSHVJYdPE9s+5iRF2Q/TlnCZGZOcA7n9qudjzeN43OE/TpKF
|
||
# 2dGq1mVXn37zK/4oiETkgsyqA5lgAQ0c1f1IkOb6rGnhWqkHcxX+HnfKXjVodTmm
|
||
# V52L2UIFsf0l4iQ0UgKJUc2RGarhOnG3B++OxR53LPys3J9AnL9o6zlviz5pzsgf
|
||
# rQH4lrtNUz4Qq/Va5MbBwuahTcWk4UxuY+PynPjgw9nV/35gRAhC3L81B3/bIaBb
|
||
# 659+Vxn9kT2jUztrkmep/aLb+4xJbKZHyvahAEx2XKHafkeKtjiMqcUf/2BG935A
|
||
# 591GsllvWwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUMuuSmv81lkgvKEBCcCA2
|
||
# kVwXheYwHQYDVR0OBBYEFA8qyyCHKLjsb0iuK1SmKaoXpM0MMA4GA1UdDwEB/wQE
|
||
# AwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMBsG
|
||
# A1UdIAQUMBIwBgYEVR0gADAIBgZngQwBBAEwSwYDVR0fBEQwQjBAoD6gPIY6aHR0
|
||
# cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdSb290
|
||
# UjQ2LmNybDB7BggrBgEFBQcBAQRvMG0wRgYIKwYBBQUHMAKGOmh0dHA6Ly9jcnQu
|
||
# c2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5wN2Mw
|
||
# IwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMA0GCSqGSIb3DQEB
|
||
# DAUAA4ICAQAG/4Lhd2M2bnuhFSCbE/8E/ph1RGHDVpVx0ZE/haHrQECxyNbgcv2F
|
||
# ymQ5PPmNS6Dah66dtgCjBsULYAor5wxxcgEPRl05pZOzI3IEGwwsepp+8iGsLKaV
|
||
# pL3z5CmgELIqmk/Q5zFgR1TSGmxqoEEhk60FqONzDn7D8p4W89h8sX+V1imaUb69
|
||
# 3TGqWp3T32IKGfIgy9jkd7GM7YCa2xulWfQ6E1xZtYNEX/ewGnp9ZeHPsNwwviJM
|
||
# BZL4xVd40uPWUnOJUoSiugaz0yWLODRtQxs5qU6E58KKmfHwJotl5WZ7nIQuDT0m
|
||
# WjwEx7zSM7fs9Tx6N+Q/3+49qTtUvAQsrEAxwmzOTJ6Jp6uWmHCgrHW4dHM3ITpv
|
||
# G5Ipy62KyqYovk5O6cC+040Si15KJpuQ9VJnbPvqYqfMB9nEKX/d2rd1Q3DiuDex
|
||
# MKCCQdJGpOqUsxLuCOuFOoGbO7Uv3RjUpY39jkkp0a+yls6tN85fJe+Y8voTnbPU
|
||
# 1knpy24wUFBkfenBa+pRFHwCBB1QtS+vGNRhsceP3kSPNrrfN2sRzFYsNfrFaWz8
|
||
# YOdU254qNZQfd9O/VjxZ2Gjr3xgANHtM3HxfzPYF6/pKK8EE4dj66qKKtm2DTL1K
|
||
# FCg/OYJyfrdLJq1q2/HXntgr2GVw+ZWhrWgMTn8v1SjZsLlrgIfZHDGCG2Mwghtf
|
||
# AgEBMGkwVDELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEr
|
||
# MCkGA1UEAxMiU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIENBIFIzNgIRAP5c
|
||
# 1JUBimUXpNBO+HtrkzowDQYJYIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEMMQIw
|
||
# ADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYK
|
||
# KwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgtL5nshl/nh0MviJ/fDdj23jVHy4+
|
||
# Y4K7uLxHTy6UU8AwDQYJKoZIhvcNAQEBBQAEggGAPubWq9wCPK6uKTBa4EyW3hkT
|
||
# /kRjF4umMzYoBOGXSIQBYcQw+QZ1bMmnpwV9b6wlokWuqewsxAEaSZA71sW3oPTB
|
||
# DLJl+eFjzRI1fS6SOLq+4dnwBwRT6U21Lzltk8Wru/lH08CE6i0dg8K12CH3QGrj
|
||
# 6rfhIB85QSdXm1fzoFqnAURdx2QDydXmV5uUscW99BxQ/eHR2QumV18LnXQsZSA2
|
||
# kueCCAe6cicGJIacWpJIf+6hUr5jGN35mrVLJlpbmBD5uKPKgNZXFZgztWZvBa4j
|
||
# jIsUczFgxy7NTg0PaBejTvsrgsG1kOcAlHUBrTsDCZTscpaFTQtOuk6wgOWA+ZQn
|
||
# kq1ZQXvRjfDCOFX7CcWA0lv3buTH1V9J/KFWwFuOLUcUk2Q3MjrRARXVf3PtSgZX
|
||
# XaPirfStHFcIqIYRvWxMc8pJ/3nVgFXIjtgY1+HxD8r57JbprGmNWo48OdNvQDzB
|
||
# NalxE6bGGh+lMRD9j4OGn2XG8YeJX+RnerKb/Vy6oYIYzTCCGMkGCisGAQQBgjcD
|
||
# AwExghi5MIIYtQYJKoZIhvcNAQcCoIIYpjCCGKICAQMxDzANBglghkgBZQMEAgIF
|
||
# ADCB8wYLKoZIhvcNAQkQAQSggeMEgeAwgd0CAQEGCisGAQQBsjECAQEwMTANBglg
|
||
# hkgBZQMEAgEFAAQgaTC+IwkpuV+tavF6/1opu0Bi+iN2Uxj0JBE1MO881KUCFEYD
|
||
# 1RwCHfcriWg+eBuVlCLAEPwBGA8yMDI1MDEyNzE5MDIyNVqgcqRwMG4xCzAJBgNV
|
||
# BAYTAkdCMRMwEQYDVQQIEwpNYW5jaGVzdGVyMRgwFgYDVQQKEw9TZWN0aWdvIExp
|
||
# bWl0ZWQxMDAuBgNVBAMTJ1NlY3RpZ28gUHVibGljIFRpbWUgU3RhbXBpbmcgU2ln
|
||
# bmVyIFIzNaCCEv8wggZdMIIExaADAgECAhA6UmoshM5V5h1l/MwS2OmJMA0GCSqG
|
||
# SIb3DQEBDAUAMFUxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
|
||
# ZWQxLDAqBgNVBAMTI1NlY3RpZ28gUHVibGljIFRpbWUgU3RhbXBpbmcgQ0EgUjM2
|
||
# MB4XDTI0MDExNTAwMDAwMFoXDTM1MDQxNDIzNTk1OVowbjELMAkGA1UEBhMCR0Ix
|
||
# EzARBgNVBAgTCk1hbmNoZXN0ZXIxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEw
|
||
# MC4GA1UEAxMnU2VjdGlnbyBQdWJsaWMgVGltZSBTdGFtcGluZyBTaWduZXIgUjM1
|
||
# MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjdFn9MFIm739OEk6TWGB
|
||
# m8PY3EWlYQQ2jQae45iWgPXUGVuYoIa1xjTGIyuw3suUSBzKiyG0/c/Yn++d5mG6
|
||
# IyayljuGT9DeXQU9k8GWWj2/BPoamg2fFctnPsdTYhMGxM06z1+Ft0Bav8ybww21
|
||
# ii/faiy+NhiUM195+cFqOtCpJXxZ/lm9tpjmVmEqpAlRpfGmLhNdkqiEuDFTuD1G
|
||
# sV3jvuPuPGKUJTam3P53U4LM0UCxeDI8Qz40Qw9TPar6S02XExlc8X1YsiE6ETcT
|
||
# z+g1ImQ1OqFwEaxsMj/WoJT18GG5KiNnS7n/X4iMwboAg3IjpcvEzw4AZCZowHyC
|
||
# zYhnFRM4PuNMVHYcTXGgvuq9I7j4ke281x4e7/90Z5Wbk92RrLcS35hO30TABcGx
|
||
# 3Q8+YLRy6o0k1w4jRefCMT7b5mTxtq5XPmKvtgfPuaWPkGZ/tbxInyNDA7YgOgcc
|
||
# ULjp4+D56g2iuzRCsLQ9ac6AN4yRbqCYsG2rcIQ5INTyI2JzA2w1vsAHPRbUTeqV
|
||
# LDuNOY2gYIoKBWQsPYVoyzaoBVU6O5TG+a1YyfWkgVVS9nXKs8hVti3VpOV3aeua
|
||
# HnjgC6He2CCDL9aW6gteUe0AmC8XCtWwpePx6QW3ROZo8vSUe9AR7mMdu5+FzTmW
|
||
# 8K13Bt8GX/YBFJO7LWzwKAUCAwEAAaOCAY4wggGKMB8GA1UdIwQYMBaAFF9Y7Uwx
|
||
# eqJhQo1SgLqzYZcZojKbMB0GA1UdDgQWBBRo76QySWm2Ujgd6kM5LPQUap4MhTAO
|
||
# BgNVHQ8BAf8EBAMCBsAwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEF
|
||
# BQcDCDBKBgNVHSAEQzBBMDUGDCsGAQQBsjEBAgEDCDAlMCMGCCsGAQUFBwIBFhdo
|
||
# dHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBBAIwSgYDVR0fBEMwQTA/oD2g
|
||
# O4Y5aHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljVGltZVN0YW1w
|
||
# aW5nQ0FSMzYuY3JsMHoGCCsGAQUFBwEBBG4wbDBFBggrBgEFBQcwAoY5aHR0cDov
|
||
# L2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljVGltZVN0YW1waW5nQ0FSMzYu
|
||
# Y3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG
|
||
# 9w0BAQwFAAOCAYEAsNwuyfpPNkyKL/bJT9XvGE8fnw7Gv/4SetmOkjK9hPPa7/Ns
|
||
# v5/MHuVus+aXwRFqM5Vu51qfrHTwnVExcP2EHKr7IR+m/Ub7PamaeWfle5x8D0x/
|
||
# MsysICs00xtSNVxFywCvXx55l6Wg3lXiPCui8N4s51mXS0Ht85fkXo3auZdo1O4l
|
||
# HzJLYX4RZovlVWD5EfwV6Ve1G9UMslnm6pI0hyR0Zr95QWG0MpNPP0u05SHjq/Yk
|
||
# PlDee3yYOECNMqnZ+j8onoUtZ0oC8CkbOOk/AOoV4kp/6Ql2gEp3bNC7DOTlaCmH
|
||
# 24DjpVgryn8FMklqEoK4Z3IoUgV8R9qQLg1dr6/BjghGnj2XNA8ujta2Jyoxpqpv
|
||
# yETZCYIUjIs69YiDjzftt37rQVwIZsfCYv+DU5sh/StFL1x4rgNj2t8GccUfa/V3
|
||
# iFFW9lfIJWWsvtlC5XOOOQswr1UmVdNWQem4LwrlLgcdO/YAnHqY52QwnBLiAuUn
|
||
# uBeshWmfEb5oieIYMIIGFDCCA/ygAwIBAgIQeiOu2lNplg+RyD5c9MfjPzANBgkq
|
||
# hkiG9w0BAQwFADBXMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1p
|
||
# dGVkMS4wLAYDVQQDEyVTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5nIFJvb3Qg
|
||
# UjQ2MB4XDTIxMDMyMjAwMDAwMFoXDTM2MDMyMTIzNTk1OVowVTELMAkGA1UEBhMC
|
||
# R0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEsMCoGA1UEAxMjU2VjdGlnbyBQ
|
||
# dWJsaWMgVGltZSBTdGFtcGluZyBDQSBSMzYwggGiMA0GCSqGSIb3DQEBAQUAA4IB
|
||
# jwAwggGKAoIBgQDNmNhDQatugivs9jN+JjTkiYzT7yISgFQ+7yavjA6Bg+OiIjPm
|
||
# /N/t3nC7wYUrUlY3mFyI32t2o6Ft3EtxJXCc5MmZQZ8AxCbh5c6WzeJDB9qkQVa4
|
||
# 6xiYEpc81KnBkAWgsaXnLURoYZzksHIzzCNxtIXnb9njZholGw9djnjkTdAA83ab
|
||
# EOHQ4ujOGIaBhPXG2NdV8TNgFWZ9BojlAvflxNMCOwkCnzlH4oCw5+4v1nssWeN1
|
||
# y4+RlaOywwRMUi54fr2vFsU5QPrgb6tSjvEUh1EC4M29YGy/SIYM8ZpHadmVjbi3
|
||
# Pl8hJiTWw9jiCKv31pcAaeijS9fc6R7DgyyLIGflmdQMwrNRxCulVq8ZpysiSYNi
|
||
# 79tw5RHWZUEhnRfs/hsp/fwkXsynu1jcsUX+HuG8FLa2BNheUPtOcgw+vHJcJ8Hn
|
||
# JCrcUWhdFczf8O+pDiyGhVYX+bDDP3GhGS7TmKmGnbZ9N+MpEhWmbiAVPbgkqykS
|
||
# kzyYVr15OApZYK8CAwEAAaOCAVwwggFYMB8GA1UdIwQYMBaAFPZ3at0//QET/xah
|
||
# bIICL9AKPRQlMB0GA1UdDgQWBBRfWO1MMXqiYUKNUoC6s2GXGaIymzAOBgNVHQ8B
|
||
# Af8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADATBgNVHSUEDDAKBggrBgEFBQcD
|
||
# CDARBgNVHSAECjAIMAYGBFUdIAAwTAYDVR0fBEUwQzBBoD+gPYY7aHR0cDovL2Ny
|
||
# bC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljVGltZVN0YW1waW5nUm9vdFI0Ni5j
|
||
# cmwwfAYIKwYBBQUHAQEEcDBuMEcGCCsGAQUFBzAChjtodHRwOi8vY3J0LnNlY3Rp
|
||
# Z28uY29tL1NlY3RpZ29QdWJsaWNUaW1lU3RhbXBpbmdSb290UjQ2LnA3YzAjBggr
|
||
# BgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQEMBQAD
|
||
# ggIBABLXeyCtDjVYDJ6BHSVY/UwtZ3Svx2ImIfZVVGnGoUaGdltoX4hDskBMZx5N
|
||
# Y5L6SCcwDMZhHOmbyMhyOVJDwm1yrKYqGDHWzpwVkFJ+996jKKAXyIIaUf5JVKjc
|
||
# cev3w16mNIUlNTkpJEor7edVJZiRJVCAmWAaHcw9zP0hY3gj+fWp8MbOocI9Zn78
|
||
# xvm9XKGBp6rEs9sEiq/pwzvg2/KjXE2yWUQIkms6+yslCRqNXPjEnBnxuUB1fm6b
|
||
# PAV+Tsr/Qrd+mOCJemo06ldon4pJFbQd0TQVIMLv5koklInHvyaf6vATJP4DfPtK
|
||
# zSBPkKlOtyaFTAjD2Nu+di5hErEVVaMqSVbfPzd6kNXOhYm23EWm6N2s2ZHCHVhl
|
||
# UgHaC4ACMRCgXjYfQEDtYEK54dUwPJXV7icz0rgCzs9VI29DwsjVZFpO4ZIVR33L
|
||
# wXyPDbYFkLqYmgHjR3tKVkhh9qKV2WCmBuC27pIOx6TYvyqiYbntinmpOqh/QPAn
|
||
# hDgexKG9GX/n1PggkGi9HCapZp8fRwg8RftwS21Ln61euBG0yONM6noD2XQPrFwp
|
||
# m3GcuqJMf0o8LLrFkSLRQNwxPDDkWXhW+gZswbaiie5fd/W2ygcto78XCSPfFWve
|
||
# UOSZ5SqK95tBO8aTHmEa4lpJVD7HrTEn9jb1EGvxOb1cnn0CMIIGgjCCBGqgAwIB
|
||
# AgIQNsKwvXwbOuejs902y8l1aDANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UEBhMC
|
||
# VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4w
|
||
# HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVz
|
||
# dCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjEwMzIyMDAwMDAwWhcN
|
||
# MzgwMTE4MjM1OTU5WjBXMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBM
|
||
# aW1pdGVkMS4wLAYDVQQDEyVTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5nIFJv
|
||
# b3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAiJ3YuUVnnR3d
|
||
# 6LkmgZpUVMB8SQWbzFoVD9mUEES0QUCBdxSZqdTkdizICFNeINCSJS+lV1ipnW5i
|
||
# hkQyC0cRLWXUJzodqpnMRs46npiJPHrfLBOifjfhpdXJ2aHHsPHggGsCi7uE0awq
|
||
# KggE/LkYw3sqaBia67h/3awoqNvGqiFRJ+OTWYmUCO2GAXsePHi+/JUNAax3kpqs
|
||
# tbl3vcTdOGhtKShvZIvjwulRH87rbukNyHGWX5tNK/WABKf+Gnoi4cmisS7oSimg
|
||
# HUI0Wn/4elNd40BFdSZ1EwpuddZ+Wr7+Dfo0lcHflm/FDDrOJ3rWqauUP8hsokDo
|
||
# I7D/yUVI9DAE/WK3Jl3C4LKwIpn1mNzMyptRwsXKrop06m7NUNHdlTDEMovXAIDG
|
||
# AvYynPt5lutv8lZeI5w3MOlCybAZDpK3Dy1MKo+6aEtE9vtiTMzz/o2dYfdP0KWZ
|
||
# wZIXbYsTIlg1YIetCpi5s14qiXOpRsKqFKqav9R1R5vj3NgevsAsvxsAnI8Oa5s2
|
||
# oy25qhsoBIGo/zi6GpxFj+mOdh35Xn91y72J4RGOJEoqzEIbW3q0b2iPuWLA911c
|
||
# RxgY5SJYubvjay3nSMbBPPFsyl6mY4/WYucmyS9lo3l7jk27MAe145GWxK4O3m3g
|
||
# EFEIkv7kRmefDR7Oe2T1HxAnICQvr9sCAwEAAaOCARYwggESMB8GA1UdIwQYMBaA
|
||
# FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBT2d2rdP/0BE/8WoWyCAi/Q
|
||
# Cj0UJTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zATBgNVHSUEDDAK
|
||
# BggrBgEFBQcDCDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/
|
||
# aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRp
|
||
# b25BdXRob3JpdHkuY3JsMDUGCCsGAQUFBwEBBCkwJzAlBggrBgEFBQcwAYYZaHR0
|
||
# cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEADr5lQe1o
|
||
# RLjlocXUEYfktzsljOt+2sgXke3Y8UPEooU5y39rAARaAdAxUeiX1ktLJ3+lgxto
|
||
# LQhn5cFb3GF2SSZRX8ptQ6IvuD3wz/LNHKpQ5nX8hjsDLRhsyeIiJsms9yAWnvdY
|
||
# OdEMq1W61KE9JlBkB20XBee6JaXx4UBErc+YuoSb1SxVf7nkNtUjPfcxuFtrQdRM
|
||
# Ri/fInV/AobE8Gw/8yBMQKKaHt5eia8ybT8Y/Ffa6HAJyz9gvEOcF1VWXG8OMeM7
|
||
# Vy7Bs6mSIkYeYtddU1ux1dQLbEGur18ut97wgGwDiGinCwKPyFO7ApcmVJOtlw9F
|
||
# VJxw/mL1TbyBns4zOgkaXFnnfzg4qbSvnrwyj1NiurMp4pmAWjR+Pb/SIduPnmFz
|
||
# bSN/G8reZCL4fvGlvPFk4Uab/JVCSmj59+/mB2Gn6G/UYOy8k60mKcmaAZsEVkhO
|
||
# Fuoj4we8CYyaR9vd9PGZKSinaZIkvVjbH/3nlLb0a7SBIkiRzfPfS9T+JesylbHa
|
||
# 1LtRV9U/7m0q7Ma2CQ/t392ioOssXW7oKLdOmMBl14suVFBmbzrt5V5cQPnwtd3U
|
||
# OTpS9oCG+ZZheiIvPgkDmA8FzPsnfXW5qHELB43ET7HHFHeRPRYrMBKjkb8/IN7P
|
||
# o0d0hQoF4TeMM+zYAJzoKQnVKOLg8pZVPT8xggSRMIIEjQIBATBpMFUxCzAJBgNV
|
||
# BAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxLDAqBgNVBAMTI1NlY3Rp
|
||
# Z28gUHVibGljIFRpbWUgU3RhbXBpbmcgQ0EgUjM2AhA6UmoshM5V5h1l/MwS2OmJ
|
||
# MA0GCWCGSAFlAwQCAgUAoIIB+TAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQw
|
||
# HAYJKoZIhvcNAQkFMQ8XDTI1MDEyNzE5MDIyNVowPwYJKoZIhvcNAQkEMTIEMKQN
|
||
# MKHj1iRXx0Lg//XSK8/7YjEXVrrVKdJ7gIJeTgO6ZYpFqKh75iW5RU7rwKlIFTCC
|
||
# AXoGCyqGSIb3DQEJEAIMMYIBaTCCAWUwggFhMBYEFPhgmBmm+4gs9+hSl/KhGVIa
|
||
# FndfMIGHBBTGrlTkeIbxfD1VEkiMacNKevnC3TBvMFukWTBXMQswCQYDVQQGEwJH
|
||
# QjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMS4wLAYDVQQDEyVTZWN0aWdvIFB1
|
||
# YmxpYyBUaW1lIFN0YW1waW5nIFJvb3QgUjQ2AhB6I67aU2mWD5HIPlz0x+M/MIG8
|
||
# BBSFPWMtk4KCYXzQkDXEkd6SwULaxzCBozCBjqSBizCBiDELMAkGA1UEBhMCVVMx
|
||
# EzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD
|
||
# VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBS
|
||
# U0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkCEDbCsL18Gzrno7PdNsvJdWgwDQYJ
|
||
# KoZIhvcNAQEBBQAEggIAWVERb9sFBOjjVarxOxVhtzWEX21a38Mij4pBzIsWXuoy
|
||
# R7QP5bvu9ppK62Iw8BncnK3HgKQdCWA7higjLz2X9Yjk9Vc57OsZwUjcdMJsPwi3
|
||
# 2XYStULhtqqVXQK7MyvGJV8lBmTgL6pNkDTm/raXHtS7/Pu1BY8Yu61bZ3QoQkex
|
||
# SpTJwxa/VOXjS6VaeZhnGFsAxcexWGBaw5D9u0Bqu+DJKFpmzApH3ULpaf6mAUou
|
||
# lS7zxfn+mqQaViPnMGa5xmj32Oz++HZbtLldMxgrwbRB5nt0h3kzstZXl/Vo8W44
|
||
# xocgn6cgKnoIdIWKm0lWfa4ZYC+e8JLRa+3bNiRA/Rg3gk+yHuWxJRSaKRU+5Krw
|
||
# Kd4Ma62TO8Q3v6qQIfeMtTNCeweP0X8oCAfnKMFa6AjcPzOINbKrqQk7WIE8U+A+
|
||
# Q+uDQP5FeR+u5LUB1Bd7NeMLjGvte9pg3vo9MwRUensGkobm5ijh5xSF7Nwx4vf4
|
||
# tioQJhmOIUdBngWjNsnRMZpDO7o1qy//CFo263N+eDbnHQAmsOXyeXgxl6smXJm0
|
||
# W7nWoouQ3HYZ3wp7CJJwHBUGPhYkc3EncvPE5dQ4kMHasxhELoLGsXn7kMMzXRRu
|
||
# VKwm6lQSF95LX4XBRl+zGS4KU8Sw+FdSrXs5gDu3IUetoCI92Q7ckfOgl8Hu+Yk=
|
||
# SIG # End signature block
|