diff --git a/Active Directory/ADHTMLReports.ps1 b/Active Directory/ADHTMLReports.ps1 new file mode 100644 index 0000000..e377565 --- /dev/null +++ b/Active Directory/ADHTMLReports.ps1 @@ -0,0 +1,1732 @@ +<# +.SYNOPSIS + Generate graphed report for all Active Directory objects. + +.DESCRIPTION + Generate graphed report for all Active Directory objects. + +.PARAMETER CompanyLogo + Enter URL or UNC path to your desired Company Logo for generated report. + + -CompanyLogo "\\Server01\Admin\Files\CompanyLogo.png" + +.PARAMETER RightLogo + Enter URL or UNC path to your desired right-side logo for generated report. + + -RightLogo "https://www.psmpartners.com/wp-content/uploads/2017/10/porcaro-stolarek-mete.png" + +.PARAMETER ReportTitle + Enter desired title for generated report. + + -ReportTitle "Active Directory Report" + +.PARAMETER Days + Users that have not logged in [X] amount of days or more. + + -Days "30" + +.PARAMETER UserCreatedDays + Users that have been created within [X] amount of days. + + -UserCreatedDays "7" + +.PARAMETER DaysUntilPWExpireINT + Users password expires within [X] amount of days + + -DaysUntilPWExpireINT "7" + +.PARAMETER ADModNumber + Active Directory Objects that have been modified within [X] amount of days. + + -ADModNumber "3" + +.NOTES + Version: 1.0.3 + Author: Bradley Wyatt + Date: 12/4/2018 + Modified: JBear 12/5/2018 + Bradley Wyatt 12/8/2018 + jporgand 12/6/2018 +#> + +param ( + + #Company logo that will be displayed on the left, can be URL or UNC + [Parameter(ValueFromPipeline = $true, HelpMessage = "Enter URL or UNC path to Company Logo")] + [String]$CompanyLogo = "http://thelazyadministrator.com/wp-content/uploads/2018/06/logo-2-e1529684959389.png", + #Logo that will be on the right side, UNC or URL + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Enter URL or UNC path for Side Logo")] + [String]$RightLogo = "http://thelazyadministrator.com/wp-content/uploads/2018/06/amd.png", + #Title of generated report + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Enter desired title for report")] + [String]$ReportTitle = "Active Directory Report", + #Location the report will be saved to + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Enter desired directory path to save; Default: C:\Automation\")] + [String]$ReportSavePath = "C:\Lab\", + #Find users that have not logged in X Amount of days, this sets the days + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Users that have not logged on in more than [X] days. amount of days; Default: 30")] + $Days = 30, + #Get users who have been created in X amount of days and less + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Users that have been created within [X] amount of days; Default: 7")] + $UserCreatedDays = 7, + #Get users whos passwords expire in less than X amount of days + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Users password expires within [X] amount of days; Default: 7")] + $DaysUntilPWExpireINT = 7, + #Get AD Objects that have been modified in X days and newer + + [Parameter(ValueFromPipeline = $true, HelpMessage = "AD Objects that have been modified within [X] amount of days; Default: 3")] + $ADModNumber = 3 + + #CSS template located C:\Program Files\WindowsPowerShell\Modules\ReportHTML\1.4.1.1\ + #Default template is orange and named "Sample" +) + +$DomainAdmin = "Admins du domaine" +$EntrepriseAdmin = "Administrateurs de l`'entreprise" + +Write-Host "Gathering Report Customization..." -ForegroundColor White +Write-Host "__________________________________" -ForegroundColor White +(Write-Host -NoNewline "Company Logo (left): " -ForegroundColor Yellow), (Write-Host $CompanyLogo -ForegroundColor White) +(Write-Host -NoNewline "Company Logo (right): " -ForegroundColor Yellow), (Write-Host $RightLogo -ForegroundColor White) +(Write-Host -NoNewline "Report Title: " -ForegroundColor Yellow), (Write-Host $ReportTitle -ForegroundColor White) +(Write-Host -NoNewline "Report Save Path: " -ForegroundColor Yellow), (Write-Host $ReportSavePath -ForegroundColor White) +(Write-Host -NoNewline "Amount of Days from Last User Logon Report: " -ForegroundColor Yellow), (Write-Host $Days -ForegroundColor White) +(Write-Host -NoNewline "Amount of Days for New User Creation Report: " -ForegroundColor Yellow), (Write-Host $UserCreatedDays -ForegroundColor White) +(Write-Host -NoNewline "Amount of Days for User Password Expiration Report: " -ForegroundColor Yellow), (Write-Host $DaysUntilPWExpireINT -ForegroundColor White) +(Write-Host -NoNewline "Amount of Days for Newly Modified AD Objects Report: " -ForegroundColor Yellow), (Write-Host $ADModNumber -ForegroundColor White) +Write-Host "__________________________________" -ForegroundColor White + +function LastLogonConvert ($ftDate) { + + $Date = [DateTime]::FromFileTime($ftDate) + + if ($Date -lt (Get-Date '1/1/1900') -or $date -eq 0 -or $date -eq $null) { + + "Never" + } + + else { + + $Date + } + +} #End function LastLogonConvert + +#Check for ReportHTML Module +$Mod = Get-Module -ListAvailable -Name "ReportHTML" + +If ($null -eq $Mod) { + + Write-Host "ReportHTML Module is not present, attempting to install it" + + Install-Module -Name ReportHTML -Force + Import-Module ReportHTML -ErrorAction SilentlyContinue +} + +#Array of default Security Groups +$DefaultSGs = @( + + "Access Control Assistance Operators" + "Account Operators" + "Administrators" + "Allowed RODC Password Replication Group" + "Backup Operators" + "Certificate Service DCOM Access" + "Cert Publishers" + "Cloneable Domain Controllers" + "Cryptographic Operators" + "Denied RODC Password Replication Group" + "Distributed COM Users" + "DnsUpdateProxy" + "DnsAdmins" + "Domain Admins" + "Domain Computers" + "Domain Controllers" + "Domain Guests" + "Domain Users" + "Enterprise Admins" + "Enterprise Key Admins" + "Enterprise Read-only Domain Controllers" + "Event Log Readers" + "Group Policy Creator Owners" + "Guests" + "Hyper-V Administrators" + "IIS_IUSRS" + "Incoming Forest Trust Builders" + "Key Admins" + "Network Configuration Operators" + "Performance Log Users" + "Performance Monitor Users" + "Print Operators" + "Pre-Windows 2000 Compatible Access" + "Protected Users" + "RAS and IAS Servers" + "RDS Endpoint Servers" + "RDS Management Servers" + "RDS Remote Access Servers" + "Read-only Domain Controllers" + "Remote Desktop Users" + "Remote Management Users" + "Replicator" + "Schema Admins" + "Server Operators" + "Storage Replica Administrators" + "System Managed Accounts Group" + "Terminal Server License Servers" + "Users" + "Windows Authorization Access Group" + "WinRMRemoteWMIUsers" +) + +$Table = New-Object 'System.Collections.Generic.List[System.Object]' +$OUTable = New-Object 'System.Collections.Generic.List[System.Object]' +$UserTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GroupTypetable = New-Object 'System.Collections.Generic.List[System.Object]' +$DefaultGrouptable = New-Object 'System.Collections.Generic.List[System.Object]' +$EnabledDisabledUsersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$DomainAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ExpiringAccountsTable = New-Object 'System.Collections.Generic.List[System.Object]' +$CompanyInfoTable = New-Object 'System.Collections.Generic.List[System.Object]' +$securityeventtable = New-Object 'System.Collections.Generic.List[System.Object]' +$DomainTable = New-Object 'System.Collections.Generic.List[System.Object]' +$OUGPOTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GroupMembershipTable = New-Object 'System.Collections.Generic.List[System.Object]' +$PasswordExpirationTable = New-Object 'System.Collections.Generic.List[System.Object]' +$PasswordExpireSoonTable = New-Object 'System.Collections.Generic.List[System.Object]' +$userphaventloggedonrecentlytable = New-Object 'System.Collections.Generic.List[System.Object]' +$EnterpriseAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$NewCreatedUsersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GroupProtectionTable = New-Object 'System.Collections.Generic.List[System.Object]' +$OUProtectionTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GPOTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ADObjectTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ProtectedUsersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ComputersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ComputerProtectedTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ComputersEnabledTable = New-Object 'System.Collections.Generic.List[System.Object]' +$DefaultComputersinDefaultOUTable = New-Object 'System.Collections.Generic.List[System.Object]' +$DefaultUsersinDefaultOUTable = New-Object 'System.Collections.Generic.List[System.Object]' +$TOPUserTable = New-Object 'System.Collections.Generic.List[System.Object]' +$TOPGroupsTable = New-Object 'System.Collections.Generic.List[System.Object]' +$TOPComputersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GraphComputerOS = New-Object 'System.Collections.Generic.List[System.Object]' + +#Get all users right away. Instead of doing several lookups, we will use this object to look up all the information needed. +$AllUsers = Get-ADUser -Filter * -Properties * + +$GPOs = Get-GPO -All | Select-Object DisplayName, GPOStatus, ModificationTime, @{ Label = "ComputerVersion"; Expression = { $_.computer.dsversion } }, @{ Label = "UserVersion"; Expression = { $_.user.dsversion } } + +<########################### + Dashboard +############################> + +Write-Host "Working on Dashboard Report..." -ForegroundColor Green + +$dte = (Get-Date).AddDays(- $ADModNumber) + +$ADObjs = Get-ADObject -Filter { whenchanged -gt $dte -and ObjectClass -ne "domainDNS" -and ObjectClass -ne "rIDManager" -and ObjectClass -ne "rIDSet" } -Properties * + +foreach ($ADObj in $ADObjs) { + + if ($ADObj.ObjectClass -eq "GroupPolicyContainer") { + + $Name = $ADObj.DisplayName + } + + else { + + $Name = $ADObj.Name + } + + $obj = [PSCustomObject]@{ + + 'Name' = $Name + 'Object Type' = $ADObj.ObjectClass + 'When Changed' = $ADObj.WhenChanged + } + + $ADObjectTable.Add($obj) +} +if (($ADObjectTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No AD Objects have been modified recently' + } + + $ADObjectTable.Add($obj) +} + + +$ADRecycleBinStatus = (Get-ADOptionalFeature -Filter 'name -like "Recycle Bin Feature"').EnabledScopes + +if ($ADRecycleBinStatus.Count -lt 1) { + + $ADRecycleBin = "Disabled" +} + +else { + + $ADRecycleBin = "Enabled" +} + +#Company Information +$ADInfo = Get-ADDomain +$ForestObj = Get-ADForest +$DomainControllerobj = Get-ADDomain +$Forest = $ADInfo.Forest +$InfrastructureMaster = $DomainControllerobj.InfrastructureMaster +$RIDMaster = $DomainControllerobj.RIDMaster +$PDCEmulator = $DomainControllerobj.PDCEmulator +$DomainNamingMaster = $ForestObj.DomainNamingMaster +$SchemaMaster = $ForestObj.SchemaMaster + +$obj = [PSCustomObject]@{ + + 'Domain' = $Forest + 'AD Recycle Bin' = $ADRecycleBin + 'Infrastructure Master' = $InfrastructureMaster + 'RID Master' = $RIDMaster + 'PDC Emulator' = $PDCEmulator + 'Domain Naming Master' = $DomainNamingMaster + 'Schema Master' = $SchemaMaster +} + +$CompanyInfoTable.Add($obj) + +if (($CompanyInfoTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: Could not get items for table' + } + $CompanyInfoTable.Add($obj) +} + +#Get newly created users +$When = ((Get-Date).AddDays(- $UserCreatedDays)).Date +$NewUsers = $AllUsers | Where-Object { $_.whenCreated -ge $When } + +foreach ($Newuser in $Newusers) { + + $obj = [PSCustomObject]@{ + + 'Name' = $Newuser.Name + 'Enabled' = $Newuser.Enabled + 'Creation Date' = $Newuser.whenCreated + } + + $NewCreatedUsersTable.Add($obj) +} +if (($NewCreatedUsersTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No new users have been recently created' + } + $NewCreatedUsersTable.Add($obj) +} + + + +#Get Domain Admins +$DomainAdminMembers = Get-ADGroupMember $DomainAdmin + +foreach ($DomainAdminMember in $DomainAdminMembers) { + + $Name = $DomainAdminMember.Name + $Type = $DomainAdminMember.ObjectClass + $Enabled = ($AllUsers | Where-Object { $_.Name -eq $Name }).Enabled + + $obj = [PSCustomObject]@{ + + 'Name' = $Name + 'Enabled' = $Enabled + 'Type' = $Type + } + + $DomainAdminTable.Add($obj) +} + +if (($DomainAdminTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No Domain Admin Members were found' + } + $DomainAdminTable.Add($obj) +} + + +#Get Enterprise Admins +$EnterpriseAdminsMembers = Get-ADGroupMember $EntrepriseAdmin -Server $SchemaMaster + +foreach ($EnterpriseAdminsMember in $EnterpriseAdminsMembers) { + + $Name = $EnterpriseAdminsMember.Name + $Type = $EnterpriseAdminsMember.ObjectClass + $Enabled = ($AllUsers | Where-Object { $_.Name -eq $Name }).Enabled + + $obj = [PSCustomObject]@{ + + 'Name' = $Name + 'Enabled' = $Enabled + 'Type' = $Type + } + + $EnterpriseAdminTable.Add($obj) +} + +if (($EnterpriseAdminTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: Enterprise Admin members were found' + } + $EnterpriseAdminTable.Add($obj) +} + +$DefaultComputersOU = (Get-ADDomain).computerscontainer +$DefaultComputers = Get-ADComputer -Filter * -Properties * -SearchBase "$DefaultComputersOU" + +foreach ($DefaultComputer in $DefaultComputers) { + + $obj = [PSCustomObject]@{ + + 'Name' = $DefaultComputer.Name + 'Enabled' = $DefaultComputer.Enabled + 'Operating System' = $DefaultComputer.OperatingSystem + 'Modified Date' = $DefaultComputer.Modified + 'Password Last Set' = $DefaultComputer.PasswordLastSet + 'Protect from Deletion' = $DefaultComputer.ProtectedFromAccidentalDeletion + } + + $DefaultComputersinDefaultOUTable.Add($obj) +} + +if (($DefaultComputersinDefaultOUTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No computers were found in the Default OU' + } + $DefaultComputersinDefaultOUTable.Add($obj) +} + +$DefaultUsersOU = (Get-ADDomain).UsersContainer +$DefaultUsers = $Allusers | Where-Object { $_.DistinguishedName -like "*$($DefaultUsersOU)" } | Select-Object Name, UserPrincipalName, Enabled, ProtectedFromAccidentalDeletion, EmailAddress, @{ Name = 'lastlogon'; Expression = { LastLogonConvert $_.lastlogon } }, DistinguishedName + +foreach ($DefaultUser in $DefaultUsers) { + + $obj = [PSCustomObject]@{ + + 'Name' = $DefaultUser.Name + 'UserPrincipalName' = $DefaultUser.UserPrincipalName + 'Enabled' = $DefaultUser.Enabled + 'Protected from Deletion' = $DefaultUser.ProtectedFromAccidentalDeletion + 'Last Logon' = $DefaultUser.LastLogon + 'Email Address' = $DefaultUser.EmailAddress + } + + $DefaultUsersinDefaultOUTable.Add($obj) +} +if (($DefaultUsersinDefaultOUTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No Users were found in the default OU' + } + $DefaultUsersinDefaultOUTable.Add($obj) +} + + +#Expiring Accounts +$LooseUsers = Search-ADAccount -AccountExpiring -UsersOnly + +foreach ($LooseUser in $LooseUsers) { + + $NameLoose = $LooseUser.Name + $UPNLoose = $LooseUser.UserPrincipalName + $ExpirationDate = $LooseUser.AccountExpirationDate + $enabled = $LooseUser.Enabled + + $obj = [PSCustomObject]@{ + + 'Name' = $NameLoose + 'UserPrincipalName' = $UPNLoose + 'Expiration Date' = $ExpirationDate + 'Enabled' = $enabled + } + + $ExpiringAccountsTable.Add($obj) +} + +if (($ExpiringAccountsTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No Users were found to expire soon' + } + $ExpiringAccountsTable.Add($obj) +} + +#Security Logs +$SecurityLogs = Get-EventLog -Newest 7 -LogName "Security" | Where-Object { $_.Message -like "*An account*" } + +foreach ($SecurityLog in $SecurityLogs) { + + $TimeGenerated = $SecurityLog.TimeGenerated + $EntryType = $SecurityLog.EntryType + $Recipient = $SecurityLog.Message + + $obj = [PSCustomObject]@{ + + 'Time' = $TimeGenerated + 'Type' = $EntryType + 'Message' = $Recipient + } + + $SecurityEventTable.Add($obj) +} + +if (($SecurityEventTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No logon security events were found' + } + $SecurityEventTable.Add($obj) +} + +#Tenant Domain +$Domains = Get-ADForest | Select-Object -ExpandProperty upnsuffixes | ForEach-Object { + + $obj = [PSCustomObject]@{ + + 'UPN Suffixes' = $_ + Valid = "True" + } + + $DomainTable.Add($obj) +} +if (($DomainTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No UPN Suffixes were found' + } + $DomainTable.Add($obj) +} + +Write-Host "Done!" -ForegroundColor White + +<########################### + + Groups + +############################> + +Write-Host "Working on Groups Report..." -ForegroundColor Green + +#Get groups and sort in alphabetical order +$Groups = Get-ADGroup -Filter * -Properties * +$SecurityCount = 0 +$MailSecurityCount = 0 +$CustomGroup = 0 +$DefaultGroup = 0 +$Groupswithmemebrship = 0 +$Groupswithnomembership = 0 +$GroupsProtected = 0 +$GroupsNotProtected = 0 + +foreach ($Group in $Groups) { + + $DefaultADGroup = 'False' + $Type = New-Object 'System.Collections.Generic.List[System.Object]' + $Gemail = (Get-ADGroup $Group -Properties mail).mail + + if (($group.GroupCategory -eq "Security") -and ($Gemail -ne $Null)) { + + $MailSecurityCount++ + } + + if (($group.GroupCategory -eq "Security") -and (($Gemail) -eq $Null)) { + + $SecurityCount++ + } + + if ($Group.ProtectedFromAccidentalDeletion -eq $True) { + + $GroupsProtected++ + } + + else { + + $GroupsNotProtected++ + } + + if ($DefaultSGs -contains $Group.Name) { + + $DefaultADGroup = "True" + $DefaultGroup++ + } + + else { + + $CustomGroup++ + } + + if ($group.GroupCategory -eq "Distribution") { + + $Type = "Distribution Group" + } + + if (($group.GroupCategory -eq "Security") -and (($Gemail) -eq $Null)) { + + $Type = "Security Group" + } + + if (($group.GroupCategory -eq "Security") -and (($Gemail) -ne $Null)) { + + $Type = "Mail-Enabled Security Group" + } + + if ($Group.Name -ne "Domain Users") { + + $Users = (Get-ADGroupMember -Identity $Group | Sort-Object DisplayName | Select-Object -ExpandProperty Name) -join ", " + + if (!($Users)) { + + $Groupswithnomembership++ + } + + else { + + $Groupswithmemebrship++ + + } + } + + else { + + $Users = "Skipped Domain Users Membership" + } + + $OwnerDN = Get-ADGroup -Filter { name -eq $Group.Name } -Properties managedBy | Select-Object -ExpandProperty ManagedBy + Try { + $Manager = Get-ADUser -Filter { distinguishedname -like $OwnerDN } | Select-Object -ExpandProperty Name + } + Catch { + write-host -ForegroundColor Yellow "Cannot resolve the manager, " $Manager " on the group " $group.name + } + + #$Manager = $AllUsers | Where-Object { $_.distinguishedname -eq $OwnerDN } | Select-Object -ExpandProperty Name + + $obj = [PSCustomObject]@{ + + 'Name' = $Group.name + 'Type' = $Type + 'Members' = $users + 'Managed By' = $Manager + 'E-mail Address' = $GEmail + 'Protected from Deletion' = $Group.ProtectedFromAccidentalDeletion + 'Default AD Group' = $DefaultADGroup + } + + $table.Add($obj) +} + +if (($table).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No Groups were found' + } + $table.Add($obj) +} +#TOP groups table +$obj1 = [PSCustomObject]@{ + + 'Total Groups' = $Groups.Count + 'Mail-Enabled Security Groups' = $MailSecurityCount + 'Security Groups' = $SecurityCount + 'Distribution Groups' = $DistroCount +} + +$TOPGroupsTable.Add($obj1) + +$obj1 = [PSCustomObject]@{ + + 'Name' = 'Mail-Enabled Security Groups' + 'Count' = $MailSecurityCount +} + +$GroupTypetable.Add($obj1) + +$obj1 = [PSCustomObject]@{ + + 'Name' = 'Security Groups' + 'Count' = $SecurityCount +} + +$GroupTypetable.Add($obj1) +$DistroCount = ($Groups | Where-Object { $_.GroupCategory -eq "Distribution" }).Count + +$obj1 = [PSCustomObject]@{ + + 'Name' = 'Distribution Groups' + 'Count' = $DistroCount +} + +$GroupTypetable.Add($obj1) + +#Default Group Pie Chart +$obj1 = [PSCustomObject]@{ + + 'Name' = 'Default Groups' + 'Count' = $DefaultGroup +} + +$DefaultGrouptable.Add($obj1) + +$obj1 = [PSCustomObject]@{ + + 'Name' = 'Custom Groups' + 'Count' = $CustomGroup +} + +$DefaultGrouptable.Add($obj1) + +#Group Protection Pie Chart +$obj1 = [PSCustomObject]@{ + + 'Name' = 'Protected' + 'Count' = $GroupsProtected +} + +$GroupProtectionTable.Add($obj1) + +$obj1 = [PSCustomObject]@{ + + 'Name' = 'Not Protected' + 'Count' = $GroupsNotProtected +} + +$GroupProtectionTable.Add($obj1) + +#Groups with membership vs no membership pie chart +$objmem = [PSCustomObject]@{ + + 'Name' = 'With Members' + 'Count' = $Groupswithmemebrship +} + +$GroupMembershipTable.Add($objmem) + +$objmem = [PSCustomObject]@{ + + 'Name' = 'No Members' + 'Count' = $Groupswithnomembership +} + +$GroupMembershipTable.Add($objmem) + +Write-Host "Done!" -ForegroundColor White + +<########################### + + Organizational Units + +############################> + +Write-Host "Working on Organizational Units Report..." -ForegroundColor Green + +#Get all OUs' +$OUs = Get-ADOrganizationalUnit -Filter * -Properties * +$OUwithLinked = 0 +$OUwithnoLink = 0 +$OUProtected = 0 +$OUNotProtected = 0 + +foreach ($OU in $OUs) { + + $LinkedGPOs = New-Object 'System.Collections.Generic.List[System.Object]' + + if (($OU.linkedgrouppolicyobjects).length -lt 1) { + + $LinkedGPOs = "None" + $OUwithnoLink++ + } + + else { + + $OUwithLinked++ + $GPOslinks = $OU.linkedgrouppolicyobjects + + foreach ($GPOlink in $GPOslinks) { + + $Split1 = $GPOlink -split "{" | Select-Object -Last 1 + $Split2 = $Split1 -split "}" | Select-Object -First 1 + $LinkedGPOs.Add((Get-GPO -Guid $Split2 -ErrorAction SilentlyContinue).DisplayName) + } + } + + if ($OU.ProtectedFromAccidentalDeletion -eq $True) { + + $OUProtected++ + } + + else { + + $OUNotProtected++ + } + + $LinkedGPOs = $LinkedGPOs -join ", " + $obj = [PSCustomObject]@{ + + 'Name' = $OU.Name + 'Linked GPOs' = $LinkedGPOs + 'Modified Date' = $OU.WhenChanged + 'Protected from Deletion' = $OU.ProtectedFromAccidentalDeletion + } + + $OUTable.Add($obj) +} + +if (($OUTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No OUs were found' + } + $OUTable.Add($obj) +} + +#OUs with no GPO Linked +$obj1 = [PSCustomObject]@{ + + 'Name' = "OUs with no GPO's linked" + 'Count' = $OUwithnoLink +} + +$OUGPOTable.Add($obj1) + +$obj2 = [PSCustomObject]@{ + + 'Name' = "OUs with GPO's linked" + 'Count' = $OUwithLinked +} + +$OUGPOTable.Add($obj2) + +#OUs Protected Pie Chart +$obj1 = [PSCustomObject]@{ + + 'Name' = "Protected" + 'Count' = $OUProtected +} + +$OUProtectionTable.Add($obj1) + +$obj2 = [PSCustomObject]@{ + + 'Name' = "Not Protected" + 'Count' = $OUNotProtected +} + +$OUProtectionTable.Add($obj2) + +Write-Host "Done!" -ForegroundColor White + +<########################### + + USERS + +############################> + +Write-Host "Working on Users Report..." -ForegroundColor Green + +$UserEnabled = 0 +$UserDisabled = 0 +$UserPasswordExpires = 0 +$UserPasswordNeverExpires = 0 +$ProtectedUsers = 0 +$NonProtectedUsers = 0 + +$UsersWIthPasswordsExpiringInUnderAWeek = 0 +$UsersNotLoggedInOver30Days = 0 +$AccountsExpiringSoon = 0 + + +#Get users that haven't logged on in X amount of days, var is set at start of script +$userphaventloggedonrecentlytable = New-Object 'System.Collections.Generic.List[System.Object]' +foreach ($User in $AllUsers) { + + $AttVar = $User | Select-Object Enabled, PasswordExpired, PasswordLastSet, PasswordNeverExpires, PasswordNotRequired, Name, SamAccountName, EmailAddress, AccountExpirationDate, @{ Name = 'lastlogon'; Expression = { LastLogonConvert $_.lastlogon } }, DistinguishedName + $maxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Days + + if ((($AttVar.PasswordNeverExpires) -eq $False) -and (($AttVar.Enabled) -ne $false)) { + + #Get Password last set date + $passwordSetDate = ($User | ForEach-Object { $_.PasswordLastSet }) + + if ($null -eq $passwordSetDate) { + + $daystoexpire = "User has never logged on" + } + + else { + + #Check for Fine Grained Passwords + $PasswordPol = (Get-ADUserResultantPasswordPolicy $user) + + if (($PasswordPol) -ne $null) { + + $maxPasswordAge = ($PasswordPol).MaxPasswordAge + } + + $expireson = $passwordsetdate.AddDays($maxPasswordAge) + $today = (Get-Date) + + #Gets the count on how many days until the password expires and stores it in the $daystoexpire var + $daystoexpire = (New-TimeSpan -Start $today -End $Expireson).Days + } + } + + else { + + $daystoexpire = "N/A" + } + + if (($User.Enabled -eq $True) -and ($AttVar.LastLogon -lt ((Get-Date).AddDays(- $Days))) -and ($User.LastLogon -ne $NULL)) { + + $obj = [PSCustomObject]@{ + + 'Name' = $User.Name + 'UserPrincipalName' = $User.UserPrincipalName + 'Enabled' = $AttVar.Enabled + 'Protected from Deletion' = $User.ProtectedFromAccidentalDeletion + 'Last Logon' = $AttVar.lastlogon + 'Password Never Expires' = $AttVar.PasswordNeverExpires + 'Days Until Password Expires' = $daystoexpire + } + + $userphaventloggedonrecentlytable.Add($obj) + } + + #Items for protected vs non protected users + if ($User.ProtectedFromAccidentalDeletion -eq $False) { + + $NonProtectedUsers++ + } + + else { + + $ProtectedUsers++ + } + + #Items for the enabled vs disabled users pie chart + if (($AttVar.PasswordNeverExpires) -ne $false) { + + $UserPasswordNeverExpires++ + } + + else { + + $UserPasswordExpires++ + } + + #Items for password expiration pie chart + if (($AttVar.Enabled) -ne $false) { + + $UserEnabled++ + } + + else { + + $UserDisabled++ + } + + $Name = $User.Name + $UPN = $User.UserPrincipalName + $Enabled = $AttVar.Enabled + $EmailAddress = $AttVar.EmailAddress + $AccountExpiration = $AttVar.AccountExpirationDate + $PasswordExpired = $AttVar.PasswordExpired + $PasswordLastSet = $AttVar.PasswordLastSet + $PasswordNeverExpires = $AttVar.PasswordNeverExpires + $daysUntilPWExpire = $daystoexpire + + $obj = [PSCustomObject]@{ + + 'Name' = $Name + 'UserPrincipalName' = $UPN + 'Enabled' = $Enabled + 'Protected from Deletion' = $User.ProtectedFromAccidentalDeletion + 'Last Logon' = $LastLogon + 'Email Address' = $EmailAddress + 'Account Expiration' = $AccountExpiration + 'Change Password Next Logon' = $PasswordExpired + 'Password Last Set' = $PasswordLastSet + 'Password Never Expires' = $PasswordNeverExpires + 'Days Until Password Expires' = $daystoexpire + } + + $usertable.Add($obj) + + if ($daystoexpire -lt $DaysUntilPWExpireINT) { + + $obj = [PSCustomObject]@{ + + 'Name' = $Name + 'Days Until Password Expires' = $daystoexpire + } + + $PasswordExpireSoonTable.Add($obj) + } +} +if (($userphaventloggedonrecentlytable).Count -eq 0) { + $userphaventloggedonrecentlytable = [PSCustomObject]@{ + + Information = "Information: No Users were found to have not logged on in $Days days or more" + } +} +if (($PasswordExpireSoonTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No users were found to have passwords expiring soon' + } + $PasswordExpireSoonTable.Add($obj) +} + + +if (($usertable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No users were found' + } + $usertable.Add($obj) +} + +#Data for users enabled vs disabled pie graph +$objULic = [PSCustomObject]@{ + + 'Name' = 'Enabled' + 'Count' = $UserEnabled +} + +$EnabledDisabledUsersTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + + 'Name' = 'Disabled' + 'Count' = $UserDisabled +} + +$EnabledDisabledUsersTable.Add($objULic) + +#Data for users password expires pie graph +$objULic = [PSCustomObject]@{ + + 'Name' = 'Password Expires' + 'Count' = $UserPasswordExpires +} + +$PasswordExpirationTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + + 'Name' = 'Password Never Expires' + 'Count' = $UserPasswordNeverExpires +} + +$PasswordExpirationTable.Add($objULic) + +#Data for protected users pie graph +$objULic = [PSCustomObject]@{ + + 'Name' = 'Protected' + 'Count' = $ProtectedUsers +} + +$ProtectedUsersTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + + 'Name' = 'Not Protected' + 'Count' = $NonProtectedUsers +} + +$ProtectedUsersTable.Add($objULic) +if ($null -ne (($userphaventloggedonrecentlytable).Information)) { + $UHLONXD = "0" + +} +Else { + $UHLONXD = $userphaventloggedonrecentlytable.Count + +} +#TOP User table +If ($null -eq (($ExpiringAccountsTable).Information)) { + + $objULic = [PSCustomObject]@{ + 'Total Users' = $AllUsers.Count + "Users with Passwords Expiring in less than $DaysUntilPWExpireINT days" = $PasswordExpireSoonTable.Count + 'Expiring Accounts' = $ExpiringAccountsTable.Count + "Users Haven't Logged on in $Days Days or more" = $UHLONXD + } + + $TOPUserTable.Add($objULic) + + +} +Else { + + $objULic = [PSCustomObject]@{ + 'Total Users' = $AllUsers.Count + "Users with Passwords Expiring in less than $DaysUntilPWExpireINT days" = $PasswordExpireSoonTable.Count + 'Expiring Accounts' = "0" + "Users Haven't Logged on in $Days Days or more" = $UHLONXD + } + $TOPUserTable.Add($objULic) +} + +Write-Host "Done!" -ForegroundColor White +<########################### + + Group Policy + +############################> +Write-Host "Working on Group Policy Report..." -ForegroundColor Green + +$GPOTable = New-Object 'System.Collections.Generic.List[System.Object]' + +foreach ($GPO in $GPOs) { + + $obj = [PSCustomObject]@{ + + 'Name' = $GPO.DisplayName + 'Status' = $GPO.GpoStatus + 'Modified Date' = $GPO.ModificationTime + 'User Version' = $GPO.UserVersion + 'Computer Version' = $GPO.ComputerVersion + } + + $GPOTable.Add($obj) +} +if (($GPOTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No Group Policy Obejects were found' + } + $GPOTable.Add($obj) +} +Write-Host "Done!" -ForegroundColor White +<########################### + + Computers + +############################> +Write-Host "Working on Computers Report..." -ForegroundColor Green + +$Computers = Get-ADComputer -Filter * -Properties * +$ComputersProtected = 0 +$ComputersNotProtected = 0 +$ComputerEnabled = 0 +$ComputerDisabled = 0 +#Only search for versions of windows that exist in the Environment +$WindowsRegex = "(Windows (Server )?(\d+|XP)?( R2)?).*" +$OsVersions = $Computers | Select-Object OperatingSystem -unique | ForEach-Object { + if ($_.OperatingSystem -match $WindowsRegex ) { + return $matches[1] + } + elseif ($_.OperatingSystem -ne $null) { + return $_.OperatingSystem + } +} | Select-Object -unique | Sort-Object + +$OsObj = [PSCustomObject]@{} + +$OsVersions | ForEach-Object { + + $OsObj | Add-Member -Name $_ -Value 0 -Type NoteProperty + +} + +foreach ($Computer in $Computers) { + + if ($Computer.ProtectedFromAccidentalDeletion -eq $True) { + + $ComputersProtected++ + } + + else { + + $ComputersNotProtected++ + } + + if ($Computer.Enabled -eq $True) { + + $ComputerEnabled++ + } + + else { + + $ComputerDisabled++ + } + + $obj = [PSCustomObject]@{ + + 'Name' = $Computer.Name + 'Enabled' = $Computer.Enabled + 'Operating System' = $Computer.OperatingSystem + 'Modified Date' = $Computer.Modified + 'Password Last Set' = $Computer.PasswordLastSet + 'Protect from Deletion' = $Computer.ProtectedFromAccidentalDeletion + } + + $ComputersTable.Add($obj) + + if ($Computer.OperatingSystem -match $WindowsRegex) { + $OsObj."$($matches[1])"++ + } + +} + +if (($ComputersTable).Count -eq 0) { + + $Obj = [PSCustomObject]@{ + + Information = 'Information: No computers were found' + } + $ComputersTable.Add($obj) +} + +#Pie chart breaking down OS for computer obj +$OsObj.PSObject.Properties | ForEach-Object { + $GraphComputerOS.Add([PSCustomObject]@{'Name' = $_.Name; "Count" = $_.Value }) +} + +#Data for TOP Computers data table +$OsObj | Add-Member -Name 'Total Computers' -Value $Computers.Count -Type NoteProperty + +$TOPComputersTable.Add($OsObj) + + +#Data for protected Computers pie graph +$objULic = [PSCustomObject]@{ + + 'Name' = 'Protected' + 'Count' = $ComputerProtected +} + +$ComputerProtectedTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + + 'Name' = 'Not Protected' + 'Count' = $ComputersNotProtected +} + +$ComputerProtectedTable.Add($objULic) + +#Data for enabled/vs Computers pie graph +$objULic = [PSCustomObject]@{ + + 'Name' = 'Enabled' + 'Count' = $ComputerEnabled +} + +$ComputersEnabledTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + + 'Name' = 'Disabled' + 'Count' = $ComputerDisabled +} + +$ComputersEnabledTable.Add($objULic) + +Write-Host "Done!" -ForegroundColor White + +$tabarray = @('Dashboard', 'Groups', 'Organizational Units', 'Users', 'Group Policy', 'Computers') + +Write-Host "Compiling Report..." -ForegroundColor Green + +##--OU Protection PIE CHART--## +#Basic Properties +$PO12 = Get-HTMLPieChartObject +$PO12.Title = "Organizational Units Protected from Deletion" +$PO12.Size.Height = 250 +$PO12.Size.width = 250 +$PO12.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PO12.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PO12.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PO12.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PO12.DataDefinition.DataNameColumnName = 'Name' +$PO12.DataDefinition.DataValueColumnName = 'Count' + +##--Computer OS Breakdown PIE CHART--## +$PieObjectComputerObjOS = Get-HTMLPieChartObject +$PieObjectComputerObjOS.Title = "Computer Operating Systems" + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectComputerObjOS.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectComputerObjOS.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectComputerObjOS.ChartStyle.ColorSchemeName = 'Random' + +##--Computers Protection PIE CHART--## +#Basic Properties +$PieObjectComputersProtected = Get-HTMLPieChartObject +$PieObjectComputersProtected.Title = "Computers Protected from Deletion" +$PieObjectComputersProtected.Size.Height = 250 +$PieObjectComputersProtected.Size.width = 250 +$PieObjectComputersProtected.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectComputersProtected.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectComputersProtected.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectComputersProtected.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectComputersProtected.DataDefinition.DataNameColumnName = 'Name' +$PieObjectComputersProtected.DataDefinition.DataValueColumnName = 'Count' + +##--Computers Enabled PIE CHART--## +#Basic Properties +$PieObjectComputersEnabled = Get-HTMLPieChartObject +$PieObjectComputersEnabled.Title = "Computers Enabled vs Disabled" +$PieObjectComputersEnabled.Size.Height = 250 +$PieObjectComputersEnabled.Size.width = 250 +$PieObjectComputersEnabled.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectComputersEnabled.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectComputersEnabled.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectComputersEnabled.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectComputersEnabled.DataDefinition.DataNameColumnName = 'Name' +$PieObjectComputersEnabled.DataDefinition.DataValueColumnName = 'Count' + +##--USERS Protection PIE CHART--## +#Basic Properties +$PieObjectProtectedUsers = Get-HTMLPieChartObject +$PieObjectProtectedUsers.Title = "Users Protected from Deletion" +$PieObjectProtectedUsers.Size.Height = 250 +$PieObjectProtectedUsers.Size.width = 250 +$PieObjectProtectedUsers.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectProtectedUsers.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectProtectedUsers.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectProtectedUsers.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectProtectedUsers.DataDefinition.DataNameColumnName = 'Name' +$PieObjectProtectedUsers.DataDefinition.DataValueColumnName = 'Count' + +#Basic Properties +$PieObjectOUGPOLinks = Get-HTMLPieChartObject +$PieObjectOUGPOLinks.Title = "OU GPO Links" +$PieObjectOUGPOLinks.Size.Height = 250 +$PieObjectOUGPOLinks.Size.width = 250 +$PieObjectOUGPOLinks.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectOUGPOLinks.ChartStyle.ColorSchemeName = "ColorScheme4" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectOUGPOLinks.ChartStyle.ColorSchemeName = "Generated5" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectOUGPOLinks.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectOUGPOLinks.DataDefinition.DataNameColumnName = 'Name' +$PieObjectOUGPOLinks.DataDefinition.DataValueColumnName = 'Count' + +#Basic Properties +$PieObject4 = Get-HTMLPieChartObject +$PieObject4.Title = "Office 365 Unassigned Licenses" +$PieObject4.Size.Height = 250 +$PieObject4.Size.width = 250 +$PieObject4.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObject4.ChartStyle.ColorSchemeName = "ColorScheme4" + +#There are 8 generated schemes, randomly generated at runtime +$PieObject4.ChartStyle.ColorSchemeName = "Generated4" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObject4.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObject4.DataDefinition.DataNameColumnName = 'Name' +$PieObject4.DataDefinition.DataValueColumnName = 'Unassigned Licenses' + +#Basic Properties +$PieObjectGroupType = Get-HTMLPieChartObject +$PieObjectGroupType.Title = "Group Types" +$PieObjectGroupType.Size.Height = 250 +$PieObjectGroupType.Size.width = 250 +$PieObjectGroupType.ChartStyle.ChartType = 'doughnut' + +#Pie Chart Groups with members vs no members +$PieObjectGroupMembersType = Get-HTMLPieChartObject +$PieObjectGroupMembersType.Title = "Group Membership" +$PieObjectGroupMembersType.Size.Height = 250 +$PieObjectGroupMembersType.Size.width = 250 +$PieObjectGroupMembersType.ChartStyle.ChartType = 'doughnut' +$PieObjectGroupMembersType.ChartStyle.ColorSchemeName = "ColorScheme4" +$PieObjectGroupMembersType.ChartStyle.ColorSchemeName = "Generated8" +$PieObjectGroupMembersType.ChartStyle.ColorSchemeName = 'Random' +$PieObjectGroupMembersType.DataDefinition.DataNameColumnName = 'Name' +$PieObjectGroupMembersType.DataDefinition.DataValueColumnName = 'Count' + +#Basic Properties +$PieObjectGroupType2 = Get-HTMLPieChartObject +$PieObjectGroupType2.Title = "Custom vs Default Groups" +$PieObjectGroupType2.Size.Height = 250 +$PieObjectGroupType2.Size.width = 250 +$PieObjectGroupType2.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectGroupType.ChartStyle.ColorSchemeName = "ColorScheme4" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectGroupType.ChartStyle.ColorSchemeName = "Generated8" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectGroupType.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectGroupType.DataDefinition.DataNameColumnName = 'Name' +$PieObjectGroupType.DataDefinition.DataValueColumnName = 'Count' + +##--Enabled users vs Disabled Users PIE CHART--## +#Basic Properties +$EnabledDisabledUsersPieObject = Get-HTMLPieChartObject +$EnabledDisabledUsersPieObject.Title = "Enabled vs Disabled Users" +$EnabledDisabledUsersPieObject.Size.Height = 250 +$EnabledDisabledUsersPieObject.Size.width = 250 +$EnabledDisabledUsersPieObject.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$EnabledDisabledUsersPieObject.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$EnabledDisabledUsersPieObject.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$EnabledDisabledUsersPieObject.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$EnabledDisabledUsersPieObject.DataDefinition.DataNameColumnName = 'Name' +$EnabledDisabledUsersPieObject.DataDefinition.DataValueColumnName = 'Count' + +##--PasswordNeverExpires PIE CHART--## +#Basic Properties +$PWExpiresUsersTable = Get-HTMLPieChartObject +$PWExpiresUsersTable.Title = "Password Expiration" +$PWExpiresUsersTable.Size.Height = 250 +$PWExpiresUsersTable.Size.Width = 250 +$PWExpiresUsersTable.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PWExpiresUsersTable.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PWExpiresUsersTable.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PWExpiresUsersTable.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PWExpiresUsersTable.DataDefinition.DataNameColumnName = 'Name' +$PWExpiresUsersTable.DataDefinition.DataValueColumnName = 'Count' + +##--Group Protection PIE CHART--## +#Basic Properties +$PieObjectGroupProtection = Get-HTMLPieChartObject +$PieObjectGroupProtection.Title = "Groups Protected from Deletion" +$PieObjectGroupProtection.Size.Height = 250 +$PieObjectGroupProtection.Size.width = 250 +$PieObjectGroupProtection.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectGroupProtection.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectGroupProtection.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectGroupProtection.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectGroupProtection.DataDefinition.DataNameColumnName = 'Name' +$PieObjectGroupProtection.DataDefinition.DataValueColumnName = 'Count' + +#Dashboard Report +$FinalReport = New-Object 'System.Collections.Generic.List[System.Object]' +$FinalReport.Add($(Get-HTMLOpenPage -TitleText $ReportTitle -LeftLogoString $CompanyLogo -RightLogoString $RightLogo)) +$FinalReport.Add($(Get-HTMLTabHeader -TabNames $tabarray)) +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[0] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)))) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Company Information")) +$FinalReport.Add($(Get-HTMLContentTable $CompanyInfoTable)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Groups")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText 'Domain Administrators')) +$FinalReport.Add($(Get-HTMLContentDataTable $DomainAdminTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText 'Enterprise Administrators')) +$FinalReport.Add($(Get-HTMLContentDataTable $EnterpriseAdminTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Objects in Default OUs")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText 'Computers')) +$FinalReport.Add($(Get-HTMLContentDataTable $DefaultComputersinDefaultOUTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText 'Users')) +$FinalReport.Add($(Get-HTMLContentDataTable $DefaultUsersinDefaultOUTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "AD Objects Modified in Last $ADModNumber Days")) +$FinalReport.Add($(Get-HTMLContentDataTable $ADObjectTable)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Expiring Items")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Users with Passwords Expiring in less than $DaysUntilPWExpireINT days")) +$FinalReport.Add($(Get-HTMLContentDataTable $PasswordExpireSoonTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText 'Accounts Expiring Soon')) +$FinalReport.Add($(Get-HTMLContentDataTable $ExpiringAccountsTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Accounts")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Users Haven't Logged on in $Days Days or more")) +$FinalReport.Add($(Get-HTMLContentDataTable $userphaventloggedonrecentlytable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Accounts Created in $UserCreatedDays Days or Less")) +$FinalReport.Add($(Get-HTMLContentDataTable $NewCreatedUsersTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Security Logs")) +$FinalReport.Add($(Get-HTMLContentDataTable $securityeventtable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "UPN Suffixes")) +$FinalReport.Add($(Get-HTMLContentTable $DomainTable)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#Groups Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[1] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)))) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Groups Overivew")) +$FinalReport.Add($(Get-HTMLContentTable $TOPGroupsTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Active Directory Groups")) +$FinalReport.Add($(Get-HTMLContentDataTable $Table -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumn1of2)) + +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText 'Domain Administrators')) +$FinalReport.Add($(Get-HTMLContentDataTable $DomainAdminTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText 'Enterprise Administrators')) +$FinalReport.Add($(Get-HTMLContentDataTable $EnterpriseAdminTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Active Directory Groups Chart")) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 1 -ColumnCount 4)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectGroupType -DataSet $GroupTypetable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 2 -ColumnCount 4)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectGroupType2 -DataSet $DefaultGrouptable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 3 -ColumnCount 4)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectGroupMembersType -DataSet $GroupMembershipTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 4 -ColumnCount 4)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectGroupProtection -DataSet $GroupProtectionTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#Organizational Unit Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[2] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)))) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Organizational Units")) +$FinalReport.Add($(Get-HTMLContentDataTable $OUTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Organizational Units Charts")) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 1 -ColumnCount 2)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectOUGPOLinks -DataSet $OUGPOTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 2 -ColumnCount 2)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PO12 -DataSet $OUProtectionTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentclose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#Users Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[3] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)))) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Users Overivew")) +$FinalReport.Add($(Get-HTMLContentTable $TOPUserTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Active Directory Users")) +$FinalReport.Add($(Get-HTMLContentDataTable $UserTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Expiring Items")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Users with Passwords Expiring in less than $DaysUntilPWExpireINT days")) +$FinalReport.Add($(Get-HTMLContentDataTable $PasswordExpireSoonTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText 'Accounts Expiring Soon')) +$FinalReport.Add($(Get-HTMLContentDataTable $ExpiringAccountsTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Accounts")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Users Haven't Logged on in $Days Days or more")) +$FinalReport.Add($(Get-HTMLContentDataTable $userphaventloggedonrecentlytable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) + +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Accounts Created in $UserCreatedDays Days or Less")) +$FinalReport.Add($(Get-HTMLContentDataTable $NewCreatedUsersTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Users Charts")) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 1 -ColumnCount 3)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $EnabledDisabledUsersPieObject -DataSet $EnabledDisabledUsersTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 2 -ColumnCount 3)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PWExpiresUsersTable -DataSet $PasswordExpirationTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 3 -ColumnCount 3)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectProtectedUsers -DataSet $ProtectedUsersTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#GPO Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[4] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)))) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Group Policies")) +$FinalReport.Add($(Get-HTMLContentDataTable $GPOTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#Computers Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[5] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)))) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Computers Overivew")) +$FinalReport.Add($(Get-HTMLContentTable $TOPComputersTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Computers")) +$FinalReport.Add($(Get-HTMLContentDataTable $ComputersTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Computers Charts")) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 1 -ColumnCount 2)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectComputersProtected -DataSet $ComputerProtectedTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 2 -ColumnCount 2)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectComputersEnabled -DataSet $ComputersEnabledTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentclose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Computers Operating System Breakdown")) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectComputerObjOS -DataSet $GraphComputerOS)) +$FinalReport.Add($(Get-HTMLContentclose)) + +$FinalReport.Add($(Get-HTMLTabContentClose)) +$FinalReport.Add($(Get-HTMLClosePage)) + +$Day = (Get-Date).Day +$Month = (Get-Date).Month +$Year = (Get-Date).Year +$ReportName = ("$Day - $Month - $Year - AD Report") + +Save-HTMLReport -ReportContent $FinalReport -ShowReport -ReportName $ReportName -ReportPath $ReportSavePath diff --git a/Active Directory/Audit-v3.ps1 b/Active Directory/Audit-v3.ps1 new file mode 100644 index 0000000..0408449 --- /dev/null +++ b/Active Directory/Audit-v3.ps1 @@ -0,0 +1,1372 @@ +<# + .NOTES + Author : phillips321.co.uk + Creation Date: 16/08/2018 + Script Name : ADAudit.ps1 + .SYNOPSIS + PowerShell Script to perform a quick AD audit + .DESCRIPTION + o Compatibility : + * PowerShell v2.0 (PowerShell 5.0 needed if you intend to use DSInternals PowerShell module) + * Tested on Windows Server 2008R2/2012/2012R2/2016/2019/2022 + * All languages (you may need to adjust $AdministratorTranslation variable) + o Changelog : + [x] Version 5.4 - 16/08/2022 + * Added nessus output tags for LAPS + * Added nessus output for GPO issues + [ ] Version 5.3 - 07/03/2022 + * Added SamAccountName to Get-PrivilegedGroupMembership output + * Swapped some write-host to write-both so it's captured in the consolelog.txt + [ ] Version 5.2 - 28/01/2022 + * Enhanced Get-LAPSStatus + * Added news checks (AD services + Windows Update + NTP source + Computer/User container + RODC + Locked accounts + Password Quality + SYSVOL & NETLOGON share presence) + * Added support for WS 2022 + * Fix OS version difference check for WS 2008 + * Fix Write-Progress not disappearing when done + [ ] Version 5.1 + * Added check for newly created users and groups + * Added check for replication mechanism + * Added check for Recycle Bin + * Fix ProtectedUsers for WS 2008 + [ ] Version 5.0 + * Make the script compatible with other language than English + * Fix the cpassword search in GPO + * Fix Get-ACL bad syntax error + * Fix Get-DNSZoneInsecure for WS 2008 + [ ] Version 4.9 + * Bug fix in checking password comlexity + [ ] Version 4.8 + * Added checks for vista, win7 and 2008 old operating systems + * Added insecure DNS zone checks + [ ] Version 4.7 + * Added powershel-v2 suport and fixed array issue + [ ] Version 4.6 + * Fixed potential division by zero + [ ] Version 4.5 + * PR to resolve count issue when count = 1 + [ ] Version 4.4 + * Reinstated nessus fix and put output in a list for findings + * Changed Get-AdminSDHolders with Get-PrivilegedGroupAccounts + [ ] Version 4.3 + * Temp fix with nessus output + [ ] Version 4.2 + * Bug fix on cpassword count + [ ] Version 4.1 + * Loads of fixes + * Works with Powershellv2 again now + * Filtered out disabled accounts + * Improved domain trusts checking + * OUperms improvements and filtering + * Check for w2k + * Fixed typos/spelling and various other fixes + [ ] Version 4.0 + * Added XML output for import to CheckSecCanopy + [ ] Version 3.5 + * Added KB more references for internal use + [ ] Version 3.4 + * Added KB references for internal use + [ ] Version 3.3 + * Added a greater level of accuracy to Inactive Accounts (thanks exceedio) + [ ] Version 3.2 + * Added search for DCs not owned by Domain Admins group + [ ] Version 3.1 + * Added progress to functions that have count + * Added check for transitive trusts + [ ] Version 3.0 + * Added ability to choose functions before runtime + * Cleaned up get-ouperms output + [ ] Version 2.5 + * Bug fixes to version check for 2012R2 or greater specific checks + [ ] Version 2.4 + * Forked project + * Added Get-OUPerms, Get-LAPSStatus, Get-AdminSDHolders, Get-ProtectedUsers and Get-AuthenticationPoliciesAndSilos functions + * Also added FineGrainedPasswordPolicies to Get-PasswordPolicy and changed order slightly + [ ] Version 2.3 + * Added more useful user output to .txt files (Cheers DK) + [ ] Version 2.2 + * Minor typo fix + [ ] Version 2.1 + * Added check for null sessions + [ ] Version 2.0 + * Multiple Additions and knocked off lots of the todo list + [ ] Version 1.9 + * Fixed bug, that used Administrator account name instead of UID 500 and a bug with inactive accounts timespan + [ ] Version 1.8 + * Added check for last time 'Administrator' account logged on + [ ] Version 1.6 + * Added Get-FunctionalLevel and krbtgt password last changed check + [ ] Version 1.5 + * Added Get-HostDetails to output simple info like username, hostname, etc... + [ ] Version 1.4 + * Added Get-WinVersion version to assist with some checks (SMBv1 currently) + [ ] Version 1.3 + * Added XML output for GPO (for offline processing using grouper https://github.com/l0ss/Grouper/blob/master/grouper.psm1) + [ ] Version 1.2 + * Added check for modules + [ ] Version 1.1 + * Fixed bug where SYSVOL research returns empty + [ ] Version 1.0 + * First release + .EXAMPLE + PS> ADAudit.ps1 -installdeps -all + Install external features and launch all checks + .EXAMPLE + PS> ADAudit.ps1 -all + Launch all checks (but do not install external modules) + .EXAMPLE + PS> ADAudit.ps1 -installdeps + Installs optionnal features (DSInternals) + .EXAMPLE + PS> ADAudit.ps1 -hostdetails -domainaudit + Retrieves hostname and other useful audit info + Retrieves information about the AD such as functional level +#> +[CmdletBinding()] +Param ( + [switch]$installdeps = $false, + [switch]$hostdetails = $false, + [switch]$domainaudit = $false, + [switch]$trusts = $false, + [switch]$accounts = $false, + [switch]$passwordpolicy = $false, + [switch]$ntds = $false, + [switch]$oldboxes = $false, + [switch]$gpo = $false, + [switch]$ouperms = $false, + [switch]$laps = $false, + [switch]$authpolsilos = $false, + [switch]$insecurednszone = $false, + [switch]$recentchanges = $false, + [switch]$all = $false +) +$versionnum = "v5.4" +$AdministratorTranslation = @("Administrator","Administrateur","Administrador")#If missing put the default Administrator name for your own language here + +Function Get-Variables(){#Retrieve group names and OS version + $script:OSVersion = (Get-Itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName + $script:Administrators = (Get-ADGroup -Identity S-1-5-32-544).SamAccountName + $script:Users = (Get-ADGroup -Identity S-1-5-32-545).SamAccountName + $script:DomainAdminsSID = ((Get-ADDomain -Current LoggedOnUser).domainsid.value)+"-512" + $script:DomainUsersSID = ((Get-ADDomain -Current LoggedOnUser).domainsid.value)+"-513" + $script:DomainControllersSID = ((Get-ADDomain -Current LoggedOnUser).domainsid.value)+"-516" + $script:SchemaAdminsSID = ((Get-ADDomain -Current LoggedOnUser).domainsid.value)+"-518" + $script:EnterpriseAdminsSID = ((Get-ADDomain -Current LoggedOnUser).domainsid.value)+"-519" + $script:EveryOneSID = New-Object System.Security.Principal.SecurityIdentifier "S-1-1-0" + $script:EntrepriseDomainControllersSID = New-Object System.Security.Principal.SecurityIdentifier "S-1-5-9" + $script:AuthenticatedUsersSID = New-Object System.Security.Principal.SecurityIdentifier "S-1-5-11" + $script:SystemSID = New-Object System.Security.Principal.SecurityIdentifier "S-1-5-18" + $script:LocalServiceSID = New-Object System.Security.Principal.SecurityIdentifier "S-1-5-19" + $script:DomainAdmins = (Get-ADGroup -Identity $DomainAdminsSID).SamAccountName + $script:DomainUsers = (Get-ADGroup -Identity $DomainUsersSID).SamAccountName + $script:DomainControllers = (Get-ADGroup -Identity $DomainControllersSID).SamAccountName + $script:SchemaAdmins = (Get-ADGroup -Identity $SchemaAdminsSID).SamAccountName + $script:EnterpriseAdmins = (Get-ADGroup -Identity $EnterpriseAdminsSID).SamAccountName + $script:EveryOne = $EveryOneSID.Translate([System.Security.Principal.NTAccount]).Value + $script:EntrepriseDomainControllers = $EntrepriseDomainControllersSID.Translate([System.Security.Principal.NTAccount]).Value + $script:AuthenticatedUsers = $AuthenticatedUsersSID.Translate([System.Security.Principal.NTAccount]).Value + $script:System = $SystemSID.Translate([System.Security.Principal.NTAccount]).Value + $script:LocalService = $LocalServiceSID.Translate([System.Security.Principal.NTAccount]).Value + Write-Both " [+] Administrators : $Administrators" + Write-Both " [+] Users : $Users" + Write-Both " [+] Domain Admins : $DomainAdmins" + Write-Both " [+] Domain Users : $DomainUsers" + Write-Both " [+] Domain Controllers : $DomainControllers" + Write-Both " [+] Schema Admins : $SchemaAdmins" + Write-Both " [+] Enterprise Admins : $EnterpriseAdmins" + Write-Both " [+] Every One : $EveryOne" + Write-Both " [+] Entreprise Domain Controllers: $EntrepriseDomainControllers" + Write-Both " [+] Authenticated Users : $AuthenticatedUsers" + Write-Both " [+] System : $System" + Write-Both " [+] Local Service : $LocalService" +} +Function Write-Both(){#Writes to console screen and output file + Write-Host "$args" + Add-Content -Path "$outputdir\consolelog.txt" -Value "$args" +} +Function Write-Nessus-Header(){#Creates nessus XML file header + Add-Content -Path "$outputdir\adaudit.nessus" -Value "" + Add-Content -Path "$outputdir\adaudit.nessus" -Value "" + Add-Content -Path "$outputdir\adaudit.nessus" -Value "" +} +Function Write-Nessus-Finding( [string]$pluginname, [string]$pluginid, [string]$pluginexample){ + Add-Content -Path "$outputdir\adaudit.nessus" -Value "" + Add-Content -Path "$outputdir\adaudit.nessus" -Value "There's an issue with $pluginname" + Add-Content -Path "$outputdir\adaudit.nessus" -Value "remoteLow" + Add-Content -Path "$outputdir\adaudit.nessus" -Value "CCS Recommends fixing the issues with $pluginname on the host" + Add-Content -Path "$outputdir\adaudit.nessus" -Value "There's an issue with the $pluginname settings on the host" + Add-Content -Path "$outputdir\adaudit.nessus" -Value "$pluginexample" +} +Function Write-Nessus-Footer(){ + Add-Content -Path "$outputdir\adaudit.nessus" -Value "" +} +Function Get-DNSZoneInsecure{#Check DNS zones allowing insecure updates + if($OSVersion -notlike "Windows Server 2008*"){ + $count = 0 + $progresscount = 0 + $insecurezones = Get-DnsServerZone | Where-Object {$_.DynamicUpdate -like '*nonsecure*'} + $totalcount = ($insecurezones | Measure-Object | Select-Object Count).count + if($totalcount -gt 0){ + foreach($insecurezone in $insecurezones ){ + Add-Content -Path "$outputdir\insecure_dns_zones.txt" -Value "The DNS Zone $($insecurezone.ZoneName) allows insecure updates ($($insecurezone.DynamicUpdate))" + } + Write-Both " [!] There were $totalcount DNS zones configured to allow insecure updates (KB842)" + Write-Nessus-Finding "InsecureDNSZone" "KB842" ([System.IO.File]::ReadAllText("$outputdir\insecure_dns_zones.txt")) + } + }else{ + Write-Both " [-] Not Windows 2012 or above, skipping Get-DNSZoneInsecure check." + } +} +Function Get-OUPerms{#Check for non-standard perms for authenticated users, domain users, users and everyone groups + $count = 0 + $progresscount = 0 + $objects = (Get-ADObject -Filter *) + $totalcount = ($objects | Measure-Object | Select-Object Count).count + foreach($object in $objects){ + if($totalcount -eq 0){ break } + $progresscount++ + Write-Progress -Activity "Searching for non standard permissions for authenticated users..." -Status "Currently identifed $count" -PercentComplete ($progresscount / $totalcount*100) + if($OSVersion -like "Windows Server 2019*" -or $OSVersion -like "Windows Server 2022*"){ + $output = (Get-Acl "Microsoft.ActiveDirectory.Management.dll\ActiveDirectory:://RootDSE/$object").Access | Where-Object {($_.IdentityReference -eq "$AuthenticatedUsers") -or ($_.IdentityReference -eq "$EveryOne") -or ($_.IdentityReference -like "*\$DomainUsers") -or ($_.IdentityReference -eq "BUILTIN\$Users")} | Where-Object {($_.ActiveDirectoryRights -ne 'GenericRead') -and ($_.ActiveDirectoryRights -ne 'GenericExecute') -and ($_.ActiveDirectoryRights -ne 'ExtendedRight') -and ($_.ActiveDirectoryRights -ne 'ReadControl') -and ($_.ActiveDirectoryRights -ne 'ReadProperty') -and ($_.ActiveDirectoryRights -ne 'ListObject') -and ($_.ActiveDirectoryRights -ne 'ListChildren') -and ($_.ActiveDirectoryRights -ne 'ListChildren, ReadProperty, ListObject') -and ($_.ActiveDirectoryRights -ne 'ReadProperty, GenericExecute') -and ($_.AccessControlType -ne 'Deny')} + }else{ + $output = (Get-Acl AD:$object).Access | Where-Object {($_.IdentityReference -eq "$AuthenticatedUsers") -or ($_.IdentityReference -eq "$EveryOne") -or ($_.IdentityReference -like "*\$DomainUsers") -or ($_.IdentityReference -eq "BUILTIN\$Users")} | Where-Object {($_.ActiveDirectoryRights -ne 'GenericRead') -and ($_.ActiveDirectoryRights -ne 'GenericExecute') -and ($_.ActiveDirectoryRights -ne 'ExtendedRight') -and ($_.ActiveDirectoryRights -ne 'ReadControl') -and ($_.ActiveDirectoryRights -ne 'ReadProperty') -and ($_.ActiveDirectoryRights -ne 'ListObject') -and ($_.ActiveDirectoryRights -ne 'ListChildren') -and ($_.ActiveDirectoryRights -ne 'ListChildren, ReadProperty, ListObject') -and ($_.ActiveDirectoryRights -ne 'ReadProperty, GenericExecute') -and ($_.AccessControlType -ne 'Deny')} + } + if($output -ne $null){ + $count++ + Add-Content -Path "$outputdir\ou_permissions.txt" -Value "OU: $object" + Add-Content -Path "$outputdir\ou_permissions.txt" -Value "[!] Rights: $($output.IdentityReference) $($output.ActiveDirectoryRights) $($output.AccessControlType)" + } + } + Write-Progress -Activity "Searching for non standard permissions for authenticated users..." -Status "Ready" -Completed + if($count -gt 0){ + Write-Both " [!] Issue identified, see $outputdir\ou_permissions.txt" + Write-Nessus-Finding "OUPermissions" "KB551" ([System.IO.File]::ReadAllText("$outputdir\ou_permissions.txt")) + } +} +Function Get-LAPSStatus{#Check for presence of LAPS in domain + try{ + Get-ADObject "CN=ms-Mcs-AdmPwd,CN=Schema,CN=Configuration,$((Get-ADDomain).DistinguishedName)" -ErrorAction Stop | Out-Null + Write-Both " [+] LAPS Installed in domain" + } + catch{ + Write-Both " [!] LAPS Not Installed in domain (KB258)" + Write-Nessus-Finding "LAPSMissing" "KB258" "LAPS Not Installed in domain" + } + if(Get-Module -ListAvailable -Name AdmPwd.PS){ + Import-Module AdmPwd.PS + $count = 0 + $missingComputers = (Get-ADComputer -Filter {ms-Mcs-AdmPwd -notlike "*"}).Name + $totalcount = ($missingComputers | Measure-Object | Select-Object Count).count + if($totalcount -gt 0){ + $missingComputers | Add-Content -Path $outputdir\laps_missing-computers.txt + Write-Both " [!] Some computers/servers don't have LAPS password set, see $outputdir\laps_missing-computers.txt" + Write-Nessus-Finding "LAPSMissingorExpired" "KB258" ([System.IO.File]::ReadAllText("$outputdir\laps_missing-computers.txt")) + } + $count = 0 + $computersList = (Get-ADComputer -Filter {ms-Mcs-AdmPwdExpirationTime -like "*"} -Properties ms-Mcs-AdmPwdExpirationTime | select Name,ms-Mcs-AdmPwdExpirationTime) + foreach($computer in $computersList ){ + $expiration = [datetime]::FromFileTime($computer.'ms-Mcs-AdmPwdExpirationTime') + $today = Get-Date + if($expiration -lt $today){ + $count++ + "$($computer.Name) password is expired since $expiration" | Add-Content -Path $outputdir\laps_expired-passwords.txt + } + } + if($count -gt 0){ + Write-Both " [!] Some computers/servers have LAPS password expired, see $outputdir\laps_expired-passwords.txt" + Write-Nessus-Finding "LAPSMissingorExpired" "KB258" ([System.IO.File]::ReadAllText("$outputdir\laps_expired-passwords.txt")) + } + Get-ADOrganizationalUnit -Filter * | Find-AdmPwdExtendedRights -PipelineVariable OU | foreach{ + $_.ExtendedRightHolders | foreach{ + if($_ -ne $System){ + "$_ can read password attribute of $($Ou.ObjectDN)" | Add-Content -Path $outputdir\laps_read-extendedrights.txt + } + } + } + Write-Both " [!] LAPS extended rights exported, see $outputdir\laps_read-extendedrights.txt" + Write-Nessus-Finding "LAPSMissingorExpired" "KB258" ([System.IO.File]::ReadAllText("$outputdir\laps_read-extendedrights.txt")) + + }else{ + Write-Both " [!] LAPS PowerShell module is not installed, can't run LAPS checks on this DC" + } +} +Function Get-PrivilegedGroupAccounts{#Lists users in Admininstrators, DA and EA groups + [array]$privilegedusers = @() + $privilegedusers += Get-ADGroupMember $Administrators -Recursive + $privilegedusers += Get-ADGroupMember $DomainAdmins -Recursive + $privilegedusers += Get-ADGroupMember $EnterpriseAdmins -Recursive + $privusersunique = $privilegedusers | Sort-Object -Unique + $count = 0 + $totalcount = ($privilegedusers | Measure-Object | Select-Object Count).count + foreach($account in $privusersunique){ + if($totalcount -eq 0){ break } + Write-Progress -Activity "Searching for users who are in privileged groups..." -Status "Currently identifed $count" -PercentComplete ($count / $totalcount*100) + Add-Content -Path "$outputdir\accounts_userPrivileged.txt" -Value "$($account.SamAccountName) ($($account.Name))" + $count++ + } + Write-Progress -Activity "Searching for users who are in privileged groups..." -Status "Ready" -Completed + if($count -gt 0){ + Write-Both " [!] There are $count accounts in privileged groups, see accounts_userPrivileged.txt (KB426)" + Write-Nessus-Finding "AdminSDHolders" "KB426" ([System.IO.File]::ReadAllText("$outputdir\accounts_userPrivileged.txt")) + } +} +Function Get-ProtectedUsers{#Lists users in "Protected Users" group (2012R2 and above) + $DomainLevel = (Get-ADDomain).domainMode + if($DomainLevel -eq "Windows2012Domain" -or $DomainLevel -eq "Windows2012R2Domain" -or $DomainLevel -eq "Windows2016Domain"){#Checking for 2012 or above domain functional level + $ProtectedUsersSID = ((Get-ADDomain -Current LoggedOnUser).domainsid.value)+"-525" + $ProtectedUsers = (Get-ADGroup -Identity $ProtectedUsersSID).SamAccountName + $count = 0 + $protectedaccounts = (Get-ADGroup $ProtectedUsers -Properties members).Members + $totalcount = ($protectedaccounts | Measure-Object | Select-Object Count).count + foreach($members in $protectedaccounts){ + if($totalcount -eq 0){ break } + Write-Progress -Activity "Searching for protected users..." -Status "Currently identifed $count" -PercentComplete ($count / $totalcount*100) + $account = Get-ADObject $members -Properties SamAccountName + Add-Content -Path "$outputdir\accounts_protectedusers.txt" -Value "$($account.SamAccountName) ($($account.Name))" + $count++ + } + Write-Progress -Activity "Searching for protected users..." -Status "Ready" -Completed + if($count -gt 0){ + Write-Both " [!] There are $count accounts in the 'Protected Users' group, see accounts_protectedusers.txt" + Write-Nessus-Finding "ProtectedUsers" "KB549" ([System.IO.File]::ReadAllText("$outputdir\accounts_protectedusers.txt")) + } + } + else {Write-Both " [-] Not Windows 2012 Domain Functional level or above, skipping Get-ProtectedUsers check."} +} +Function Get-AuthenticationPoliciesAndSilos {#Lists any authentication policies and silos (2012R2 and above) + if([single](Get-WinVersion) -ge [single]6.3){#NT6.2 or greater detected so running this script + $count = 0 + foreach($policy in Get-ADAuthenticationPolicy -Filter *){ + Write-Both " [!] Found $policy Authentication Policy" + $count++ + } + if($count -lt 1){ + Write-Both " [!] There were no AD Authentication Policies found in the domain" + } + $count = 0 + foreach($policysilo in Get-ADAuthenticationPolicySilo -Filter *){ + Write-Both " [!] Found $policysilo Authentication Policy Silo" + $count++ + } + if($count -lt 1){ + Write-Both " [!] There were no AD Authentication Policy Silos found in the domain" + } + } +} +Function Get-MachineAccountQuota{#Get number of machines a user can add to a domain + $MachineAccountQuota = (Get-ADDomain | select -ExpandProperty DistinguishedName | Get-ADObject -Property 'ms-DS-MachineAccountQuota' | select -ExpandProperty ms-DS-MachineAccountQuota) + if($MachineAccountQuota -gt 0){ + Write-Both " [!] Domain users can add $MachineAccountQuota devices to the domain! (KB251)" + Write-Nessus-Finding "DomainAccountQuota" "KB251" "Domain users can add $MachineAccountQuota devices to the domain" + } +} +Function Get-PasswordPolicy{ + Write-Both " [+] Checking default password policy" + if(!(Get-ADDefaultDomainPasswordPolicy).ComplexityEnabled){ + Write-Both " [!] Password Complexity not enabled (KB262)" + Write-Nessus-Finding "PasswordComplexity" "KB262" "Password Complexity not enabled" + } + if((Get-ADDefaultDomainPasswordPolicy).LockoutThreshold -lt 5){ + Write-Both " [!] Lockout threshold is less than 5, currently set to $((Get-ADDefaultDomainPasswordPolicy).LockoutThreshold) (KB263)" + Write-Nessus-Finding "LockoutThreshold" "KB263" "Lockout threshold is less than 5, currently set to $((Get-ADDefaultDomainPasswordPolicy).LockoutThreshold)" + } + if((Get-ADDefaultDomainPasswordPolicy).MinPasswordLength -lt 14){ + Write-Both " [!] Minimum password length is less than 14, currently set to $((Get-ADDefaultDomainPasswordPolicy).MinPasswordLength) (KB262)" + Write-Nessus-Finding "PasswordLength" "KB262" "Minimum password length is less than 14, currently set to $((Get-ADDefaultDomainPasswordPolicy).MinPasswordLength)" + } + if((Get-ADDefaultDomainPasswordPolicy).ReversibleEncryptionEnabled){ + Write-Both " [!] Reversible encryption is enabled" + } + if((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge -eq "00:00:00"){ + Write-Both " [!] Passwords do not expire (KB254)" + Write-Nessus-Finding "PasswordsDoNotExpire" "KB254" "Passwords do not expire" + } + if((Get-ADDefaultDomainPasswordPolicy).PasswordHistoryCount -lt 12){ + Write-Both " [!] Passwords history is less than 12, currently set to $((Get-ADDefaultDomainPasswordPolicy).PasswordHistoryCount) (KB262)" + Write-Nessus-Finding "PasswordHistory" "KB262" "Passwords history is less than 12, currently set to $((Get-ADDefaultDomainPasswordPolicy).PasswordHistoryCount)" + } + if((Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa).NoLmHash -eq 0){ + Write-Both " [!] LM Hashes are stored! (KB510)" + Write-Nessus-Finding "LMHashesAreStored" "KB510" "LM Hashes are stored" + } + Write-Both " [-] Finished checking default password policy" + Write-Both " [+] Checking fine-grained password policies if they exist" + foreach($finegrainedpolicy in Get-ADFineGrainedPasswordPolicy -Filter *){ + $finegrainedpolicyappliesto=$finegrainedpolicy.AppliesTo + Write-Both " [!] Policy: $finegrainedpolicy" + Write-Both " [!] AppliesTo: $($finegrainedpolicyappliesto)" + if(!($finegrainedpolicy).PasswordComplexity){ + Write-Both " [!] Password Complexity not enabled (KB262)" + Write-Nessus-Finding "PasswordComplexity" "KB262" "Password Complexity not enabled for $finegrainedpolicy" + } + if(($finegrainedpolicy).LockoutThreshold -lt 5){ + Write-Both " [!] Lockout threshold is less than 5, currently set to $($finegrainedpolicy).LockoutThreshold) (KB263)" + Write-Nessus-Finding "LockoutThreshold" "KB263" " Lockout threshold for $finegrainedpolicy is less than 5, currently set to $(($finegrainedpolicy).LockoutThreshold)" + } + if(($finegrainedpolicy).MinPasswordLength -lt 14){ + Write-Both " [!] Minimum password length is less than 14, currently set to $(($finegrainedpolicy).MinPasswordLength) (KB262)" + Write-Nessus-Finding "PasswordLength" "KB262" "Minimum password length for $finegrainedpolicy is less than 14, currently set to $(($finegrainedpolicy).MinPasswordLength)" + } + if(($finegrainedpolicy).ReversibleEncryptionEnabled){ + Write-Both " [!] Reversible encryption is enabled" + } + if(($finegrainedpolicy).MaxPasswordAge -eq "00:00:00"){ + Write-Both " [!] Passwords do not expire (KB254)" + } + if(($finegrainedpolicy).PasswordHistoryCount -lt 12){ + Write-Both " [!] Passwords history is less than 12, currently set to $(($finegrainedpolicy).PasswordHistoryCount) (KB262)" + Write-Nessus-Finding "PasswordHistory" "KB262" "Passwords history for $finegrainedpolicy is less than 12, currently set to $(($finegrainedpolicy).PasswordHistoryCount)" + } + } + Write-Both " [-] Finished checking fine-grained password policy" +} +Function Get-NULLSessions{ + if((Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa).RestrictAnonymous -eq 0){ + Write-Both " [!] RestrictAnonymous is set to 0! (KB81)" + Write-Nessus-Finding "NullSessions" "KB81" " RestrictAnonymous is set to 0" + } + if((Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa).RestrictAnonymousSam -eq 0){ + Write-Both " [!] RestrictAnonymousSam is set to 0! (KB81)" + Write-Nessus-Finding "NullSessions" "KB81" " RestrictAnonymous is set to 0" + } + if((Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa).everyoneincludesanonymous -eq 1){ + Write-Both " [!] EveryoneIncludesAnonymous is set to 1! (KB81)" + Write-Nessus-Finding "NullSessions" "KB81" "EveryoneIncludesAnonymous is set to 1" + } +} +Function Get-DomainTrusts{#Lists domain trusts if they are bad + foreach($trust in (Get-ADObject -Filter {objectClass -eq "trustedDomain"} -Properties TrustPartner,TrustDirection,trustType,trustAttributes)){ + if($trust.TrustDirection -eq 2){ + if($trust.TrustAttributes -eq 1 -or $trust.TrustAttributes -eq 4){#1 means trust is non-transitive, 4 is external so we check for anything but that + Write-Both " [!] The domain $($trust.Name) is trusted by $env:UserDomain! (KB250)" + Write-Nessus-Finding "DomainTrusts" "KB250" "The domain $($trust.Name) is trusted by $env:UserDomain." + }else{ + Write-Both " [!] The domain $($trust.Name) is trusted by $env:UserDomain and it is Transitive! (KB250)" + Write-Nessus-Finding "DomainTrusts" "KB250" "The domain $($trust.Name) is trusted by $env:UserDomain and it is Transitive!" + } + } + if($trust.TrustDirection -eq 3){ + if($trust.TrustAttributes -eq 1 -or $trust.TrustAttributes -eq 4){#1 means trust is non-transitive, 4 is external so we check for anything but that + Write-Both " [!] The domain $($trust.Name) is trusted by $env:UserDomain! (KB250)" + Write-Nessus-Finding "DomainTrusts" "KB250" "The domain $($trust.Name) is trusted by $env:UserDomain." + }else{ + Write-Both " [!] The domain $($trust.Name) is trusted by $env:UserDomain and it is Transitive! (KB250)" + Write-Nessus-Finding "DomainTrusts" "KB250" "The domain $($trust.Name) is trusted by $env:UserDomain and it is Transitive!" + } + } + } +} +Function Get-WinVersion{ + $WinVersion = [single]([string][environment]::OSVersion.Version.Major + "." + [string][environment]::OSVersion.Version.Minor) + return [single]$WinVersion +} +Function Get-SMB1Support{#Check if server supports SMBv1 + if([single](Get-WinVersion) -le [single]6.1){#NT6.1 or less detected so checking reg key + if(!(Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters).SMB1 -eq 0){ + Write-Both " [!] SMBv1 is not disabled (KB290)" + Write-Nessus-Finding "SMBv1Support" "KB290" "SMBv1 is enabled" + } + }elseif([single](Get-WinVersion) -ge [single]6.2){#NT6.2 or greater detected so using powershell function + if((Get-SmbServerConfiguration).EnableSMB1Protocol){ + Write-Both " [!] SMBv1 is enabled! (KB290)" + Write-Nessus-Finding "SMBv1Support" "KB290" "SMBv1 is enabled" + } + } +} +Function Get-UserPasswordNotChangedRecently{#Reports users that haven't changed passwords in more than 90 days + $count = 0 + $DaysAgo = (Get-Date).AddDays(-90) + $accountsoldpasswords = Get-ADUser -Filter {PwdLastSet -lt $DaysAgo -and Enabled -eq "true"} -Properties PasswordLastSet + $totalcount = ($accountsoldpasswords | Measure-Object | Select-Object Count).count + foreach($account in $accountsoldpasswords){ + if($totalcount -eq 0){ break } + Write-Progress -Activity "Searching for passwords older than 90days..." -Status "Currently identifed $count" -PercentComplete ($count / $totalcount*100) + if($account.PasswordLastSet){ + $datelastchanged = $account.PasswordLastSet + }else{ + $datelastchanged = "Never" + } + Add-Content -Path "$outputdir\accounts_with_old_passwords.txt" -Value "User $($account.SamAccountName) ($($account.Name)) has not changed their password since $datelastchanged" + $count++ + } + Write-Progress -Activity "Searching for passwords older than 90days..." -Status "Ready" -Completed + if($count -gt 0){ + Write-Both " [!] $count accounts with passwords older than 90days, see accounts_with_old_passwords.txt (KB550)" + Write-Nessus-Finding "AccountsWithOldPasswords" "KB550" ([System.IO.File]::ReadAllText("$outputdir\accounts_with_old_passwords.txt")) + } + $krbtgtPasswordDate = (Get-ADUser -Filter {SamAccountName -eq "krbtgt"} -Properties PasswordLastSet).PasswordLastSet + if($krbtgtPasswordDate -lt (Get-Date).AddDays(-180)){ + Write-Both " [!] krbtgt password not changed since $krbtgtPasswordDate! (KB253)" + Write-Nessus-Finding "krbtgtPasswordNotChanged" "KB253" "krbtgt password not changed since $krbtgtPasswordDate" + } +} +Function Get-GPOtoFile{#Outputs complete GPO report + if(Test-Path "$outputdir\GPOReport.html"){ Remove-Item "$outputdir\GPOReport.html" -Recurse } + Get-GPOReport -All -ReportType HTML -Path "$outputdir\GPOReport.html" + Write-Both " [+] GPO Report saved to GPOReport.html" + if(Test-Path "$outputdir\GPOReport.xml"){ Remove-Item "$outputdir\GPOReport.xml" -Recurse } + Get-GPOReport -All -ReportType XML -Path "$outputdir\GPOReport.xml" + Write-Both " [+] GPO Report saved to GPOReport.xml, now run Grouper offline using the following command (KB499)" + Write-Both " [+] PS>Import-Module Grouper.psm1 ; Invoke-AuditGPOReport -Path C:\GPOReport.xml -Level 3" +} +Function Get-GPOsPerOU{#Lists all OUs and which GPOs apply to them + $count = 0 + $ousgpos = @(Get-ADOrganizationalUnit -Filter *) + $totalcount = ($ousgpos | Measure-Object | Select-Object Count).count + foreach($ouobject in $ousgpos){ + if($totalcount -eq 0){ break } + Write-Progress -Activity "Identifying which GPOs apply to which OUs..." -Status "Currently identifed $count OUs" -PercentComplete ($count / $totalcount*100) + $combinedgpos = ($(((Get-GPInheritance -Target $ouobject).InheritedGpoLinks) | select DisplayName) | ForEach-Object { $_.DisplayName }) -join ',' + Add-Content -Path "$outputdir\ous_inheritedGPOs.txt" -Value "$($ouobject.Name) Inherits these GPOs: $combinedgpos" + $count++ + } + Write-Progress -Activity "Identifying which GPOs apply to which OUs..." -Status "Ready" -Completed + Write-Both " [+] Inherited GPOs saved to ous_inheritedGPOs.txt" +} +Function Get-NTDSdit{#Dumps NTDS.dit, SYSTEM and SAM for password cracking + if(Test-Path "$outputdir\ntds.dit"){ Remove-Item "$outputdir\ntds.dit" -Recurse } + $outputdirntds = '\"' + $outputdir + '\ntds.dit\"' + $command = "ntdsutil `"ac in ntds`" `"ifm`" `"cr fu $outputdirntds `" q q" + $hide = cmd.exe /c "$command" 2>&1 + Write-Both " [+] NTDS.dit, SYSTEM & SAM saved to output folder" + Write-Both " [+] Use secretsdump.py -system registry/SYSTEM -ntds Active\ Directory/ntds.dit LOCAL -outputfile customer" +} +Function Get-SYSVOLXMLS{#Finds XML files in SYSVOL (thanks --> https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Get-GPPPassword.ps1) + $XMLFiles = Get-ChildItem -Path "\\$Env:USERDNSDOMAIN\SYSVOL" -Recurse -ErrorAction SilentlyContinue -Include 'Groups.xml','Services.xml','Scheduledtasks.xml','DataSources.xml','Printers.xml','Drives.xml' + $count = 0 + if($XMLFiles){ + $progresscount = 0 + $totalcount = ($XMLFiles | Measure-Object | Select-Object Count).count + foreach($File in $XMLFiles){ + if($totalcount -eq 0){ break } + $progresscount++ + Write-Progress -Activity "Searching SYSVOL *.xmls for cpassword..." -Status "Currently searched through $count" -PercentComplete ($progresscount / $totalcount*100) + $Filename = Split-Path $File -Leaf + $Distinguishedname = (Split-Path (Split-Path (Split-Path( Split-Path (Split-Path $File -Parent) -Parent ) -Parent ) -Parent) -Leaf).Substring(1).TrimEnd('}') + [xml]$Xml = Get-Content ($File) + if($Xml.innerxml -like "*cpassword*" -and $Xml.innerxml -notlike '*cpassword=""*'){ + if(!(Test-Path "$outputdir\sysvol")){ New-Item -ItemType Directory -Path "$outputdir\sysvol" | Out-Null } + Write-Both " [!] cpassword found in file, copying to output folder (KB329)" + Write-Both " $File" + Copy-Item -Path $File -Destination $outputdir\sysvol\$Distinguishedname.$Filename + $count++ + } + } + Write-Progress -Activity "Searching SYSVOL *.xmls for cpassword..." -Status "Ready" -Completed + } + if($count -eq 0){ + Write-Both " ...cpassword not found in the $($XMLFiles.count) XML files found." + }else{ + $GPOxml = (Get-Content "$outputdir\sysvol\*.xml" -ErrorAction SilentlyContinue) + $GPOxml = $GPOxml -Replace "<", "<" + $GPOxml = $GPOxml -Replace ">", ">" + Write-Nessus-Finding "GPOPasswordStorage" "KB329" "$GPOxml" + } +} +Function Get-InactiveAccounts{#Lists accounts not used in past 180 days plus some checks for admin accounts + $count = 0 + $progresscount = 0 + $inactiveaccounts = Search-ADaccount -AccountInactive -Timespan (New-TimeSpan -Days 180) -UsersOnly | Where-Object {$_.Enabled -eq $true} + $totalcount = ($inactiveaccounts | Measure-Object | Select-Object Count).count + foreach($account in $inactiveaccounts){ + if($totalcount -eq 0){ break } + $progresscount++ + Write-Progress -Activity "Searching for inactive users..." -Status "Currently identifed $count" -PercentComplete ($progresscount / $totalcount*100) + if($account.Enabled){ + if($account.LastLogonDate){ + $userlastused = $account.LastLogonDate + }else{ + $userlastused = "Never" + } + Add-Content -Path "$outputdir\accounts_inactive.txt" -Value "User $($account.SamAccountName) ($($account.Name)) has not logged on since $userlastused" + $count++ + } + } + Write-Progress -Activity "Searching for inactive users..." -Status "Ready" -Completed + if($count -gt 0){ + Write-Both " [!] $count inactive user accounts(180days), see accounts_inactive.txt (KB500)" + Write-Nessus-Finding "InactiveAccounts" "KB500" ([System.IO.File]::ReadAllText("$outputdir\accounts_inactive.txt")) + } +} +Function Get-AdminAccountChecks{#Checks if Administrator account has been renamed, replaced and is no longer used. + $AdministratorSID = ((Get-ADDomain -Current LoggedOnUser).domainsid.value)+"-500" + $AdministratorSAMAccountName = (Get-ADUser -Filter {SID -eq $AdministratorSID} -Properties SamAccountName).SamAccountName + $AdministratorName = (Get-ADUser -Filter {SID -eq $AdministratorSID} -Properties SamAccountName).Name + if($AdministratorTranslation -contains $AdministratorSAMAccountName){ + Write-Both " [!] Local Administrator account (UID500) has not been renamed (KB309)" + Write-Nessus-Finding "AdminAccountRenamed" "KB309" "Local Administrator account (UID500) has not been renamed" + }else{ + $count = 0 + foreach($AdminName in $AdministratorTranslation){ + if((Get-ADUser -Filter {SamAccountName -eq $AdminName})) { $count++ } + } + if($count -eq 0){ + Write-Both " [!] Local Administrator account renamed to $AdministratorSAMAccountName ($($AdministratorName)), but a dummy account not made in it's place! (KB309)" + Write-Nessus-Finding "AdminAccountRenamed" "KB309" "Local Admin account renamed to $AdministratorSAMAccountName ($($AdministratorName)), but a dummy account not made in it's place" + } + } + $AdministratorLastLogonDate = (Get-ADUser -Filter {SID -eq $AdministratorSID} -Properties LastLogonDate).LastLogonDate + if($AdministratorLastLogonDate -gt (Get-Date).AddDays(-180)){ + Write-Both " [!] UID500 (LocalAdministrator) account is still used, last used $AdministratorLastLogonDate! (KB309)" + Write-Nessus-Finding "AdminAccountRenamed" "KB309" "UID500 (LocalAdmini) account is still used, last used $AdministratorLastLogonDate" + } +} +Function Get-DisabledAccounts{#Lists disabled accounts + $disabledaccounts = Search-ADaccount -AccountDisabled -UsersOnly + $count = 0 + $totalcount = ($disabledaccounts | Measure-Object | Select-Object Count).count + foreach($account in $disabledaccounts){ + if($totalcount -eq 0){ break } + Write-Progress -Activity "Searching for disabled users..." -Status "Currently identifed $count" -PercentComplete ($count / $totalcount*100) + Add-Content -Path "$outputdir\accounts_disabled.txt" -Value "Account $($account.SamAccountName) ($($account.Name)) is disabled" + $count++ + } + Write-Progress -Activity "Searching for disabled users..." -Status "Ready" -Completed + if($count -gt 0){ + Write-Both " [!] $count disabled user accounts, see accounts_disabled.txt (KB501)" + Write-Nessus-Finding "DisabledAccounts" "KB501" ([System.IO.File]::ReadAllText("$outputdir\accounts_disabled.txt")) + } +} +Function Get-LockedAccounts{#Lists locked accounts + $lockedAccounts = Get-ADUser -Filter * -Properties LockedOut | Where-Object {$_.LockedOut -eq $true} + $count = 0 + $totalcount = ($lockedAccounts | Measure-Object | Select-Object Count).Count + foreach($account in $lockedAccounts){ + if($totalcount -eq 0){ break } + Write-Progress -Activity "Searching for locked users..." -Status "Currently identifed $count" -PercentComplete ($count / $totalcount*100) + Add-Content -Path "$outputdir\accounts_locked.txt" -Value "Account $($account.SamAccountName) ($($account.Name)) is locked" + $count++ + } + Write-Progress -Activity "Searching for locked users..." -Status "Ready" -Completed + if($count -gt 0){ + Write-Both " [!] $count locked user accounts, see accounts_locked.txt" + } +} +Function Get-AccountPassDontExpire{#Lists accounts who's passwords dont expire + $count = 0 + $nonexpiringpasswords = Search-ADAccount -PasswordNeverExpires -UsersOnly | Where-Object {$_.Enabled -eq $true} + $totalcount = ($nonexpiringpasswords | Measure-Object | Select-Object Count).count + foreach($account in $nonexpiringpasswords){ + if($totalcount -eq 0){ break } + Write-Progress -Activity "Searching for users with passwords that dont expire..." -Status "Currently identifed $count" -PercentComplete ($count / $totalcount*100) + Add-Content -Path "$outputdir\accounts_passdontexpire.txt" -Value "$($account.SamAccountName) ($($account.Name))" + $count++ + } + Write-Progress -Activity "Searching for users with passwords that dont expire..." -Status "Ready" -Completed + if($count -gt 0){ + Write-Both " [!] There are $count accounts that don't expire, see accounts_passdontexpire.txt (KB254)" + Write-Nessus-Finding "AccountsThatDontExpire" "KB254" ([System.IO.File]::ReadAllText("$outputdir\accounts_passdontexpire.txt")) + } +} +Function Get-OldBoxes{#Lists 2000/2003/XP/Vista/7/2008 machines + $count = 0 + $oldboxes = Get-ADComputer -Filter {OperatingSystem -Like "*2003*" -and Enabled -eq "true" -or OperatingSystem -Like "*XP*" -and Enabled -eq "true" -or OperatingSystem -Like "*2000*" -and Enabled -eq "true" -or OperatingSystem -like '*Windows 7*' -and Enabled -eq "true" -or OperatingSystem -like '*vista*' -and Enabled -eq "true" -or OperatingSystem -like '*2008*' -and Enabled -eq "true"} -Property OperatingSystem + $totalcount = ($oldboxes | Measure-Object | Select-Object Count).count + foreach($machine in $oldboxes){ + if($totalcount -eq 0){ break } + Write-Progress -Activity "Searching for 2000/2003/XP/Vista/7/2008 devices joined to the domain..." -Status "Currently identifed $count" -PercentComplete ($count / $totalcount*100) + Add-Content -Path "$outputdir\machines_old.txt" -Value "$($machine.Name), $($machine.OperatingSystem), $($machine.OperatingSystemServicePack), $($machine.OperatingSystemVersio), $($machine.IPv4Address)" + $count++ + } + Write-Progress -Activity "Searching for 2000/2003/XP/Vista/7/2008 devices joined to the domain..." -Status "Ready" -Completed + if($count -gt 0){ + Write-Both " [!] We found $count machines running 2000/2003/XP/Vista/7/2008! see machines_old.txt (KB3/37/38/KB259)" + Write-Nessus-Finding "OldBoxes" "KB259" ([System.IO.File]::ReadAllText("$outputdir\machines_old.txt")) + } +} +Function Get-DCsNotOwnedByDA {#Searches for DC objects not owned by the Domain Admins group + $count = 0 + $progresscount = 0 + $domaincontrollers = Get-ADComputer -Filter {PrimaryGroupID -eq 516 -or PrimaryGroupID -eq 521} -Property * + $totalcount = ($domaincontrollers | Measure-Object | Select-Object Count).count + if($totalcount -gt 0){ + foreach($machine in $domaincontrollers){ + $progresscount++ + Write-Progress -Activity "Searching for DCs not owned by Domain Admins group..." -Status "Currently identifed $count" -PercentComplete ($progresscount / $totalcount*100) + if($machine.ntsecuritydescriptor.Owner -ne "$env:UserDomain\$DomainAdmins"){ + Add-Content -Path "$outputdir\dcs_not_owned_by_da.txt" -Value "$($machine.Name), $($machine.OperatingSystem), $($machine.OperatingSystemServicePack), $($machine.OperatingSystemVersio), $($machine.IPv4Address), owned by $($machine.ntsecuritydescriptor.Owner)" + $count++ + } + } + Write-Progress -Activity "Searching for DCs not owned by Domain Admins group..." -Status "Ready" -Completed + } + if($count -gt 0){ + Write-Both " [!] We found $count DCs not owned by Domains Admins group! see dcs_not_owned_by_da.txt" + Write-Nessus-Finding "DCsNotByDA" "KB547" ([System.IO.File]::ReadAllText("$outputdir\dcs_not_owned_by_da.txt")) + } +} +Function Get-HostDetails{#Gets basic information about the host + Write-Both " [+] Device Name: $env:ComputerName" + Write-Both " [+] Domain Name: $env:UserDomain" + Write-Both " [+] User Name : $env:UserName" + Write-Both " [+] NT Version : $(Get-WinVersion)" + $IPAddresses = [net.dns]::GetHostAddresses("") | select -ExpandProperty IP* + foreach($ip in $IPAddresses){ + if($ip -ne "::1"){ + Write-Both " [+] IP Address : $ip" + } + } +} +Function Get-FunctionalLevel{#Gets the functional level for domain and forest + $DomainLevel = (Get-ADDomain).domainMode + if($DomainLevel -eq "Windows2000Domain" -and [single](Get-WinVersion) -gt 5.0) { Write-Both " [!] DomainLevel is reduced for backwards compatibility to $DomainLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "DomainLevel is reduced for backwards compatibility to $DomainLevel" } + if($DomainLevel -eq "Windows2003InterimDomain" -and [single](Get-WinVersion) -gt 5.1) { Write-Both " [!] DomainLevel is reduced for backwards compatibility to $DomainLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "DomainLevel is reduced for backwards compatibility to $DomainLevel" } + if($DomainLevel -eq "Windows2003Domain" -and [single](Get-WinVersion) -gt 5.2) { Write-Both " [!] DomainLevel is reduced for backwards compatibility to $DomainLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "DomainLevel is reduced for backwards compatibility to $DomainLevel" } + if($DomainLevel -eq "Windows2008Domain" -and [single](Get-WinVersion) -gt 6.0) { Write-Both " [!] DomainLevel is reduced for backwards compatibility to $DomainLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "DomainLevel is reduced for backwards compatibility to $DomainLevel" } + if($DomainLevel -eq "Windows2008R2Domain" -and [single](Get-WinVersion) -gt 6.1) { Write-Both " [!] DomainLevel is reduced for backwards compatibility to $DomainLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "DomainLevel is reduced for backwards compatibility to $DomainLevel" } + if($DomainLevel -eq "Windows2012Domain" -and [single](Get-WinVersion) -gt 6.2) { Write-Both " [!] DomainLevel is reduced for backwards compatibility to $DomainLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "DomainLevel is reduced for backwards compatibility to $DomainLevel" } + if($DomainLevel -eq "Windows2012R2Domain" -and [single](Get-WinVersion) -gt 6.3) { Write-Both " [!] DomainLevel is reduced for backwards compatibility to $DomainLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "DomainLevel is reduced for backwards compatibility to $DomainLevel" } + if($DomainLevel -eq "Windows2016Domain" -and [single](Get-WinVersion) -gt 10.0){ Write-Both " [!] DomainLevel is reduced for backwards compatibility to $DomainLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "DomainLevel is reduced for backwards compatibility to $DomainLevel" } + $ForestLevel = (Get-ADForest).ForestMode + if($ForestLevel -eq "Windows2000Forest" -and [single](Get-WinVersion) -gt 5.0) { Write-Both " [!] ForestLevel is reduced for backwards compatibility to $ForestLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "ForestLevel is reduced for backwards compatibility to $ForestLevel" } + if($ForestLevel -eq "Windows2003InterimForest" -and [single](Get-WinVersion) -gt 5.1) { Write-Both " [!] ForestLevel is reduced for backwards compatibility to $ForestLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "ForestLevel is reduced for backwards compatibility to $ForestLevel" } + if($ForestLevel -eq "Windows2003Forest" -and [single](Get-WinVersion) -gt 5.2) { Write-Both " [!] ForestLevel is reduced for backwards compatibility to $ForestLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "ForestLevel is reduced for backwards compatibility to $ForestLevel" } + if($ForestLevel -eq "Windows2008Forest" -and [single](Get-WinVersion) -gt 6.0) { Write-Both " [!] ForestLevel is reduced for backwards compatibility to $ForestLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "ForestLevel is reduced for backwards compatibility to $ForestLevel" } + if($ForestLevel -eq "Windows2008R2Forest" -and [single](Get-WinVersion) -gt 6.1) { Write-Both " [!] ForestLevel is reduced for backwards compatibility to $ForestLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "ForestLevel is reduced for backwards compatibility to $ForestLevel" } + if($ForestLevel -eq "Windows2012Forest" -and [single](Get-WinVersion) -gt 6.2) { Write-Both " [!] ForestLevel is reduced for backwards compatibility to $ForestLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "ForestLevel is reduced for backwards compatibility to $ForestLevel" } + if($ForestLevel -eq "Windows2012R2Forest" -and [single](Get-WinVersion) -gt 6.3) { Write-Both " [!] ForestLevel is reduced for backwards compatibility to $ForestLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "ForestLevel is reduced for backwards compatibility to $ForestLevel" } + if($ForestLevel -eq "Windows2016Forest" -and [single](Get-WinVersion) -gt 10.0){ Write-Both " [!] ForestLevel is reduced for backwards compatibility to $ForestLevel!" ; Write-Nessus-Finding "FunctionalLevel" "KB546" "ForestLevel is reduced for backwards compatibility to $ForestLevel" } +} +Function Get-GPOEnum{#Loops GPOs for some important domain-wide settings + $AllowedJoin = @() + $HardenNTLM = @() + $DenyNTLM = @() + $AuditNTLM = @() + $NTLMAuthExceptions = @() + $EncryptionTypesNotConfigured = $true + $AdminLocalLogonAllowed = $true + $AdminRPDLogonAllowed = $true + $AdminNetworkLogonAllowed = $true + $AllGPOs = Get-GPO -All | sort DisplayName + foreach($GPO in $AllGPOs){ + $GPOreport = Get-GPOReport -Guid $GPO.Id -ReportType Xml + #Look for GPO that allows join PC to domain + $permissionindex = $GPOreport.IndexOf('SeMachineAccountPrivilege') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeMachineAccountPrivilege'}).Member) ){ + $obj = New-Object -TypeName PSObject + $obj | Add-Member -MemberType NoteProperty -Name GPO -Value $GPO.DisplayName + $obj | Add-Member -MemberType NoteProperty -Name SID -Value $member.Sid.'#text' + $obj | Add-Member -MemberType NoteProperty -Name Name -Value $member.Name.'#text' + $AllowedJoin += $obj + } + } + #Look for GPO that hardens NTLM + $permissionindex = $GPOreport.IndexOf('NoLMHash') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + $value = $xmlreport.GPO.Computer.ExtensionData.Extension.SecurityOptions | Where-Object {$_.KeyName -Match 'NoLMHash'} + $obj = New-Object -TypeName PSObject + $obj | Add-Member -MemberType NoteProperty -Name GPO -Value $GPO.DisplayName + $obj | Add-Member -MemberType NoteProperty -Name Value -Value "NoLMHash $($value.Display.DisplayBoolean)" + $HardenNTLM += $obj + } + $permissionindex = $GPOreport.IndexOf('LmCompatibilityLevel') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + $value = $xmlreport.GPO.Computer.ExtensionData.Extension.SecurityOptions | Where-Object {$_.KeyName -Match 'LmCompatibilityLevel'} + $obj = New-Object -TypeName PSObject + $obj | Add-Member -MemberType NoteProperty -Name GPO -Value $GPO.DisplayName + $obj | Add-Member -MemberType NoteProperty -Name Value -Value "LmCompatibilityLevel $($value.Display.DisplayString)" + $HardenNTLM += $obj + } + #Look for GPO that denies NTLM + $permissionindex = $GPOreport.IndexOf('RestrictNTLMInDomain') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + $value = $xmlreport.GPO.Computer.ExtensionData.Extension.SecurityOptions | Where-Object {$_.KeyName -Match 'RestrictNTLMInDomain'} + $obj = New-Object -TypeName PSObject + $obj | Add-Member -MemberType NoteProperty -Name GPO -Value $GPO.DisplayName + $obj | Add-Member -MemberType NoteProperty -Name Value -Value "RestrictNTLMInDomain $($value.Display.DisplayString)" + $DenyNTLM += $obj + } + #Look for GPO that audits NTLM + $permissionindex = $GPOreport.IndexOf('AuditNTLMInDomain') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + $value = $xmlreport.GPO.Computer.ExtensionData.Extension.SecurityOptions | Where-Object {$_.KeyName -Match 'AuditNTLMInDomain'} + $obj = New-Object -TypeName PSObject + $obj | Add-Member -MemberType NoteProperty -Name GPO -Value $GPO.DisplayName + $obj | Add-Member -MemberType NoteProperty -Name Value -Value "AuditNTLMInDomain $($value.Display.DisplayString)" + $AuditNTLM += $obj + } + $permissionindex = $GPOreport.IndexOf('AuditReceivingNTLMTraffic') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + $value = $xmlreport.GPO.Computer.ExtensionData.Extension.SecurityOptions | Where-Object {$_.KeyName -Match 'AuditReceivingNTLMTraffic'} + $obj = New-Object -TypeName PSObject + $obj | Add-Member -MemberType NoteProperty -Name GPO -Value $GPO.DisplayName + $obj | Add-Member -MemberType NoteProperty -Name Value -Value "AuditReceivingNTLMTraffic $($value.Display.DisplayString)" + $AuditNTLM += $obj + } + #Look for GPO that allows NTLM exclusions + $permissionindex = $GPOreport.IndexOf('DCAllowedNTLMServers') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.SecurityOptions | Where-Object {$_.KeyName -Match 'DCAllowedNTLMServers'}).SettingStrings.Value) ){ + $NTLMAuthExceptions += $member + } + } + #Validate Kerberos Encryption algorythm + $permissionindex = $GPOreport.IndexOf('MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters\SupportedEncryptionTypes') + if($permissionindex -gt 0){ + $EncryptionTypesNotConfigured = $false + $xmlreport = [xml]$GPOreport + $EncryptionTypes = $xmlreport.GPO.Computer.ExtensionData.Extension.SecurityOptions.Display.DisplayFields.Field + if(($EncryptionTypes | Where-Object {$_.Name -eq 'DES_CBC_CRC'} | select -ExpandProperty value) -eq 'true') { Write-Both " [!] GPO [$($GPO.DisplayName)] enabled DES_CBC_CRC for Kerberos!" } + elseif(($EncryptionTypes | Where-Object {$_.Name -eq 'DES_CBC_MD5'} | select -ExpandProperty value) -eq 'true') { Write-Both " [!] GPO [$($GPO.DisplayName)] enabled DES_CBC_MD5 for Kerberos!" } + elseif(($EncryptionTypes | Where-Object {$_.Name -eq 'RC4_HMAC_MD5'} | select -ExpandProperty value) -eq 'true') { Write-Both " [!] GPO [$($GPO.DisplayName)] enabled RC4_HMAC_MD5 for Kerberos!" } + elseif(($EncryptionTypes | Where-Object {$_.Name -eq 'AES128_HMAC_SHA1'} | select -ExpandProperty value) -eq 'false'){ Write-Both " [!] AES128_HMAC_SHA1 not enabled for Kerberos!" } + elseif(($EncryptionTypes | Where-Object {$_.Name -eq 'AES256_HMAC_SHA1'} | select -ExpandProperty value) -eq 'false'){ Write-Both " [!] AES256_HMAC_SHA1 not enabled for Kerberos!" } + elseif(($EncryptionTypes | Where-Object {$_.Name -eq 'Future encryption types'} | select -ExpandProperty value) -eq 'false'){ Write-Both " [!] Future encryption types not enabled for Kerberos!" } + } + #Validates Admins local logon restrictions + $permissionindex = $GPOreport.IndexOf('SeDenyInteractiveLogonRight') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeDenyInteractiveLogonRight'}).Member)){ + if($member.Name.'#text' -match "$SchemaAdmins" -or $member.Name.'#text' -match "$DomainAdmins" -or $member.Name.'#text' -match "$EnterpriseAdmins"){ + $AdminLocalLogonAllowed = $false + Add-Content -Path "$outputdir\admin_logon_restrictions.txt" -Value "$($GPO.DisplayName) SeDenyInteractiveLogonRight $($member.Name.'#text')" + } + } + } + #Validates Admins RDP logon restrictions + $permissionindex = $GPOreport.IndexOf('SeDenyRemoteInteractiveLogonRight') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeDenyRemoteInteractiveLogonRight'}).Member)){ + if($member.Name.'#text' -match "$SchemaAdmins" -or $member.Name.'#text' -match "$DomainAdmins" -or $member.Name.'#text' -match "$EnterpriseAdmins"){ + $AdminRPDLogonAllowed = $false + Add-Content -Path "$outputdir\admin_logon_restrictions.txt" -Value "$($GPO.DisplayName) SeDenyRemoteInteractiveLogonRight $($member.Name.'#text')" + } + } + } + #Validates Admins network logon restrictions + $permissionindex = $GPOreport.IndexOf('SeDenyNetworkLogonRight') + if($permissionindex -gt 0){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeDenyNetworkLogonRight'}).Member)){ + if($member.Name.'#text' -match "$SchemaAdmins" -or $member.Name.'#text' -match "$DomainAdmins" -or $member.Name.'#text' -match "$EnterpriseAdmins"){ + $AdminNetworkLogonAllowed = $false + Add-Content -Path "$outputdir\admin_logon_restrictions.txt" -Value "$($GPO.DisplayName) SeDenyNetworkLogonRight $($member.Name.'#text')" + } + } + } + } + #Output for join PC to domain + foreach($record in $AllowedJoin){ + Write-Both " [+] GPO [$($record.GPO)] allows [$($record.Name)] to join computers to domain" + } + #Output for Admins local logon restrictions + if($AdminLocalLogonAllowed){ + Write-Both " [!] No GPO restricts Domain, Schema and Enterprise local logon across domain!!!" + Write-Nessus-Finding "AdminLogon" "KB479" "No GPO restricts Domain, Schema and Enterprise local logon across domain!" + } + #Output for Admins RDP logon restrictions + if($AdminRPDLogonAllowed){ + Write-Both " [!] No GPO restricts Domain, Schema and Enterprise RDP logon across domain!!!" + Write-Nessus-Finding "AdminLogon" "KB479" "No GPO restricts Domain, Schema and Enterprise RDP logon across domain!" + } + #Output for Admins network logon restrictions + if($AdminNetworkLogonAllowed){ + Write-Both " [!] No GPO restricts Domain, Schema and Enterprise network logon across domain!!!" + Write-Nessus-Finding "AdminLogon" "KB479" "No GPO restricts Domain, Schema and Enterprise network logon across domain!" + } + #Output for Validate Kerberos Encryption algorythm + if($EncryptionTypesNotConfigured){ + Write-Both " [!] RC4_HMAC_MD5 enabled for Kerberos across domain!!!" + Write-Nessus-Finding "WeakKerberosEncryption" "KB995" "RC4_HMAC_MD5 enabled for Kerberos across domain!" + } + #Output for deny NTLM + if($DenyNTLM.count -eq 0){ + if($HardenNTLM.count -eq 0){ + Write-Both " [!] No GPO denies NTLM authentication!" + Write-Both " [!] No GPO explicitely restricts LM or NTLMv1!" + }else{ + Write-Both " [+] NTLM authentication hardening implemented, but NTLM not denied" + foreach($record in $HardenNTLM){ + Write-Both " [-] $($record.value)" + Add-Content -Path "$outputdir\ntlm_restrictions.txt" -Value "NTLM restricted by GPO [$($record.gpo)] with value [$($record.value)]" + } + } + }else{ + foreach($record in $DenyNTLM){ + Add-Content -Path "$outputdir\ntlm_restrictions.txt" -Value "NTLM restricted by GPO [$($record.gpo)] with value [$($record.value)]" + } + } + #Output for NTLM exceptions + if($NTLMAuthExceptions.count -ne 0){ + foreach($record in $NTLMAuthExceptions){ + Add-Content -Path "$outputdir\ntlm_restrictions.txt" -Value "NTLM auth exceptions $($record)" + } + } + #Output for NTLM audit + if($AuditNTLM.count -eq 0){ + Write-Both " [!] No GPO enables NTLM audit authentication!" + }else{ + foreach($record in $DenyNTLM){ + Add-Content -Path "$outputdir\ntlm_restrictions.txt" -Value "NTLM audit GPO [$($record.gpo)] with value [$($record.value)]" + } + } +} +Function Get-PrivilegedGroupMembership{#List Domain Admins, Enterprise Admins and Schema Admins members + $SchemaMembers = Get-ADGroup $SchemaAdmins | Get-ADGroupMember + $EnterpriseMembers = Get-ADGroup $EnterpriseAdmins | Get-ADGroupMember + $DomainAdminsMembers = Get-ADGroup $DomainAdmins | Get-ADGroupMember + if(($SchemaMembers | measure).count -ne 0){ + Write-Both " [!] Schema Admins not empty!!!" + foreach($member in $SchemaMembers){ + Add-Content -Path "$outputdir\schema_admins.txt" -Value "$($member.objectClass) $($member.SamAccountName) $($member.Name)" + } + } + if(($EnterpriseMembers | measure).count -ne 0){ + Write-Both " [!] Enterprise Admins not empty!!!" + foreach($member in $EnterpriseMembers){ + Add-Content -Path "$outputdir\enterprise_admins.txt" -Value "$($member.objectClass) $($member.SamAccountName) $($member.Name)" + } + } + foreach($member in $DomainAdminsMembers){ + Add-Content -Path "$outputdir\domain_admins.txt" -Value "$($member.objectClass) $($member.SamAccountName) $($member.Name)" + } +} +Function Get-DCEval{#Basic validation of all DCs in forest + #Collect all DCs in forest + $Forest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest() + $ADs = Get-ADDomainController -Filter { Site -like "*" } + #Validate OS version of DCs + $osList = @() + $ADs | ForEach-Object { $osList += $_.OperatingSystem } + if(($osList | sort -Unique | measure).Count -eq 1){ + Write-Both " [+] All DCs are the same OS version of $($osList | sort -Unique)" + }else{ + Write-Both " [!] Operating system differs across DCs!!!" + if(($ADs | Where-Object {$_.OperatingSystem -Match '2003'}) -ne $null){ Write-Both " [+] Domain controllers with WS 2003" ; $ADs | Where-Object {$_.OperatingSystem -Match '2003'} | ForEach-Object { Write-Both " [-] $($_.Name) has $($_.OperatingSystem)" }} + if(($ADs | Where-Object {$_.OperatingSystem -Match '2008 !(R2)'}) -ne $null){ Write-Both " [+] Domain controllers with WS 2008" ; $ADs | Where-Object {$_.OperatingSystem -Match '2008 !(R2)'} | ForEach-Object { Write-Both " [-] $($_.Name) has $($_.OperatingSystem)" }} + if(($ADs | Where-Object {$_.OperatingSystem -Match '2008 R2'}) -ne $null){ Write-Both " [+] Domain controllers with WS 2008 R2" ; $ADs | Where-Object {$_.OperatingSystem -Match '2008 R2'} | ForEach-Object { Write-Both " [-] $($_.Name) has $($_.OperatingSystem)" }} + if(($ADs | Where-Object {$_.OperatingSystem -Match '2012 !(R2)'}) -ne $null){ Write-Both " [+] Domain controllers with WS 2012" ; $ADs | Where-Object {$_.OperatingSystem -Match '2012 !(R2)'} | ForEach-Object { Write-Both " [-] $($_.Name) has $($_.OperatingSystem)" }} + if(($ADs | Where-Object {$_.OperatingSystem -Match '2012 R2'}) -ne $null){ Write-Both " [+] Domain controllers with WS 2012 R2" ; $ADs | Where-Object {$_.OperatingSystem -Match '2012 R2'} | ForEach-Object { Write-Both " [-] $($_.Name) has $($_.OperatingSystem)" }} + if(($ADs | Where-Object {$_.OperatingSystem -Match '2016'}) -ne $null){ Write-Both " [+] Domain controllers with WS 2016" ; $ADs | Where-Object {$_.OperatingSystem -Match '2016'} | ForEach-Object { Write-Both " [-] $($_.Name) has $($_.OperatingSystem)" }} + if(($ADs | Where-Object {$_.OperatingSystem -Match '2019'}) -ne $null){ Write-Both " [+] Domain controllers with WS 2019" ; $ADs | Where-Object {$_.OperatingSystem -Match '2019'} | ForEach-Object { Write-Both " [-] $($_.Name) has $($_.OperatingSystem)" }} + if(($ADs | Where-Object {$_.OperatingSystem -Match '2022'}) -ne $null){ Write-Both " [+] Domain controllers with WS 2022" ; $ADs | Where-Object {$_.OperatingSystem -Match '2022'} | ForEach-Object { Write-Both " [-] $($_.Name) has $($_.OperatingSystem)" }} + } + #Validate DCs hotfix level + if( (( $ADs | Select-Object OperatingSystemHotfix -Unique ) | measure).count -eq 1 -or ( $ADs | Select-Object OperatingSystemHotfix -Unique ) -eq $null ){ + Write-Both " [+] All DCs have the same hotfix of [$($ADs | Select-Object OperatingSystemHotFix -Unique | ForEach-Object {$_.OperatingSystemHotfix})]" + }else{ + Write-Both " [!] Hotfix level differs across DCs!!!" + $ADs | ForEach-Object { + Write-Both " [-] DC $($_.Name) hotfix [$($_.OperatingSystemHotfix)]" + } + } + #Validate DCs Service Pack level + if((($ADs | Select-Object OperatingSystemServicePack -Unique) | measure).count -eq 1 -or ($ADs | Select-Object OperatingSystemServicePack -Unique) -eq $null){ + Write-Both " [+] All DCs have the same Service Pack of [$($ADs | Select-Object OperatingSystemServicePack -Unique | ForEach-Object {$_.OperatingSystemServicePack})]" + }else{ + Write-Both " [!] Service Pack level differs across DCs!!!" + $ADs | ForEach-Object { + Write-Both " [-] DC $($_.Name) Service Pack [$($_.OperatingSystemServicePack)]" + } + } + #Validate DCs OS Version + if((($ADs | Select-Object OperatingSystemVersion -Unique ) | measure).count -eq 1 -or ($ADs | Select-Object OperatingSystemVersion -Unique) -eq $null){ + Write-Both " [+] All DCs have the same OS Version of [$($ADs | Select-Object OperatingSystemVersion -Unique | ForEach-Object {$_.OperatingSystemVersion})]" + }else{ + Write-Both " [!] OS Version differs across DCs!!!" + $ADs | ForEach-Object { + Write-Both " [-] DC $($_.Name) OS Version [$($_.OperatingSystemVersion)]" + } + } + #List sites without GC + $SitesWithNoGC = $false + foreach($Site in $Forest.Sites){ + if(($ADs | Where-Object {$_.Site -eq $Site.Name} | Where-Object {$_.IsGlobalCatalog -eq $true}) -eq $null){ + $SitesWithNoGC = $true + Add-Content -Path "$outputdir\sites_no_gc.txt" -Value "$($Site.Name)" + } + } + if($SitesWithNoGC -eq $true){ + Write-Both " [!] You have sites with no Global Catalog!" + } + #Does one DC holds all FSMO + if(($ADs | Where-Object {$_.OperationMasterRoles -ne $null} | measure).count -eq 1){ + Write-Both " [!] DC $($ADs | Where-Object {$_.OperationMasterRoles -ne $null} | select -ExpandProperty Hostname) holds all FSMO roles!" + } + #DCs with weak Kerberos algorhythm (*CH* Changed below to look for msDS-SupportedEncryptionTypes to work with 2008R2) + $ADcomputers = $ADs | ForEach-Object {Get-ADComputer $_.Name -Properties msDS-SupportedEncryptionTypes} + $WeakKerberos = $false + foreach($DC in $ADcomputers){#(*CH* Need to define all combinations here, only done 28 and 31 so far) (31 = "DES, RC4, AES128, AES256", 28 = "RC4, AES128, AES256") + if( $DC."msDS-SupportedEncryptionTypes" -eq 28 -or $DC."msDS-SupportedEncryptionTypes" -eq 31 ){ + $WeakKerberos = $true + Add-Content -Path "$outputdir\dcs_weak_kerberos_ciphersuite.txt" -Value "$($DC.DNSHostName) $($dc."msDS-SupportedEncryptionTypes")" + } + } + Write-Both " [!] You have DCs with RC4 or DES allowed for Kerberos!!!" + #Check where newly joined computers go + $newComputers = (Get-ADDomain).ComputersContainer + $newUsers = (Get-ADDomain).UsersContainer + Write-Both " [+] New joined computers are stored in $newComputers" + Write-Both " [+] New users are stored in $newUsers" +} +Function Get-DefaultDomainControllersPolicy{#Enumerates Default Domain Controllers Policy for default unsecure and excessive options + $ExcessiveDCInteractiveLogon = $false + $ExcessiveDCBackupPermissions = $false + $ExcessiveDCRestorePermissions = $false + $ExcessiveDCDriverPermissions = $false + $ExcessiveDCLocalShutdownPermissions = $false + $ExcessiveDCRemoteShutdownPermissions = $false + $ExcessiveDCTimePermissions = $false + $ExcessiveDCBatchLogonPermissions = $false + $ExcessiveDCRDPLogonPermissions = $false + $GPO = Get-GPO 'Default Domain Controllers Policy' + $GPOreport = Get-GPOReport -Guid $GPO.Id -ReportType Xml + #Interactive local logon + $permissionindex = $GPOreport.IndexOf('SeInteractiveLogonRight') + if($permissionindex -gt 0 -and $GPO.DisplayName -eq 'Default Domain Controllers Policy'){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeInteractiveLogonRight'}).Member)){ + if($member.Name.'#text' -ne 'BUILTIN\$Administrators' -and $member.Name.'#text' -ne "$EntrepriseDomainControllers"){ + $ExcessiveDCInteractiveLogon = $true + Add-Content -Path "$outputdir\default_domain_controller_policy_audit.txt" -Value "SeInteractiveLogonRight $($member.Name.'#text')" + } + } + } + #Batch logon + $permissionindex = $GPOreport.IndexOf('SeBatchLogonRight') + if($permissionindex -gt 0 -and $GPO.DisplayName -eq 'Default Domain Controllers Policy'){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeBatchLogonRight'}).Member)){ + if($member.Name.'#text' -ne 'BUILTIN\$Administrators'){ + $ExcessiveDCBatchLogonPermissions = $true + Add-Content -Path "$outputdir\default_domain_controller_policy_audit.txt" -Value "SeBatchLogonRight $($member.Name.'#text')" + } + } + } + #RDP logon + $permissionindex = $GPOreport.IndexOf('SeInteractiveLogonRight') + if($permissionindex -gt 0 -and $GPO.DisplayName -eq 'Default Domain Controllers Policy'){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeInteractiveLogonRight'}).Member)){ + if($member.Name.'#text' -ne 'BUILTIN\$Administrators' -and $member.Name.'#text' -ne "$EntrepriseDomainControllers"){ + $ExcessiveDCRDPLogonPermissions = $true + Add-Content -Path "$outputdir\default_domain_controller_policy_audit.txt" -Value "SeInteractiveLogonRight $($member.Name.'#text')" + } + } + } + #Backup + $permissionindex = $GPOreport.IndexOf('SeBackupPrivilege') + if($permissionindex -gt 0 -and $GPO.DisplayName -eq 'Default Domain Controllers Policy'){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeBackupPrivilege'}).Member)){ + if($member.Name.'#text' -ne 'BUILTIN\$Administrators'){ + $ExcessiveDCBackupPermissions = $true + Add-Content -Path "$outputdir\default_domain_controller_policy_audit.txt" -Value "SeBackupPrivilege $($member.Name.'#text')" + } + } + } + #Restore + $permissionindex = $GPOreport.IndexOf('SeRestorePrivilege') + if($permissionindex -gt 0 -and $GPO.DisplayName -eq 'Default Domain Controllers Policy'){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeRestorePrivilege'}).Member)){ + if($member.Name.'#text' -ne 'BUILTIN\$Administrators'){ + $ExcessiveDCRestorePermissions = $true + Add-Content -Path "$outputdir\default_domain_controller_policy_audit.txt" -Value "SeRestorePrivilege $($member.Name.'#text')" + } + } + } + #Load driver + $permissionindex = $GPOreport.IndexOf('SeLoadDriverPrivilege') + if($permissionindex -gt 0 -and $GPO.DisplayName -eq 'Default Domain Controllers Policy'){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeLoadDriverPrivilege'}).Member)){ + if($member.Name.'#text' -ne 'BUILTIN\$Administrators'){ + $ExcessiveDCDriverPermissions = $true + Add-Content -Path "$outputdir\default_domain_controller_policy_audit.txt" -Value "SeLoadDriverPrivilege $($member.Name.'#text')" + } + } + } + #Local shutdown + $permissionindex = $GPOreport.IndexOf('SeShutdownPrivilege') + if($permissionindex -gt 0 -and $GPO.DisplayName -eq 'Default Domain Controllers Policy'){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeShutdownPrivilege'}).Member)){ + if($member.Name.'#text' -ne 'BUILTIN\$Administrators'){ + $ExcessiveDCLocalShutdownPermissions = $true + Add-Content -Path "$outputdir\default_domain_controller_policy_audit.txt" -Value "SeShutdownPrivilege $($member.Name.'#text')" + } + } + } + #Remote shutdown + $permissionindex = $GPOreport.IndexOf('SeRemoteShutdownPrivilege') + if($permissionindex -gt 0 -and $GPO.DisplayName -eq 'Default Domain Controllers Policy'){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeRemoteShutdownPrivilege'}).Member)){ + if($member.Name.'#text' -ne 'BUILTIN\$Administrators'){ + $ExcessiveDCRemoteShutdownPermissions = $true + Add-Content -Path "$outputdir\default_domain_controller_policy_audit.txt" -Value "SeRemoteShutdownPrivilege $($member.Name.'#text')" + } + } + } + #Change time + $permissionindex = $GPOreport.IndexOf('SeSystemTimePrivilege') + if($permissionindex -gt 0 -and $GPO.DisplayName -eq 'Default Domain Controllers Policy'){ + $xmlreport = [xml]$GPOreport + foreach($member in (($xmlreport.GPO.Computer.ExtensionData.Extension.UserRightsAssignment | Where-Object {$_.Name -eq 'SeSystemTimePrivilege'}).Member)){ + if($member.Name.'#text' -ne 'BUILTIN\$Administrators' -and $member.Name.'#text' -ne "$LocalService"){ + $ExcessiveDCTimePermissions = $true + Add-Content -Path "$outputdir\default_domain_controller_policy_audit.txt" -Value "SeSystemTimePrivilege $($member.Name.'#text')" + } + } + } + #Output for Default Domain Controllers Policy + if($ExcessiveDCInteractiveLogon -or $ExcessiveDCBackupPermissions -or $ExcessiveDCRestorePermissions -or $ExcessiveDCDriverPermissions -or $ExcessiveDCLocalShutdownPermissions -or $ExcessiveDCRemoteShutdownPermissions -or $ExcessiveDCTimePermissions -or $ExcessiveDCBatchLogonPermissions -or $ExcessiveDCRDPLogonPermissions){ + Write-Both " [!] Excessive permissions in Default Domain Controllers Policy detected!" + } +} +Function Get-RecentChanges(){#Retrieve users and groups that have been created during last 30 days + $DateCutOff = ((Get-Date).AddDays(-30)).Date + $newUsers = Get-ADUser -Filter {whenCreated -ge $DateCutOff} -Properties whenCreated | select whenCreated,SamAccountName + $newGroups = Get-ADGroup -Filter {whenCreated -ge $DateCutOff} -Properties whenCreated | select whenCreated,SamAccountName + $countUsers = 0 + $countGroups = 0 + $progresscountUsers = 0 + $progresscountGroups = 0 + $totalcountUsers = ($newUsers | Measure-Object | Select-Object Count).count + $totalcountGroups = ($newGroups | Measure-Object | Select-Object Count).count + if($totalcountUsers -gt 0){ + foreach($newUser in $newUsers ){Add-Content -Path "$outputdir\new_users.txt" -Value "Account $($newUser.SamAccountName) was created $($newUser.whenCreated)"} + Write-Both " [!] $totalcountUsers new users were created last 30 days, see $outputdir\new_users.txt" + } + if($totalcountGroups -gt 0){ + foreach($newGroup in $newGroups ){Add-Content -Path "$outputdir\new_groups.txt" -Value "Group $($newGroup.SamAccountName) was created $($newGroup.whenCreated)"} + Write-Both " [!] $totalcountGroups new groups were created last 30 days, see $outputdir\new_groups.txt" + } +} +Function Get-ReplicationType{#Retrieve replication mechanism (FRS or DFSR) + $objectName = "DFSR-GlobalSettings" + $searcher = [ADSISearcher] "(objectClass=msDFSR-GlobalSettings)" + $objectExists = $searcher.FindOne() -ne $null + if($objectExists){ + $DFSRFlags=(Get-ADObject -Identity "CN=DFSR-GlobalSettings,$((Get-ADDomain).systemscontainer)" -Properties msDFSR-Flags).'msDFSR-Flags' + switch($DFSRFlags){ + 0 { Write-Both " [!] Migration from FRS to DFSR is not finished. Current state: started!" } + 16 { Write-Both " [!] Migration from FRS to DFSR is not finished. Current state: prepared!" } + 32 { Write-Both " [!] Migration from FRS to DFSR is not finished. Current state: redirected!" } + 48 { Write-Both " [+] DFSR mechanism is used to replicate across domain controllers." } + } + }else{ + Write-Both " [!] FRS mechanism is still used to replicate across domain controllers, you should migrate to DFSR!" + } +} +Function Get-RecycleBinState {#Check if recycle bin is enabled + if((Get-ADOptionalFeature -Filter 'Name -eq "Recycle Bin Feature"').EnabledScopes){ + Write-Both " [+] Recycle Bin is enabled in the domain" + }else{ + Write-Both " [!] Recycle Bin is disabled in the domain, you should consider enabling it!" + } +} +Function Get-CriticalServicesStatus{#Check AD services status + Write-Both " [+] Checking services on all DCs" + $dcList = @() + (Get-ADDomainController -Filter *) | ForEach-Object{$dcList += $_.Name} + $objectName = "DFSR-GlobalSettings" + $searcher = [ADSISearcher] "(objectClass=msDFSR-GlobalSettings)" + $objectExists = $searcher.FindOne() -ne $null + if($objectExists){ + $services = @("dns","netlogon","kdc","w32time","ntds","dfsr") + }else{ + $services = @("dns","netlogon","kdc","w32time","ntds","ntfrs") + } + foreach($DC in $dcList){ + foreach($service in $services){ + $checkService = Get-Service $service -ComputerName $DC -ErrorAction SilentlyContinue + $serviceName = $checkService.Name + $serviceStatus = $checkService.Status + if(!($serviceStatus)){ + Write-Both " [!] Service $($service) cannot be checked on $DC!" + } + elseif($serviceStatus -ne "Running"){ + Write-Both " [!] Service $($service) is not running on $DC!" + } + } + } +} +Function Get-LastWUDate{#Check Windows update status and last install date + $dcList = @() + (Get-ADDomainController -Filter *) | ForEach-Object{$dcList+=$_.Name} + $lastMonth = (Get-Date).AddDays(-30) + Write-Both " [+] Checking Windows Update" + foreach($DC in $dcList){ + + $startMode = (Get-WmiObject -ComputerName $DC -Class Win32_Service -Property StartMode -Filter "Name='wuauserv'" -ErrorAction SilentlyContinue).StartMode + if(!($startMode)){ + Write-Both " [!] Windows Update service cannot be checked on $DC!" + } + elseif($startMode -eq "Disabled"){ + Write-Both " [!] Windows Update service is disabled on $DC!" + } + } + $progresscount = 0 + $totalcount = ($dcList | Measure-Object | Select-Object Count).count + foreach($DC in $dcList){ + if($totalcount -eq 0){ break } + Write-Progress -Activity "Searching for last Windows Update installation on all DCs..." -Status "Currently searching on $DC" -PercentComplete ($progresscount / $totalcount*100) + try{ + $lastHotfix = (Get-HotFix -ComputerName $DC | Where-Object {$_.InstalledOn -ne $null} | Sort-Object -Descending InstalledOn | Select-Object -First 1).InstalledOn + if($lastHotfix -lt $lastMonth){ + Write-Both " [!] Windows is not up to date on $DC, last install: $($lastHotfix)" + }else{ + Write-Both " [+] Windows is up to date on $DC, last install: $($lastHotfix)" + } + } + catch{ + Write-Both " [!] Cannot check last update date on $DC" + } + $progresscount++ + } + Write-Progress -Activity "Searching for last Windows Update installation on all DCs..." -Status "Ready" -Completed +} +Function Get-TimeSource {#Get NTP sync source + $dcList = @() + (Get-ADDomainController -Filter *) | ForEach-Object{$dcList += $_.Name} + Write-Both " [+] Checking NTP configuration" + foreach($DC in $dcList){ + $ntpSource = w32tm /query /source /computer:$DC + if($ntpSource -like '*0x800706BA*'){ + Write-Both " [+] Cannot get time source for $DC" + }else{ + Write-Both " [+] $DC is syncing time from $ntpSource" + } + } +} +Function Get-RODC{#Check for RODC + Write-Both " [+] Checking for Read Only DCs" + $ADs = Get-ADDomainController -Filter { Site -like "*" } + $ADs | ForEach-Object{ + if($_.IsReadOnly){ + Write-Both " [+] DC $($_.Name) is a RODC server!" + } + } +} +Function Install-Dependencies{#Install DSInternals + if($PSVersionTable.PSVersion.Major -ge 5){ + [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor + [Net.SecurityProtocolType]::Tls12 + $count = 0 + $totalcount = 3 + Write-Progress -Activity "Installing dependencies..." -Status "Currently installing NuGet Package Provider" -PercentComplete ($count / $totalcount*100) + if(!(Get-PackageProvider -ListAvailable -Name Nuget -ErrorAction SilentlyContinue)){ Install-PackageProvider -Name NuGet -Force | Out-Null } + $count++ + Write-Progress -Activity "Installing dependencies..." -Status "Currently adding PSGallery to trusted Repositories" -PercentComplete ($count / $totalcount*100) + if((Get-PSRepository -Name PSGallery).InstallationPolicy -eq "Untrusted"){ Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted } + $count++ + Write-Progress -Activity "Installing dependencies..." -Status "Currently installing module DSInternals" -PercentComplete ($count / $totalcount*100) + if(!(Get-Module -ListAvailable -Name DSInternals)){ Install-Module -Name DSInternals -Force } + Write-Progress -Activity "Installing dependencies..." -Status "Ready" -Completed + Import-Module DSInternals + }else{ + Write-Both " [!] PowerShell 5 or greater is needed, see https://www.microsoft.com/en-us/download/details.aspx?id=54616" + } +} +Function Remove-StringLatinCharacters{#Removes latin characters + PARAM ([string]$String) + [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($String)) +} +Function Get-PasswordQuality{#Use DSInternals to evaluate password quality + if(Get-Module -ListAvailable -Name DSInternals){ + $totalSite = (Get-ADObject -Filter {objectClass -like "site" } -SearchBase (Get-ADRootDSE).ConfigurationNamingContext | measure).Count + $count = 0 + Get-ADObject -Filter {objectClass -like "site" } -SearchBase (Get-ADRootDSE).ConfigurationNamingContext | ForEach-Object{ + if($_.Name -eq $(Remove-StringLatinCharacters $_.Name)){ $count++ } + } + if($count -ne $totalSite){ + Write-Both " [!] One or more site have illegal characters in their name, can't get password quality!" + }else{ + Get-ADReplAccount -All -Server $env:ComputerName -NamingContext $(Get-ADDomain | select -ExpandProperty DistinguishedName) | Test-PasswordQuality -IncludeDisabledAccounts | Out-File "$outputdir\password_quality.txt" + Write-Both " [!] Password quality test done, see $outputdir\password_quality.txt" + } + } +} +Function Check-Shares {#Check SYSVOL and NETLOGON share exists + $dcList = @() + (Get-ADDomainController -Filter *) | ForEach-Object{$dcList += $_.Name} + Write-Both " [+] Checking SYSVOL and NETLOGON shares on all DCs" + foreach($DC in $dcList){ + $shareList = (Get-WmiObject -Class Win32_Share -ComputerName $DC -ErrorAction SilentlyContinue) + if(!($shareList)){ + Write-Both " [!] Cannot test shares on $DC!" + }else{ + $sysvolShare = ($shareList | ?{$_ -match 'SYSVOL'} | measure).Count + $netlogonShare = ($shareList | ?{$_ -match 'NETLOGON'} | measure).Count + if($sysvolShare -eq 0){ Write-Both " [!] SYSVOL share is missing on $DC!" } + if($netlogonShare -eq 0){ Write-Both " [!] NETLOGON share is missing on $DC!" } + } + } +} + +$outputdir = (Get-Item -Path ".\").FullName + "\" + $env:computername +$starttime = Get-Date +$scriptname = $MyInvocation.MyCommand.Name +if(!(Test-Path "$outputdir")){ New-Item -ItemType Directory -Path $outputdir | Out-Null } +Write-Both " _____ ____ _____ _ _ _ +| _ | \ | _ |_ _ _| |_| |_ +| | | | | | | | . | | _| +|__|__|____/ |__|__|___|___|_|_| +$versionnum by phillips321 +" +$running=$false +Write-Both "[*] Script start time $starttime" +if(Get-Module -ListAvailable -Name ActiveDirectory){ Import-Module ActiveDirectory }else{ Write-Both "[!] ActiveDirectory module not installed, exiting..." ; exit } +if(Get-Module -ListAvailable -Name ServerManager) { Import-Module ServerManager }else{ Write-Both "[!] ServerManager module not installed, exiting..." ; exit } +if(Get-Module -ListAvailable -Name GroupPolicy) { Import-Module GroupPolicy }else{ Write-Both "[!] GroupPolicy module not installed, exiting..." ; exit } +if(Get-Module -ListAvailable -Name DSInternals) { Import-Module DSInternals }else{ Write-Both "[!] DSInternals module not installed, use -installdeps to force install" } +if(Test-Path "$outputdir\adaudit.nessus"){ Remove-Item -recurse "$outputdir\adaudit.nessus" | Out-Null } +Write-Nessus-Header +Write-Host "[+] Outputting to $outputdir" +Write-Both "[*] Lang specific variables" +Get-Variables +if($installdeps) { $running=$true ; Write-Both "[*] Installing optionnal features" ; Install-Dependencies } +if($hostdetails -or $all) { $running=$true ; Write-Both "[*] Device Information" ; Get-HostDetails } +if($domainaudit -or $all) { $running=$true ; Write-Both "[*] Domain Audit" ; Get-LastWUDate ; Get-DCEval ; Get-TimeSource ; Get-PrivilegedGroupMembership ; Get-MachineAccountQuota; Get-DefaultDomainControllersPolicy ; Get-SMB1Support ; Get-FunctionalLevel ; Get-DCsNotOwnedByDA ; Get-ReplicationType ; Check-Shares ; Get-RecycleBinState ; Get-CriticalServicesStatus ; Get-RODC } +if($trusts -or $all) { $running=$true ; Write-Both "[*] Domain Trust Audit" ; Get-DomainTrusts } +if($accounts -or $all) { $running=$true ; Write-Both "[*] Accounts Audit" ; Get-InactiveAccounts ; Get-DisabledAccounts ; Get-LockedAccounts ; Get-AdminAccountChecks ; Get-NULLSessions ; Get-PrivilegedGroupAccounts ; Get-ProtectedUsers } +if($passwordpolicy -or $all) { $running=$true ; Write-Both "[*] Password Information Audit" ; Get-AccountPassDontExpire ; Get-UserPasswordNotChangedRecently ; Get-PasswordPolicy ; Get-PasswordQuality } +if($ntds -or $all) { $running=$true ; Write-Both "[*] Trying to save NTDS.dit, please wait..." ; Get-NTDSdit } +if($oldboxes -or $all) { $running=$true ; Write-Both "[*] Computer Objects Audit" ; Get-OldBoxes } +if($gpo -or $all) { $running=$true ; Write-Both "[*] GPO audit (and checking SYSVOL for passwords)" ; Get-GPOtoFile ; Get-GPOsPerOU ; Get-SYSVOLXMLS; Get-GPOEnum } +if($ouperms -or $all) { $running=$true ; Write-Both "[*] Check Generic Group AD Permissions" ; Get-OUPerms } +if($laps -or $all) { $running=$true ; Write-Both "[*] Check For Existence of LAPS in domain" ; Get-LAPSStatus } +if($authpolsilos -or $all) { $running=$true ; Write-Both "[*] Check For Existence of Authentication Polices and Silos" ; Get-AuthenticationPoliciesAndSilos } +if($insecurednszone -or $all){ $running=$true ; Write-Both "[*] Check For Existence DNS Zones allowing insecure updates" ; Get-DNSZoneInsecure } +if($recentchanges -or $all) { $running=$true ; Write-Both "[*] Check For newly created users and groups" ; Get-RecentChanges } +if(!$running){ Write-Both "[!] No arguments selected" + Write-Both "[!] Other options are as follows, they can be used in combination" + Write-Both " -installdeps installs optionnal features (DSInternals)" + Write-Both " -hostdetails retrieves hostname and other useful audit info" + Write-Both " -domainaudit retrieves information about the AD such as functional level" + Write-Both " -trusts retrieves information about any doman trusts" + Write-Both " -accounts identifies account issues such as expired, disabled, etc..." + Write-Both " -passwordpolicy retrieves password policy information" + Write-Both " -ntds dumps the NTDS.dit file using ntdsutil" + Write-Both " -oldboxes identifies outdated OSs like 2000/2003/XP/Vista/7/2008 joined to the domain" + Write-Both " -gpo dumps the GPOs in XML and HTML for later analysis" + Write-Both " -ouperms checks generic OU permission issues" + Write-Both " -laps checks if LAPS is installed" + Write-Both " -authpolsilos checks for existence of authentication policies and silos" + Write-Both " -insecurednszone checks for insecure DNS zones" + Write-Both " -recentchanges checks for newly created users and groups (last 30 days)" + Write-Both " -all runs all checks, e.g. $scriptname -all" +} +Write-Nessus-Footer + +#Dirty fix for .nessus characters (will do this properly or as a function later. Will need more characters adding here...) +$originalnessusoutput = Get-Content $outputdir\adaudit.nessus +$nessusoutput = $originalnessusoutput -Replace "&", "&" +$nessusoutput = $nessusoutput -Replace "`“", """ +$nessusoutput = $nessusoutput -Replace "`'", "'" +$nessusoutput = $nessusoutput -Replace "ü", "u" +$nessusoutput | Out-File $outputdir\adaudit-replaced.nessus + +$endtime = Get-Date +Write-Both "[*] Script end time $endtime" \ No newline at end of file diff --git a/Active Directory/Audit.ps1 b/Active Directory/Audit.ps1 new file mode 100644 index 0000000..4baad61 --- /dev/null +++ b/Active Directory/Audit.ps1 @@ -0,0 +1,1658 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : 20/11/2022 + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER CompanyLogo + Enter URL or UNC path to your desired Company Logo for generated report. + + -CompanyLogo "https://www.fichorga.fr/images/logo-logiciel-fichorga.png" + +.PARAMETER ReportTitle + Enter desired title for generated report. + + -ReportTitle "Active Directory Report" + +.PARAMETER Days + Users that have not logged in within [X] amount of days. + + -Days "90" + +.PARAMETER UserCreatedDays + Users that have been created within [X] amount of days. + + -UserCreatedDays "15" + +.PARAMETER DaysUntilPWExpireINT + Users password expires within [X] amount of days + + -DaysUntilPWExpireINT "15" + +.PARAMETER ADModNumber + Active Directory Objects that have been modified within [X] amount of days. + + -ADModNumber "15" + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +param ( + #Company logo that will be displayed on the left, can be URL or UNC + [Parameter(ValueFromPipeline = $true, HelpMessage = "Entrez l'URL ou le chemin UNC vers le logo de l'entreprise")] + [String]$CompanyLogo = "https://www.fichorga.fr/images/logo-logiciel-fichorga.png", + #Logo that will be on the right side, UNC or URL + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Entrez le titre souhaité pour le rapport")] + [String]$ReportTitle = "Rapport Active Directory", + #Location the report will be saved to + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Entrez le chemin du répertoire souhaité pour enregistrer; Default: C:\Automation\")] + [String]$ReportSavePath = "C:\Automation\", + #Find users that have not logged in X Amount of days, this sets the days + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Les utilisateurs qui ne se sont pas connectés dans les [X] nombre de jours; Default: 90")] + $Days = 90, + #Get users who have been created in X amount of days and less + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Les utilisateurs qui ont été créés dans [X] nombre de jours; Default: 15")] + $UserCreatedDays = 15, + #Get users whos passwords expire in less than X amount of days + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Le mot de passe de l'utilisateur expire dans un délai de [X] nombre de jours; Default: 15")] + $DaysUntilPWExpireINT = 15, + #Get AD Objects that have been modified in X days and newer + + [Parameter(ValueFromPipeline = $true, HelpMessage = "Les objets AD qui ont été modifiés dans [X] nombre de jours; Default: 15")] + $ADModNumber =15 + + #CSS template located C:\Program Files\WindowsPowerShell\Modules\ReportHTML\1.4.1.1\ + #Default template is orange and named "Sample" +) + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +$Minute = (Get-Date).Minute +$Hour = (Get-Date).Hour +$Day = (Get-Date).Day +$Month = (Get-Date).Month +$Year = (Get-Date).Year + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +Function LastLogonConvert ($ftDate) { + $Date = [DateTime]::FromFileTime($ftDate) + If ($Date -lt (Get-Date '1/1/1900') -or $date -eq 0 -or $date -eq $null) { + "Never" + } + Else { + $Date + } + +} + +Function Write-Color([String[]]$Text, [ConsoleColor[]]$Color = "White", [int]$StartTab = 0, [int] $LinesBefore = 0,[int] $LinesAfter = 0, [string] $LogFile = "", $TimeFormat = "yyyy-MM-dd HH:mm:ss") { + + $DefaultColor = $Color[0] + + If ($LinesBefore -ne 0) { for ($i = 0; $i -lt $LinesBefore; $i++) { Write-Host "`n" -NoNewline } } # Add empty line before + + If ($StartTab -ne 0) { for ($i = 0; $i -lt $StartTab; $i++) { Write-Host "`t" -NoNewLine } } # Add TABS before text + + If ($Color.Count -ge $Text.Count) { + For ($i = 0; $i -lt $Text.Length; $i++) { Write-Host $Text[$i] -ForegroundColor $Color[$i] -NoNewLine } + } + Else { + For ($i = 0; $i -lt $Color.Length ; $i++) { Write-Host $Text[$i] -ForegroundColor $Color[$i] -NoNewLine } + For ($i = $Color.Length; $i -lt $Text.Length; $i++) { Write-Host $Text[$i] -ForegroundColor $DefaultColor -NoNewLine } + } + + Write-Host + If ($LinesAfter -ne 0) { for ($i = 0; $i -lt $LinesAfter; $i++) { Write-Host "`n" } } # Add empty line after + If ($LogFile -ne "") { + $TextToFile = "" + For ($i = 0; $i -lt $Text.Length; $i++) { + $TextToFile += $Text[$i] + } + Write-Output "[$([datetime]::Now.ToString($TimeFormat))]$TextToFile" | Out-File $LogFile -Encoding unicode -Append + } +} + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +Clear-Host + +#Check for ReportHTML Module +$Mod = Get-Module -ListAvailable -Name "ReportHTML" + +If ($null -eq $Mod) { + Write-Host "Le module ReportHTML n'est pas présent, tentative d'installation." + + Install-Module -Name ReportHTML -Force + Import-Module ReportHTML -ErrorAction SilentlyContinue +} + +Write-host "`n" +Write-Color "Personnalisation des rapports de collecte ..." -Color White +Write-host "`n" +Write-Color "__________________________________________________________________________________" -Color White +Write-Color "Logo de l'entreprise (gauche) : __________________________________________________ ", $CompanyLogo -Color White, Green +Write-Color "Titre du rapport : _______________________________________________________________ ", $ReportTitle -Color White, Green +Write-Color "Chemin de sauvegarde du rapport : ________________________________________________ ", $ReportSavePath -Color White, Green +Write-Color "Rapport sur le nombre de jours depuis la dernière connexion de l'utilisateur : ___ ", $Days -Color White, Green +Write-Color "Nombre de jours pour la création de nouveaux utilisateurs : ______________________ ", $UserCreatedDays -Color White, Green +Write-Color "Nombre de jours pour l'expiration du mot de passe : ______________________________ ", $DaysUntilPWExpireINT -Color White, Green +Write-Color "Nombre de jours pour les objets AD nouvellement modifiés : _______________________ ", $ADModNumber -Color White, Green +Write-Color "__________________________________________________________________________________" -Color White + +#Array of default Security Groups +$DefaultSGs = @( + "Opérateurs d’assistance Access Control" + "Opérateurs de compte" + "Administrateurs" + "Réplication de mot de passe RODC autorisée" + "Opérateurs de sauvegarde" + "Accès DCOM au service de certificats" + "Éditeurs de certificats" + "Contrôleurs de domaine clonables" + "Opérateurs de chiffrement" + "Réplication de mot de passe RODC refusée" + "Propriétaires d’appareils" + "Administrateurs DHCP" + "Utilisateurs DHCP" + "Utilisateurs du modèle COM distribué" + "DnsUpdateProxy" + "DnsAdmins" + "Administrateurs du domaine" + "Ordinateurs de domaine" + "Contrôleurs de domaine" + "Invités de domaine" + "Utilisateurs du domaine" + "Administrateurs de l’entreprise" + "Enterprise Key Admins" + "Contrôleurs de domaine d’entreprise en lecture seule" + "Lecteurs des journaux d’événements" + "Propriétaires créateurs de la stratégie de groupe" + "Invités" + "Administrateurs Hyper-V" + "IIS_IUSRS" + "Générateurs d’approbation de forêt entrante" + "Administrateurs de clés" + "Opérateurs de configuration réseau" + "Utilisateurs du journal des performances" + "Utilisateurs de l’Analyseur de performances" + "Accès pré-Windows 2000 compatible" + "Opérateurs d'impression" + "Utilisateurs protégés" + "Serveurs RAS et IAS" + "Serveurs de points de terminaison..." + "Serveurs d’administration RDS" + "Serveurs d’accès à distance RDS" + "Contrôleurs de domaine en lecture seule" + "Utilisateurs du Bureau à distance" + "Utilisateurs de gestion à distance" + "Duplicateur" + "Administrateurs du schéma" + "Opérateurs de serveur" + "Administrateurs de réplica de stockage" + "Comptes gérés par le système" + "Serveurs de licences Terminal Server" + "Utilisateurs" + "Accès à l’autorisation Windows" + "WinRMRemoteWMIUsers_" +) + +$Table = New-Object 'System.Collections.Generic.List[System.Object]' +$OUTable = New-Object 'System.Collections.Generic.List[System.Object]' +$UserTable = New-Object 'System.Collections.Generic.List[System.Object]' +$UserPasswordTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GroupTypetable = New-Object 'System.Collections.Generic.List[System.Object]' +$DefaultGrouptable = New-Object 'System.Collections.Generic.List[System.Object]' +$EnabledDisabledUsersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$DomainAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ExpiringAccountsTable = New-Object 'System.Collections.Generic.List[System.Object]' +$CompanyInfoTable = New-Object 'System.Collections.Generic.List[System.Object]' +$securityeventtable = New-Object 'System.Collections.Generic.List[System.Object]' +$DomainTable = New-Object 'System.Collections.Generic.List[System.Object]' +$OUGPOTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GroupMembershipTable = New-Object 'System.Collections.Generic.List[System.Object]' +$PasswordExpirationTable = New-Object 'System.Collections.Generic.List[System.Object]' +$PasswordExpireSoonTable = New-Object 'System.Collections.Generic.List[System.Object]' +$userphaventloggedonrecentlytable = New-Object 'System.Collections.Generic.List[System.Object]' +$EnterpriseAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$NewCreatedUsersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GroupProtectionTable = New-Object 'System.Collections.Generic.List[System.Object]' +$OUProtectionTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GPOTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ADObjectTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ProtectedUsersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ComputersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ComputerProtectedTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ComputersEnabledTable = New-Object 'System.Collections.Generic.List[System.Object]' +$DefaultComputersinDefaultOUTable = New-Object 'System.Collections.Generic.List[System.Object]' +$DefaultUsersinDefaultOUTable = New-Object 'System.Collections.Generic.List[System.Object]' +$TOPUserTable = New-Object 'System.Collections.Generic.List[System.Object]' +$TOPGroupsTable = New-Object 'System.Collections.Generic.List[System.Object]' +$TOPComputersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GraphComputerOS = New-Object 'System.Collections.Generic.List[System.Object]' + +#Get all users right away. Instead of doing several lookups, we will use this object to look up all the information needed. +$AllUsers = Get-ADUser -Filter * -Properties * + +$GPOs = Get-GPO -All | Select-Object DisplayName, GPOStatus, ModificationTime, @{ Label = "ComputerVersion"; Expression = { $_.computer.dsversion } }, @{ Label = "UserVersion"; Expression = { $_.user.dsversion } } + +<########################### + Dashboard +############################> +Write-Host "Analyse sur le rapport du tableau de bord ........................................ " -ForegroundColor Green -NoNewline + +$dte = (Get-Date).AddDays(- $ADModNumber) + +$ADObjs = Get-ADObject -Filter { whenchanged -gt $dte -and ObjectClass -ne "domainDNS" -and ObjectClass -ne "rIDManager" -and ObjectClass -ne "rIDSet" } -Properties * +$Compteur = 0 + +Foreach ($ADObj in $ADObjs) { + $Compteur++ + Write-Progress -Id 0 -Activity "Analyse : " -Status "Processing $($Compteur) of $($ADObjs.count)" -CurrentOperation $ADObj -PercentComplete (($Compteur / $ADObjs.count) * 100) + + If ($ADObj.ObjectClass -eq "GroupPolicyContainer") { + $Name = $ADObj.DisplayName + } + Else{ + $Name = $ADObj.Name + } + + $obj = [PSCustomObject]@{ + "Name" = $Name + "Type Object" = $ADObj.ObjectClass + "Date changement" = $ADObj.WhenChanged + } + $ADObjectTable.Add($obj) +} + +$ADRecycleBinStatus = (Get-ADOptionalFeature -Filter 'name -like "Recycle Bin Feature"').EnabledScopes + +If ($ADRecycleBinStatus.Count -lt 1) { + $ADRecycleBin = "Desactive" +} +Else { + $ADRecycleBin = "Actif" +} + +#Company Information +$ADInfo = Get-ADDomain +$ForestObj = Get-ADForest +$DomainControllerobj = Get-ADDomain +$Forest = $ADInfo.Forest +$InfrastructureMaster = $DomainControllerobj.InfrastructureMaster +$RIDMaster = $DomainControllerobj.RIDMaster +$PDCEmulator = $DomainControllerobj.PDCEmulator +$DomainNamingMaster = $ForestObj.DomainNamingMaster +$SchemaMaster = $ForestObj.SchemaMaster + +$obj = [PSCustomObject]@{ + "Domaine" = $Forest + "Corbeille AD" = $ADRecycleBin + "Maitre de l'infrastructure" = $InfrastructureMaster + "Maitre RID" = $RIDMaster + "Emulateur PDC" = $PDCEmulator + "Maitre des noms de domaine" = $DomainNamingMaster + "Maitre Schema" = $SchemaMaster +} + +$CompanyInfoTable.Add($obj) + +#Get newly created users +$When = ((Get-Date).AddDays(- $UserCreatedDays)).Date +$NewUsers = $AllUsers | Where-Object { $_.whenCreated -ge $When } + +Foreach ($Newuser in $Newusers) { + $obj = [PSCustomObject]@{ + "Name" = $Newuser.Name + "Actif" = $Newuser.Enabled + "Date creation" = $Newuser.whenCreated + } + $NewCreatedUsersTable.Add($obj) +} + +#Get Domain Admins +$DomainAdminMembers = Get-ADGroupMember "Admins du domaine" + +Foreach ($DomainAdminMember in $DomainAdminMembers) { + $Name = $DomainAdminMember.Name + $Type = $DomainAdminMember.ObjectClass + $Enabled = ($AllUsers | Where-Object { $_.Name -eq $Name }).Enabled + + $obj = [PSCustomObject]@{ + "Name" = $Name + "Actif" = $Enabled + "Type" = $Type + } + $DomainAdminTable.Add($obj) +} + +#Get Enterprise Admins +$EnterpriseAdminsMembers = Get-ADGroupMember "Administrateurs de l’entreprise" + +If (($EnterpriseAdminsMembers).Count -eq 0) { + $EnterpriseAdminsMember = [PSCustomObject]@{ + Information = "Informations : Aucun utilisateur n'a ete trouve dans le groupe Administrateurs de l’entreprise" + } +} +Else { + Foreach ($EnterpriseAdminsMember in $EnterpriseAdminsMembers) { + $Name = $EnterpriseAdminsMember.Name + $Type = $EnterpriseAdminsMember.ObjectClass + $Enabled = ($AllUsers | Where-Object { $_.Name -eq $Name }).Enabled + + $obj = [PSCustomObject]@{ + "Name" = $Name + "Actif" = $Enabled + "Type" = $Type + } + $EnterpriseAdminTable.Add($obj) + } +} + +$DefaultComputersOU = (Get-ADDomain).computerscontainer +$DefaultComputers = Get-ADComputer -Filter * -Properties * -SearchBase "$DefaultComputersOU" + +Foreach ($DefaultComputer in $DefaultComputers) { + $obj = [PSCustomObject]@{ + "Name" = $DefaultComputer.Name + "Actif" = $DefaultComputer.Enabled + "Systeme d'exploitation" = $DefaultComputer.OperatingSystem + "Date modification" = $DefaultComputer.Modified + "Dernier mot de passe defini" = $DefaultComputer.PasswordLastSet + "Protege contre la suppression" = $DefaultComputer.ProtectedFromAccidentalDeletion + } + $DefaultComputersinDefaultOUTable.Add($obj) +} + +$DefaultUsersOU = (Get-ADDomain).UsersContainer +$DefaultUsers = $Allusers | Where-Object { $_.DistinguishedName -like "*$($DefaultUsersOU)" } | Select-Object Name, UserPrincipalName, Enabled, ProtectedFromAccidentalDeletion, EmailAddress, @{ Name = 'lastlogon'; Expression = { LastLogonConvert $_.lastlogon } }, DistinguishedName + +Foreach ($DefaultUser in $DefaultUsers) { + $obj = [PSCustomObject]@{ + "Name" = $DefaultUser.Name + "UserPrincipalName" = $DefaultUser.UserPrincipalName + "Actif" = $DefaultUser.Enabled + "Protege contre la suppression" = $DefaultUser.ProtectedFromAccidentalDeletion + "Derniere connexion" = $DefaultUser.LastLogon + "Adresse mail" = $DefaultUser.EmailAddress + } + $DefaultUsersinDefaultOUTable.Add($obj) +} + +#Expiring Accounts +$LooseUsers = Search-ADAccount -AccountExpiring -UsersOnly + +Foreach ($LooseUser in $LooseUsers) { + $NameLoose = $LooseUser.Name + $UPNLoose = $LooseUser.UserPrincipalName + $ExpirationDate = $LooseUser.AccountExpirationDate + $enabled = $LooseUser.Enabled + + $obj = [PSCustomObject]@{ + "Name" = $NameLoose + "UserPrincipalName" = $UPNLoose + "Date expiration" = $ExpirationDate + "Actif" = $enabled + } + $ExpiringAccountsTable.Add($obj) +} + +If (($ExpiringAccountsTable).Count -eq 0) { + $ExpiringAccountsTable = [PSCustomObject]@{ + Information = "Informations : Aucun utilisateur n'expire bientot" + } +} + +#Analyse journaux audti sécurité +$SecurityLogs = Get-EventLog -Newest 7 -LogName "Security" | Where-Object { $_.Message -like "*An account*" } + +Foreach ($SecurityLog in $SecurityLogs) { + $TimeGenerated = $SecurityLog.TimeGenerated + $EntryType = $SecurityLog.EntryType + $Recipient = $SecurityLog.Message + + $obj = [PSCustomObject]@{ + "Time" = $TimeGenerated + "Type" = $EntryType + "Message" = $Recipient + } + $SecurityEventTable.Add($obj) +} + +If (($securityeventtable).Count -eq 0) { + $securityeventtable = [PSCustomObject]@{ + Information = "Informations : Aucun journal de securite recent" + } +} + +#Tenant Domain +$Domains = Get-ADForest | Select-Object -ExpandProperty upnsuffixes | ForEach-Object{ + $obj = [PSCustomObject]@{ + "UPN Suffixes" = $_ + Valid = "True" + } + $DomainTable.Add($obj) +} + +Write-Host "Terminé !" -ForegroundColor White + +Write-Progress -Id 0 -Activity "Analyse : " -completed + +<########################### + Groups +############################> +Write-Host "Rapport sur les groupes .......................................................... " -ForegroundColor Green -NoNewline + +#Get groups and sort in alphabetical order +$Groups = Get-ADGroup -Filter * -Properties * +$SecurityCount = 0 +$MailSecurityCount = 0 +$CustomGroup = 0 +$DefaultGroup = 0 +$Groupswithmemebrship = 0 +$Groupswithnomembership = 0 +$GroupsProtected = 0 +$GroupsNotProtected = 0 +$Compteur = 0 + +Foreach ($Group in $Groups) { + $Compteur++ + Write-Progress -Id 1 -Activity "Analyse : " -Status "Processing $($Compteur) of $($Groups.count)" -CurrentOperation $Group -PercentComplete (($Compteur / $Groups.count) * 100) + $DefaultADGroup = 'False' + $Type = New-Object 'System.Collections.Generic.List[System.Object]' + $Gemail = (Get-ADGroup $Group -Properties mail).mail + + If (($group.GroupCategory -eq "Security") -and ($Gemail -ne $Null)) { + $MailSecurityCount++ + } + + If (($group.GroupCategory -eq "Security") -and (($Gemail) -eq $Null)) { + $SecurityCount++ + } + + If ($Group.ProtectedFromAccidentalDeletion -eq $True) { + $GroupsProtected++ + } + Else { + $GroupsNotProtected++ + } + + If ($DefaultSGs -contains $Group.Name) { + $DefaultADGroup = "True" + $DefaultGroup++ + } + Else { + $CustomGroup++ + } + + If ($group.GroupCategory -eq "Distribution") { + $Type = "Groupe de distribution" + } + + If (($group.GroupCategory -eq "Security") -and (($Gemail) -eq $Null)) { + $Type = "Groupe de securite" + } + + If (($group.GroupCategory -eq "Security") -and (($Gemail) -ne $Null)) { + $Type = "Groupe de securite active par courrier" + } + + If ($Group.Name -ne "Domain Users") { + $Users = (Get-ADGroupMember -Identity $Group | Sort-Object DisplayName | Select-Object -ExpandProperty Name) -join ", " + + If (!($Users)) { + $Groupswithnomembership++ + } + Else { + $Groupswithmemebrship++ + } + } + Else { + $Users = "Skipped Domain Users Membership" + } + + $OwnerDN = Get-ADGroup -Filter { name -eq $Group.Name } -Properties managedBy | Select-Object -ExpandProperty ManagedBy + $Manager = $AllUsers | Where-Object { $_.distinguishedname -eq $OwnerDN } | Select-Object -ExpandProperty Name + + $obj = [PSCustomObject]@{ + "Name" = $Group.name + "Type" = $Type + "Membres" = $users + "Gere par" = $Manager + "Adresse mail" = $GEmail + "Protege contre la suppression" = $Group.ProtectedFromAccidentalDeletion + "Default AD Groupe" = $DefaultADGroup + } + $table.Add($obj) +} + +If (($table).Count -eq 0) { + $table = [PSCustomObject]@{ + Information = "Information : Aucun groupe n'a ete trouve" + } +} + +#TOP groups table +$obj1 = [PSCustomObject]@{ + "Total Groupes" = $Groups.Count + "Groupes de securite compatibles avec la messagerie" = $MailSecurityCount + "Groupes de securite" = $SecurityCount + "Groupes de distribution" = $DistroCount +} + +$TOPGroupsTable.Add($obj1) + +$obj1 = [PSCustomObject]@{ + 'Name' = "Groupes de securite compatibles avec la messagerie" + 'Count' = $MailSecurityCount +} + +$GroupTypetable.Add($obj1) + +$obj1 = [PSCustomObject]@{ + 'Name' = "Groupes de securite" + 'Count' = $SecurityCount +} + +$GroupTypetable.Add($obj1) +$DistroCount = ($Groups | Where-Object { $_.GroupCategory -eq "Distribution" }).Count + +$obj1 = [PSCustomObject]@{ + 'Name' = "Groupes de distribution" + 'Count' = $DistroCount +} + +$GroupTypetable.Add($obj1) + +#Default Group Pie Chart +$obj1 = [PSCustomObject]@{ + 'Name' = "Groupes par defaut" + 'Count' = $DefaultGroup +} + +$DefaultGrouptable.Add($obj1) + +$obj1 = [PSCustomObject]@{ + 'Name' = "Groupes personnalises" + 'Count' = $CustomGroup +} + +$DefaultGrouptable.Add($obj1) + +#Group Protection Pie Chart +$obj1 = [PSCustomObject]@{ + 'Name' = "Protege" + 'Count' = $GroupsProtected +} + +$GroupProtectionTable.Add($obj1) + +$obj1 = [PSCustomObject]@{ + 'Name' = "Non Protege" + 'Count' = $GroupsNotProtected +} + +$GroupProtectionTable.Add($obj1) + +#Groups with membership vs no membership pie chart +$objmem = [PSCustomObject]@{ + 'Name' = "Avec les membres" + 'Count' = $Groupswithmemebrship +} + +$GroupMembershipTable.Add($objmem) + +$objmem = [PSCustomObject]@{ + 'Name' = "Aucun membre" + 'Count' = $Groupswithnomembership +} + +$GroupMembershipTable.Add($objmem) + +Write-Host "Terminé !" -ForegroundColor White + +Write-Progress -Id 1 -Activity "Analyse : " -completed + +<########################### + Organizational Units +############################> +Write-Host "Analyse sur le rapport sur les unités organisation ............................... " -ForegroundColor Green -NoNewline + +#Get all OUs' +$OUs = Get-ADOrganizationalUnit -Filter * -Properties * +$OUwithLinked = 0 +$OUwithnoLink = 0 +$OUProtected = 0 +$OUNotProtected = 0 +$Compteur = 0 + +Foreach ($OU in $OUs) { + $Compteur++ + Write-Progress -Id 2 -Activity "Analyse : " -Status "Processing $($Compteur) of $($OUs.count)" -CurrentOperation $OU -PercentComplete (($Compteur / $OUs.count) * 100) + $LinkedGPOs = New-Object 'System.Collections.Generic.List[System.Object]' + + If (($OU.linkedgrouppolicyobjects).length -lt 1) { + $LinkedGPOs = "None" + $OUwithnoLink++ + } + Else { + $OUwithLinked++ + $GPOslinks = $OU.linkedgrouppolicyobjects + + Foreach ($GPOlink in $GPOslinks) { + $Split1 = $GPOlink -split "{" | Select-Object -Last 1 + $Split2 = $Split1 -split "}" | Select-Object -First 1 + $LinkedGPOs.Add((Get-GPO -Guid $Split2 -ErrorAction SilentlyContinue).DisplayName) + } + } + + If ($OU.ProtectedFromAccidentalDeletion -eq $True) { + $OUProtected++ + } + Else { + $OUNotProtected++ + } + + $LinkedGPOs = $LinkedGPOs -join ", " + $obj = [PSCustomObject]@{ + "Name" = $OU.Name + "Linked GPOs" = $LinkedGPOs + "Date modification" = $OU.WhenChanged + "Protege contre la suppression" = $OU.ProtectedFromAccidentalDeletion + } + $OUTable.Add($obj) +} + +If (($OUTable).Count -eq 0) { + $OUTable = [PSCustomObject]@{ + Information = "Information : Aucune unite organisationnelle n'a ete trouvee" + } +} + +#OUs with no GPO Linked +$obj1 = [PSCustomObject]@{ + 'Name' = "OU sans GPOs lies" + 'Count' = $OUwithnoLink +} + +$OUGPOTable.Add($obj1) + +$obj2 = [PSCustomObject]@{ + 'Name' = "OU avec GPO's lies" + 'Count' = $OUwithLinked +} + +$OUGPOTable.Add($obj2) + +#OUs Protected Pie Chart +$obj1 = [PSCustomObject]@{ + 'Name' = "Protege" + 'Count' = $OUProtected +} + +$OUProtectionTable.Add($obj1) + +$obj2 = [PSCustomObject]@{ + 'Name' = "Non protege" + 'Count' = $OUNotProtected +} + +$OUProtectionTable.Add($obj2) + +Write-Host "Terminé !" -ForegroundColor White + +Write-Progress -Id 2 -Activity "Analyse : " -completed + +<########################### + USERS +############################> +Write-Host "Analyse sur le rapport des utilisateurs .......................................... " -ForegroundColor Green -NoNewline + +$UserEnabled = 0 +$UserDisabled = 0 +$UserPasswordExpires = 0 +$UserPasswordNeverExpires = 0 +$ProtectedUsers = 0 +$NonProtectedUsers = 0 +$Compteur = 0 + +$UsersWithPasswordsExpiringInUnderAWeek = 0 +$UsersNotLoggedInOver30Days = 0 +$AccountsExpiringSoon = 0 + +Foreach ($User in $AllUsers) { + $Compteur++ + Write-Progress -Id 3 -Activity "Analyse : " -Status "Processing $($Compteur) of $($AllUsers.count)" -CurrentOperation $User -PercentComplete (($Compteur / $AllUsers.count) * 100) + + $AttVar = $User | Select-Object Enabled, PasswordExpired, PasswordLastSet, PasswordNeverExpires, PasswordNotRequired, Name, SamAccountName, EmailAddress, AccountExpirationDate, @{ Name = 'lastlogon'; Expression = { LastLogonConvert $_.lastlogon } }, DistinguishedName + $maxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge + + If ((($AttVar.PasswordNeverExpires) -eq $False) -and (($AttVar.Enabled) -ne $false)) { + #Get Password last set date + $passwordSetDate = ($User | ForEach-Object { $_.PasswordLastSet }) + + If ($null -eq $passwordSetDate) { + $daystoexpire = "Utilisateur ne s'est jamais connecte" + } + Else { + #Check for Fine Grained Passwords + $PasswordPol = (Get-ADUserResultantPasswordPolicy $user) + + If (($PasswordPol) -ne $null) { + $maxPasswordAge = ($PasswordPol).MaxPasswordAge + } + + $expireson = $passwordsetdate + $maxPasswordAge + $today = (Get-Date) + + #Gets the count on how many days until the password expires and stores it in the $daystoexpire var + $daystoexpire = (New-TimeSpan -Start $today -End $Expireson).Days + } + } + Else { + $daystoexpire = "N/A" + } + + #Get users that haven't logged on in X amount of days, var is set at start of script + If (($User.Enabled -eq $True) -and ($User.LastLogonDate -lt (Get-Date).AddDays(- $Days)) -and ($User.LastLogonDate -ne $NULL)) { + $obj = [PSCustomObject]@{ + "Name" = $User.Name + "UserPrincipalName" = $User.UserPrincipalName + "Actif" = $AttVar.Enabled + "Protege contre la suppression" = $User.ProtectedFromAccidentalDeletion + "Derniere connexion" = $AttVar.lastlogon + "Mot de passe n'expire jamais" = $AttVar.PasswordNeverExpires + "Jours avant l'expiration du mot de passe" = $daystoexpire + } + $userphaventloggedonrecentlytable.Add($obj) + } + + If (($userphaventloggedonrecentlytable).Count -eq 0) { + $userphaventloggedonrecentlytable = [PSCustomObject]@{ + Information = "Information : Aucun utilisateur n'a ete trouve comme n'ayant pas ete connecte en $Days jours" + } + } + + #Items for protected vs non protected users + If ($User.ProtectedFromAccidentalDeletion -eq $False) { + $NonProtectedUsers++ + } + Else { + $ProtectedUsers++ + } + + #Items for the enabled vs disabled users pie chart + If (($AttVar.PasswordNeverExpires) -ne $false) { + $UserPasswordNeverExpires++ + } + Else { + $UserPasswordExpires++ + } + + #Items for password expiration pie chart + If (($AttVar.Enabled) -ne $false) { + $UserEnabled++ + } + Else { + $UserDisabled++ + } + + $Name = $User.Name + $UPN = $User.UserPrincipalName + $Enabled = $AttVar.Enabled + $EmailAddress = $AttVar.EmailAddress + $AccountExpiration = $AttVar.AccountExpirationDate + $PasswordExpired = $AttVar.PasswordExpired + $PasswordLastSet = $AttVar.PasswordLastSet + $PasswordNeverExpires = $AttVar.PasswordNeverExpires + $daysUntilPWExpire = $daystoexpire + + $obj = [PSCustomObject]@{ + "Name" = $Name + "UserPrincipalName" = $UPN + "Actif" = $Enabled + "Protege contre la suppression" = $User.ProtectedFromAccidentalDeletion + "Derniere connexion" = $LastLogon + "Adresse mail " = $EmailAddress + "Expiration du compte" = $AccountExpiration + "Changer du mot de passe Prochaine" = $PasswordExpired + "Dernier mot de passe defini" = $PasswordLastSet + "Mot de passe n'expire jamais" = $PasswordNeverExpires + "Jours avant l'expiration du mot de passe" = $daystoexpire + } + + $usertable.Add($obj) + + If ($daystoexpire -lt $DaysUntilPWExpireINT) { + $obj = [PSCustomObject]@{ + 'Name' = $Name + "Jours avant l'expiration du mot de passe" = $daystoexpire + } + $PasswordExpireSoonTable.Add($obj) + } +} + +If (($usertable).Count -eq 0) { + $usertable = [PSCustomObject]@{ + Information = "Information : Aucun utilisateur n'a ete trouve" + } +} + +#Data for users enabled vs disabled pie graph +$objULic = [PSCustomObject]@{ + 'Name' = "Actif" + 'Count' = $UserEnabled +} + +$EnabledDisabledUsersTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + 'Name' = "Desactiver" + 'Count' = $UserDisabled +} + +$EnabledDisabledUsersTable.Add($objULic) + +#Data for users password expires pie graph +$objULic = [PSCustomObject]@{ + 'Name' = "Expiration du mot de passe" + 'Count' = $UserPasswordExpires +} + +$PasswordExpirationTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + 'Name' = "Le mot de passe n'expire jamais" + 'Count' = $UserPasswordNeverExpires +} + +$PasswordExpirationTable.Add($objULic) + +#Data for protected users pie graph +$objULic = [PSCustomObject]@{ + 'Name' = "Protege" + 'Count' = $ProtectedUsers +} + +$ProtectedUsersTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + 'Name' = "Non protege" + 'Count' = $NonProtectedUsers +} + +$ProtectedUsersTable.Add($objULic) + +#TOP User table +If (($ExpiringAccountsTable).Count -gt 0) { + $objULic = [PSCustomObject]@{ + "Total des utilisateurs" = $AllUsers.Count + "Utilisateurs dont les mots de passe expirent dans moins de $DaysUntilPWExpireINT jours" = $PasswordExpireSoonTable.Count + "Comptes arrivant a expiration" = $ExpiringAccountsTable.Count + "Utilisateurs non connectes depuis $Days jours" = $userphaventloggedonrecentlytable.Count + } + $TOPUserTable.Add($objULic) +} +Else { + $objULic = [PSCustomObject]@{ + "Total des utilisateurs" = $AllUsers.Count + "Utilisateurs dont les mots de passe expirent dans moins de $DaysUntilPWExpireINT jours" = $PasswordExpireSoonTable.Count + "Comptes arrivant a expiration" = "0" + "Utilisateurs non connectes depuis $Days jours" = $userphaventloggedonrecentlytable.Count + } + $TOPUserTable.Add($objULic) +} + +#Get-ADReplAccount -All -Server $env:ComputerName -NamingContext $(Get-ADDomain | select -ExpandProperty DistinguishedName) | Test-PasswordQuality -IncludeDisabledAccounts + + +Write-Host "Terminé !" -ForegroundColor White + +Write-Progress -Id 3 -Activity "Done" -completed + +<########################### + Group Policy Object +############################> +Write-Host "Rapport sur les GPOs ............................................................. " -ForegroundColor Green -NoNewline + +$Compteur = 0 + +$GPOTable = New-Object 'System.Collections.Generic.List[System.Object]' + +Foreach ($GPO in $GPOs) { + $Compteur++ + Write-Progress -Id 4 -Activity "Analyse : " -Status "Processing $($Compteur) of $($GPOs.count)" -CurrentOperation $GPO -PercentComplete (($Compteur / $GPOs.count) * 100) + + $obj = [PSCustomObject]@{ + "Name" = $GPO.DisplayName + "Status" = $GPO.GpoStatus + "Date modification" = $GPO.ModificationTime + "User Version" = $GPO.UserVersion + "Computer Version" = $GPO.ComputerVersion + } + + $GPOTable.Add($obj) +} +Write-Host "Terminé !" -ForegroundColor White + +Write-Progress -Id 4 -Activity "Done" -completed + +<########################### + Computers +############################> +Write-Host "Rapport sur le travail sur ordinateur ............................................ " -ForegroundColor Green -NoNewline + +$Computers = Get-ADComputer -Filter * -Properties * +$ComputersProtected = 0 +$ComputersNotProtected = 0 +$ComputerEnabled = 0 +$ComputerDisabled = 0 +$Server2022 = 0 +$Server2019 = 0 +$Server2016 = 0 +$Server2012 = 0 +$Server2012R2 = 0 +$Server2008R2 = 0 +$Windows11 = 0 +$Windows10 = 0 +$Windows8 = 0 +$Windows7 = 0 +$Server2012R2 = 0 +$Compteur = 0 + +Foreach ($Computer in $Computers) { + $Compteur++ + Write-Progress -Id 5 -Activity "Analyse : " -Status "Processing $($Compteur) of $($Computers.count)" -CurrentOperation $Computer -PercentComplete (($Compteur / $Computers.count) * 100) + + If ($Computer.ProtectedFromAccidentalDeletion -eq $True) { + $ComputersProtected++ + } + Else { + $ComputersNotProtected++ + } + + If ($Computer.Enabled -eq $True) { + $ComputerEnabled++ + } + Else { + $ComputerDisabled++ + } + + $obj = [PSCustomObject]@{ + "ComputerName" = $Computer.Name + "Actif" = $Computer.Enabled + "Systeme d'exploitation" = $Computer.OperatingSystem + "Description" = $Computer.Description + "Date modification" = $Computer.Modified + "Date dernier mot de passe defini" = $Computer.PasswordLastSet + "Protege contre la suppression" = $Computer.ProtectedFromAccidentalDeletion + } + + $ComputersTable.Add($obj) + + If ($Computer.OperatingSystem -like "*Server 2022*") { + $Server2022++ + } + Elseif ($Computer.OperatingSystem -like "*Server 2019*") { + $Server2019++ + } + Elseif ($Computer.OperatingSystem -like "*Server 2016*") { + $Server2016++ + } + Elseif ($Computer.OperatingSystem -like "*Server 2012 R2*") { + $Server2012R2++ + } + Elseif ($Computer.OperatingSystem -like "*Server 2012*") { + $Server2012++ + } + Elseif ($Computer.OperatingSystem -like "*Server 2008 R2*") { + $Server2008R2++ + } + Elseif ($Computer.OperatingSystem -like "*Windows 11*") { + $Windows11++ + } + Elseif ($Computer.OperatingSystem -like "*Windows 10*") { + $Windows10++ + } + Elseif ($Computer.OperatingSystem -like "*Windows 8*") { + $Windows8++ + } + Elseif ($Computer.OperatingSystem -like "*Windows 7*") { + $Windows7++ + } +} + +If (($ComputersTable).Count -eq 0) { + $ComputersTable = [PSCustomObject]@{ + Information = "Information : Aucun ordinateur n'a ete trouve" + } +} + +#Data for TOP Computers data table +$objULic = [PSCustomObject]@{ + "Total Ordinateurs" = $Computers.Count + "Serveur 2022" = $Server2022 + "Serveur 2019" = $Server2019 + "Serveur 2016" = $Server2016 + "Serveur 2012 R2" = $Server2012R2 + "Serveur 2012" = $Server2012 + "Serveur 2008 R2" = $Server2008R2 + "Windows 11" = $Windows11 + "Windows 10" = $Windows10 + "Windows 8" = $Windows8 + "Windows 7" = $Windows7 +} + +$TOPComputersTable.Add($objULic) + +#Pie chart breaking down OS for computer obj + +$objULic = [PSCustomObject]@{ + "Name" = "Serveur 2022" + "Count" = $Server2022 +} + +$GraphComputerOS.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Serveur 2019" + "Count" = $Server2019 +} + +$GraphComputerOS.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Serveur 2016" + "Count" = $Server2016 +} + +$GraphComputerOS.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Serveur 2012 R2" + "Count" = $Server2012R2 +} + +$GraphComputerOS.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Serveur 2012" + "Count" = $Server2012 +} + +$GraphComputerOS.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Serveur 2008 R2" + "Count" = $Server2008R2 +} + +$GraphComputerOS.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Windows 11" + "Count" = $Windows11 +} + +$objULic = [PSCustomObject]@{ + "Name" = "Windows 10" + "Count" = $Windows10 +} + +$GraphComputerOS.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Windows 8" + "Count" = $Windows8 +} + +$GraphComputerOS.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Windows 7" + "Count" = $Windows7 +} + +$GraphComputerOS.Add($objULic) + +#Data for protected Computers pie graph +$objULic = [PSCustomObject]@{ + "Name" = "Protege" + "Count" = $ComputerProtected +} + +$ComputerProtectedTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Non protege" + "Count" = $ComputersNotProtected +} + +$ComputerProtectedTable.Add($objULic) + +#Data for enabled/vs Computers pie graph +$objULic = [PSCustomObject]@{ + "Name" = "Actif" + "Count" = $ComputerEnabled +} + +$ComputersEnabledTable.Add($objULic) + +$objULic = [PSCustomObject]@{ + "Name" = "Desactiver" + "Count" = $ComputerDisabled +} + +$ComputersEnabledTable.Add($objULic) + +Write-Host "Terminé !" -ForegroundColor White + +Write-Progress -Id 5 -Activity "Done" -completed + +$tabarray = @("Tableau de bord", "Groupes", "Unites d'Organisation", "Utilisateurs", "Groupe Police Objet", "Ordinateurs") + +Write-Host "Compilation du rapport ........................................................... " -ForegroundColor Green -NoNewline + +##--OU Protection PIE CHART--## +#Basic Properties +$PO12 = Get-HTMLPieChartObject +$PO12.Title = "Unites organisation protegees contre la suppression" +$PO12.Size.Height = 250 +$PO12.Size.width = 250 +$PO12.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PO12.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PO12.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PO12.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PO12.DataDefinition.DataNameColumnName = 'Name' +$PO12.DataDefinition.DataValueColumnName = 'Count' + +##--Computer OS Breakdown PIE CHART--## +$PieObjectComputerObjOS = Get-HTMLPieChartObject +$PieObjectComputerObjOS.Title = "Computer Operating Systems" + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectComputerObjOS.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectComputerObjOS.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectComputerObjOS.ChartStyle.ColorSchemeName = 'Random' + +##--Computers Protection PIE CHART--## +#Basic Properties +$PieObjectComputersProtected = Get-HTMLPieChartObject +$PieObjectComputersProtected.Title = "Ordinateurs proteges contre la suppression" +$PieObjectComputersProtected.Size.Height = 250 +$PieObjectComputersProtected.Size.width = 250 +$PieObjectComputersProtected.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectComputersProtected.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectComputersProtected.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectComputersProtected.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectComputersProtected.DataDefinition.DataNameColumnName = 'Name' +$PieObjectComputersProtected.DataDefinition.DataValueColumnName = 'Count' + +##--Computers Enabled PIE CHART--## +#Basic Properties +$PieObjectComputersEnabled = Get-HTMLPieChartObject +$PieObjectComputersEnabled.Title = "Ordinateurs actives et desactives" +$PieObjectComputersEnabled.Size.Height = 250 +$PieObjectComputersEnabled.Size.width = 250 +$PieObjectComputersEnabled.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectComputersEnabled.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectComputersEnabled.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectComputersEnabled.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectComputersEnabled.DataDefinition.DataNameColumnName = 'Name' +$PieObjectComputersEnabled.DataDefinition.DataValueColumnName = 'Count' + +##--USERS Protection PIE CHART--## +#Basic Properties +$PieObjectProtectedUsers = Get-HTMLPieChartObject +$PieObjectProtectedUsers.Title = "Utilisateurs proteges contre la suppression" +$PieObjectProtectedUsers.Size.Height = 250 +$PieObjectProtectedUsers.Size.width = 250 +$PieObjectProtectedUsers.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectProtectedUsers.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectProtectedUsers.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectProtectedUsers.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectProtectedUsers.DataDefinition.DataNameColumnName = 'Name' +$PieObjectProtectedUsers.DataDefinition.DataValueColumnName = 'Count' + +#Basic Properties +$PieObjectOUGPOLinks = Get-HTMLPieChartObject +$PieObjectOUGPOLinks.Title = "Liens OU/GPO" +$PieObjectOUGPOLinks.Size.Height = 250 +$PieObjectOUGPOLinks.Size.width = 250 +$PieObjectOUGPOLinks.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectOUGPOLinks.ChartStyle.ColorSchemeName = "ColorScheme4" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectOUGPOLinks.ChartStyle.ColorSchemeName = "Generated5" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectOUGPOLinks.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectOUGPOLinks.DataDefinition.DataNameColumnName = 'Name' +$PieObjectOUGPOLinks.DataDefinition.DataValueColumnName = 'Count' + +#Basic Properties +$PieObject4 = Get-HTMLPieChartObject +$PieObject4.Title = "Office 365 Unassigned Licenses" +$PieObject4.Size.Height = 250 +$PieObject4.Size.width = 250 +$PieObject4.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObject4.ChartStyle.ColorSchemeName = "ColorScheme4" + +#There are 8 generated schemes, randomly generated at runtime +$PieObject4.ChartStyle.ColorSchemeName = "Generated4" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObject4.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObject4.DataDefinition.DataNameColumnName = 'Name' +$PieObject4.DataDefinition.DataValueColumnName = 'Unassigned Licenses' + +#Basic Properties +$PieObjectGroupType = Get-HTMLPieChartObject +$PieObjectGroupType.Title = "Types de groupes" +$PieObjectGroupType.Size.Height = 250 +$PieObjectGroupType.Size.width = 250 +$PieObjectGroupType.ChartStyle.ChartType = 'doughnut' + +#Pie Chart Groups with members vs no members +$PieObjectGroupMembersType = Get-HTMLPieChartObject +$PieObjectGroupMembersType.Title = "Adhesion au groupe" +$PieObjectGroupMembersType.Size.Height = 250 +$PieObjectGroupMembersType.Size.width = 250 +$PieObjectGroupMembersType.ChartStyle.ChartType = 'doughnut' +$PieObjectGroupMembersType.ChartStyle.ColorSchemeName = "ColorScheme4" +$PieObjectGroupMembersType.ChartStyle.ColorSchemeName = "Generated8" +$PieObjectGroupMembersType.ChartStyle.ColorSchemeName = 'Random' +$PieObjectGroupMembersType.DataDefinition.DataNameColumnName = 'Name' +$PieObjectGroupMembersType.DataDefinition.DataValueColumnName = 'Count' + +#Basic Properties +$PieObjectGroupType2 = Get-HTMLPieChartObject +$PieObjectGroupType2.Title = "Groupes personnalises et groupes par defaut" +$PieObjectGroupType2.Size.Height = 250 +$PieObjectGroupType2.Size.width = 250 +$PieObjectGroupType2.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectGroupType.ChartStyle.ColorSchemeName = "ColorScheme4" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectGroupType.ChartStyle.ColorSchemeName = "Generated8" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectGroupType.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectGroupType.DataDefinition.DataNameColumnName = 'Name' +$PieObjectGroupType.DataDefinition.DataValueColumnName = 'Count' + +##--Enabled users vs Disabled Users PIE CHART--## +#Basic Properties +$EnabledDisabledUsersPieObject = Get-HTMLPieChartObject +$EnabledDisabledUsersPieObject.Title = "Utilisateurs actives et desactives" +$EnabledDisabledUsersPieObject.Size.Height = 250 +$EnabledDisabledUsersPieObject.Size.width = 250 +$EnabledDisabledUsersPieObject.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$EnabledDisabledUsersPieObject.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$EnabledDisabledUsersPieObject.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$EnabledDisabledUsersPieObject.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$EnabledDisabledUsersPieObject.DataDefinition.DataNameColumnName = 'Name' +$EnabledDisabledUsersPieObject.DataDefinition.DataValueColumnName = 'Count' + +##--PasswordNeverExpires PIE CHART--## +#Basic Properties +$PWExpiresUsersTable = Get-HTMLPieChartObject +$PWExpiresUsersTable.Title = "Expiration Mot De Passe" +$PWExpiresUsersTable.Size.Height = 250 +$PWExpiresUsersTable.Size.Width = 250 +$PWExpiresUsersTable.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PWExpiresUsersTable.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PWExpiresUsersTable.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PWExpiresUsersTable.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PWExpiresUsersTable.DataDefinition.DataNameColumnName = 'Name' +$PWExpiresUsersTable.DataDefinition.DataValueColumnName = 'Count' + +##--Group Protection PIE CHART--## +#Basic Properties +$PieObjectGroupProtection = Get-HTMLPieChartObject +$PieObjectGroupProtection.Title = "Groupes proteges contre la suppression" +$PieObjectGroupProtection.Size.Height = 250 +$PieObjectGroupProtection.Size.width = 250 +$PieObjectGroupProtection.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectGroupProtection.ChartStyle.ColorSchemeName = "ColorScheme3" + +#There are 8 generated schemes, randomly generated at runtime +$PieObjectGroupProtection.ChartStyle.ColorSchemeName = "Generated3" + +#you can also ask for a random scheme. Which also happens ifyou have too many records for the scheme +$PieObjectGroupProtection.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectGroupProtection.DataDefinition.DataNameColumnName = 'Name' +$PieObjectGroupProtection.DataDefinition.DataValueColumnName = 'Count' + +#Tableau de bord Report +$FinalReport = New-Object 'System.Collections.Generic.List[System.Object]' +$FinalReport.Add($(Get-HTMLOpenPage -TitleText $ReportTitle -LeftLogoString $CompanyLogo -RightLogoString $CompanyLogo)) +$FinalReport.Add($(Get-HTMLTabHeader -TabNames $tabarray)) +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[0] -TabHeading ("Rapport: " + (Get-Date -Format dd-MM-yyyy)))) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Informations sur l'entreprise")) +$FinalReport.Add($(Get-HTMLContentTable $CompanyInfoTable)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Groupes")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Administrateurs de domaines")) +$FinalReport.Add($(Get-HTMLContentDataTable $DomainAdminTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Administrateurs d'entreprise")) +$FinalReport.Add($(Get-HTMLContentDataTable $EnterpriseAdminTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Objets dans les OU par defaut")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Ordinateurs")) +$FinalReport.Add($(Get-HTMLContentDataTable $DefaultComputersinDefaultOUTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Utilisateurs")) +$FinalReport.Add($(Get-HTMLContentDataTable $DefaultUsersinDefaultOUTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Objets AD modifies en dernier $ADModNumber jours")) +$FinalReport.Add($(Get-HTMLContentDataTable $ADObjectTable)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Objets en voie d'expiration")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Utilisateurs dont les mots de passe expirent dans $DaysUntilPWExpireINT jours")) +$FinalReport.Add($(Get-HTMLContentDataTable $PasswordExpireSoonTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Comptes expirant bientot")) +$FinalReport.Add($(Get-HTMLContentDataTable $ExpiringAccountsTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Comptes")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Utilisateurs non connectes depuis $Days jours")) +$FinalReport.Add($(Get-HTMLContentDataTable $userphaventloggedonrecentlytable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Comptes crees en $UserCreatedDays jours")) +$FinalReport.Add($(Get-HTMLContentDataTable $NewCreatedUsersTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Journaux de securite")) +$FinalReport.Add($(Get-HTMLContentDataTable $securityeventtable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "UPN Suffixes")) +$FinalReport.Add($(Get-HTMLContentTable $DomainTable)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#Groups Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[1] -TabHeading ("Rapport: " + (Get-Date -Format dd-MM-yyyy)))) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Apercu des groupes")) +$FinalReport.Add($(Get-HTMLContentTable $TOPGroupsTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Groupes Active Directory")) +$FinalReport.Add($(Get-HTMLContentDataTable $Table -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumn1of2)) + +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Administrateurs de domaines")) +$FinalReport.Add($(Get-HTMLContentDataTable $DomainAdminTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Administrateurs d'entreprise")) +$FinalReport.Add($(Get-HTMLContentDataTable $EnterpriseAdminTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Graphiques Groupes Active Directory")) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 1 -ColumnCount 4)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectGroupType -DataSet $GroupTypetable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 2 -ColumnCount 4)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectGroupType2 -DataSet $DefaultGrouptable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 3 -ColumnCount 4)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectGroupMembersType -DataSet $GroupMembershipTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 4 -ColumnCount 4)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectGroupProtection -DataSet $GroupProtectionTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#Organizational Unit Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[2] -TabHeading ("Rapport: " + (Get-Date -Format dd-MM-yyyy)))) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Unites organisations")) +$FinalReport.Add($(Get-HTMLContentDataTable $OUTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Graphiques unites organisations")) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 1 -ColumnCount 2)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectOUGPOLinks -DataSet $OUGPOTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 2 -ColumnCount 2)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PO12 -DataSet $OUProtectionTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentclose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#Users Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[3] -TabHeading ("Rapport: " + (Get-Date -Format dd-MM-yyyy)))) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Apercu des utilisateurs")) +$FinalReport.Add($(Get-HTMLContentTable $TOPUserTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Utilisateurs d'Active Directory")) +$FinalReport.Add($(Get-HTMLContentDataTable $UserTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Groupe de mot de passe")) +$FinalReport.Add($(Get-HTMLContentDataTable $$UserPasswordTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Articles en voie d'expiration")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Utilisateurs dont les mots de passe expirent dans $DaysUntilPWExpireINT jours")) +$FinalReport.Add($(Get-HTMLContentDataTable $PasswordExpireSoonTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Comptes expirant bientot")) +$FinalReport.Add($(Get-HTMLContentDataTable $ExpiringAccountsTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Comptes")) +$FinalReport.Add($(Get-HTMLColumn1of2)) +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Utilisateurs non connectes depuis $Days jours")) +$FinalReport.Add($(Get-HTMLContentDataTable $userphaventloggedonrecentlytable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumn2of2)) + +$FinalReport.Add($(Get-HTMLContentOpen -BackgroundShade 1 -HeaderText "Comptes crees en $UserCreatedDays jours")) +$FinalReport.Add($(Get-HTMLContentDataTable $NewCreatedUsersTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Graphiques utilisateurs")) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 1 -ColumnCount 3)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $EnabledDisabledUsersPieObject -DataSet $EnabledDisabledUsersTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 2 -ColumnCount 3)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PWExpiresUsersTable -DataSet $PasswordExpirationTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 3 -ColumnCount 3)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectProtectedUsers -DataSet $ProtectedUsersTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#GPO Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[4] -TabHeading ("Rapport: " + (Get-Date -Format dd-MM-yyyy)))) +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Police Groupe Objet")) +$FinalReport.Add($(Get-HTMLContentDataTable $GPOTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) +$FinalReport.Add($(Get-HTMLTabContentClose)) + +#Computers Report +$FinalReport.Add($(Get-HTMLTabContentopen -TabName $tabarray[5] -TabHeading ("Rapport: " + (Get-Date -Format dd-MM-yyyy)))) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Apercu des ordinateurs")) +$FinalReport.Add($(Get-HTMLContentTable $TOPComputersTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Ordinateurs")) +$FinalReport.Add($(Get-HTMLContentDataTable $ComputersTable -HideFooter)) +$FinalReport.Add($(Get-HTMLContentClose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Graphiques d'ordinateurs")) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 1 -ColumnCount 2)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectComputersProtected -DataSet $ComputerProtectedTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLColumnOpen -ColumnNumber 2 -ColumnCount 2)) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectComputersEnabled -DataSet $ComputersEnabledTable)) +$FinalReport.Add($(Get-HTMLColumnClose)) +$FinalReport.Add($(Get-HTMLContentclose)) + +$FinalReport.Add($(Get-HTMLContentOpen -HeaderText "Repartition des systemes d'exploitation des ordinateurs")) +$FinalReport.Add($(Get-HTMLPieChart -ChartObject $PieObjectComputerObjOS -DataSet $GraphComputerOS)) +$FinalReport.Add($(Get-HTMLContentclose)) + +$FinalReport.Add($(Get-HTMLTabContentClose)) +$FinalReport.Add($(Get-HTMLClosePage)) + +$ReportName = ("$Day-$Month-$Year-$Hour-$Minute-AD Report") + +#Save-HTMLReport -ReportContent $FinalReport -ShowReport -ReportName $ReportName -ReportPath $ReportSavePath +Add-Content $ReportSavePath$ReportName".html" $FinalReport + +Write-Host "Terminé !" -ForegroundColor White + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/Active Directory/Get-AdComputerInventory.ps1 b/Active Directory/Get-AdComputerInventory.ps1 new file mode 100644 index 0000000..d4bb7e5 --- /dev/null +++ b/Active Directory/Get-AdComputerInventory.ps1 @@ -0,0 +1,50 @@ +$Computers = Get-ADComputer -filter * | Select-Object -ExpandProperty Name +# Get-ADComputer -Filter { OperatingSystem -NotLike '*Server*' } -Properties OperatingSystem + +Foreach ($computer in $computers) { + + if (!(Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet)) { + write-host "cannot reach $computer offline" -f red + } + else { + $outtbl = @() + Try { + $sr = Get-WmiObject win32_bios -ComputerName $Computer -ErrorAction Stop + $Xr = Get-WmiObject –class Win32_processor -ComputerName $computer -ErrorAction Stop + $ld = get-adcomputer $computer -properties Name, Lastlogondate, operatingsystem, ipv4Address, enabled, description, DistinguishedName -ErrorAction Stop + $r = "{0} GB" -f ((Get-WmiObject Win32_PhysicalMemory -ComputerName $computer | Measure-Object Capacity -Sum).Sum / 1GB) + $x = gwmi win32_computersystem -ComputerName $computer | Select-Object @{Name = "Type"; Expression = { if (($_.pcsystemtype -eq '2') ) { + 'Laptop' + } + Else { + 'Desktop Or Other something else' + } + } + }, Manufacturer, @{Name = "Model"; Expression = { if (($_.model -eq "$null") ) { 'Virtual' } Else { $_.model } } }, username -ErrorAction Stop + $t = New-Object PSObject -Property @{ + serialnumber = $sr.serialnumber + computername = $ld.name + Ipaddress = $ld.ipv4Address + Enabled = $ld.Enabled + Description = $ld.description + Ou = $ld.DistinguishedName.split(',')[1].split('=')[1] + Type = $x.type + Manufacturer = $x.Manufacturer + Model = $x.Model + Ram = $R + ProcessorName = ($xr.name | Out-String).Trim() + NumberOfCores = ($xr.NumberOfCores | Out-String).Trim() + NumberOfLogicalProcessors = ($xr.NumberOfLogicalProcessors | Out-String).Trim() + Addresswidth = ($xr.Addresswidth | Out-String).Trim() + Operatingsystem = $ld.operatingsystem + Lastlogondate = $ld.lastlogondate + LoggedinUser = $x.username + } + $outtbl += $t + } + catch [Exception] { + "Error communicating with $computer, skipping to next" + } + $outtbl | Select-Object Computername, enabled, description, ipAddress, Ou, Type, Serialnumber, Manufacturer, Model, Ram, ProcessorName, NumberOfCores, NumberOfLogicalProcessors, Addresswidth, Operatingsystem, loggedinuser, Lastlogondate + } +} \ No newline at end of file diff --git a/Active Directory/Get-UserRights.ps1 b/Active Directory/Get-UserRights.ps1 new file mode 100644 index 0000000..983396e --- /dev/null +++ b/Active Directory/Get-UserRights.ps1 @@ -0,0 +1,64 @@ +#Paremetres Utilisateur et racine du partage + +$User = "Username" +$Path = "PATH" + +#Nom de Domaine NetBios +$Domain = "DOMSNS" + +Function Get-ADUserNestedGroups { + Param + ( + [string]$DistinguishedName, + [array]$Groups = @() + ) + + #Get the AD object, and get group membership. + $ADObject = Get-ADObject -Filter "DistinguishedName -eq '$DistinguishedName'" -Properties memberOf, DistinguishedName; + + #If object exists. + If ($ADObject) { + #Enummurate through each of the groups. + Foreach ($GroupDistinguishedName in $ADObject.memberOf) { + #Get member of groups from the enummerated group. + $CurrentGroup = Get-ADObject -Filter "DistinguishedName -eq '$GroupDistinguishedName'" -Properties memberOf, DistinguishedName; + + #Check if the group is already in the array. + If (($Groups | Where-Object { $_.DistinguishedName -eq $GroupDistinguishedName }).Count -eq 0) { + #Add group to array. + $Groups += $CurrentGroup; + + #Get recursive groups. + $Groups = Get-ADUserNestedGroups -DistinguishedName $GroupDistinguishedName -Groups $Groups; + } + } + } + + Return $Groups; +} + +$Groups = Get-ADUserNestedGroups -DistinguishedName (Get-ADUser -Identity $User).DistinguishedName; + +$list = Get-ChildItem $Path -Recurse -Directory + +Foreach ($item in $list) { + + $ACL = (Get-Acl $item.FullName).Access + + if (($ACL.IdentityReference -contains ("$($Domain)\" + $User)) -and ($ACL.IsInherited -eq $false)) { + + Write-Host "$($User) a les droits $($ACL.FileSystemRights) sur $($item.FullName)" + + } + + Foreach ($Group in $Groups.Name) { + + if (($ACL.IdentityReference -contains ("$($Domain)\" + $Group)) -and ($ACL.IsInherited -eq $false)) { + + Write-Host "$($User) est dans le groupe $($Group) qui a les droits $($ACL.FileSystemRights) sur $($item.FullName)" + + } + + } + +} \ No newline at end of file diff --git a/Active Directory/Import-AdGroups.ps1 b/Active Directory/Import-AdGroups.ps1 new file mode 100644 index 0000000..7b9fc3e --- /dev/null +++ b/Active Directory/Import-AdGroups.ps1 @@ -0,0 +1,48 @@ +#Importer le module Active Directory +Import-Module activedirectory + +[string]$Mode +$Rights = Import-csv "Templates\Import-AdGroups.csv" -Delimiter ";" -Encoding UTF8 + +# $Groups_Names = ($Rights[0].psobject.Properties).name | Where-Object { $_ -ne "Utilisateur" } +# $Groups_Names -contains $Property.name + +ForEach ($User in $Rights) { + ForEach ($Property in $User.PsObject.Properties) { + if ($Property.Value -eq "0") { + $Mode = "Access" + } + elseif ($Property.Value -eq "1") { + $Mode = "Read" + } + elseif ($Property.Value -eq "2") { + $Mode = "Write" + } + + $Group = (($Property.name -replace " ", "-" -replace "\\", "_" -replace ",", "-") + "_" + $Mode) + + Try { + + $TheGroup = Get-ADGroup $Group + + $GroupMembers = Get-ADGroupMember -Identity ($($TheGroup.name)) + + if ($GroupMembers.SamAccountName -contains $User.Utilisateur) { + Write-Host "User $($User.Utilisateur) is already in the group" ($($TheGroup.name)) -BackgroundColor Blue + } + else { + try { + Add-AdGroupMember -Identity ($($TheGroup.name)) -members $User.Utilisateur + Write-Host "User $($User.Utilisateur) added to the group" ($($TheGroup.name)) -BackgroundColor Green + } + catch { + Write-Host "User $($User.Utilisateur) not added to the group" ($($TheGroup.name)) -BackgroundColor Yellow + } + } + } + Catch { + Write-Host "Group $($Group) not exist, skipped !" -BackgroundColor Red + } + Remove-Variable Mode -ErrorAction SilentlyContinue + } +} \ No newline at end of file diff --git a/Active Directory/Import-AdUsers.ps1 b/Active Directory/Import-AdUsers.ps1 new file mode 100644 index 0000000..19f4ff5 --- /dev/null +++ b/Active Directory/Import-AdUsers.ps1 @@ -0,0 +1,52 @@ +# Import active directory module for running AD cmdlets +Import-Module activedirectory + +#Store the data from ADUsers.csv in the $ADUsers variable +$ADUsers = Import-csv "Templates\Import-AdUsers.csv" -Delimiter ";" -Encoding UTF8 +$Domain = "dom.hitea.fr" + +#Loop through each row containing user details in the CSV file +foreach ($User in $ADUsers) { + + $FullName = "$($User.firstname) $($User.lastname)" + $Upn = "$($User.username)@$Domain" + + if ((Get-AdUser -Filter "SamAccountName -eq '$($User.username)'")) { + Write-Warning "A user account with username $($User.username) already exist in Active Directory." + } + elseif (([string]::IsNullOrEmpty($User.password))) { + Write-Warning "The password for $($User.username) is nul or empty." + } + elseif (($User.username).Length -gt 19) { + Write-Warning "The username $($User.username) is too long (Greater than 20)." + } + else { + try { + New-ADUser ` + -SamAccountName $User.username ` + -UserPrincipalName $Upn ` + -GivenName $User.firstname ` + -Surname $User.lastname ` + -Name $FullName ` + -DisplayName $FullName ` + -Path $User.ou ` + -Company $User.company ` + -State $User.state ` + -City $User.city ` + -StreetAddress $User.streetaddress ` + -OfficePhone $User.telephone ` + -EmailAddress $User.email ` + -Title $User.jobtitle ` + -Department $User.department ` + -AccountPassword (convertto-securestring $User.password -AsPlainText -Force) ` + -Enabled $True ` + -ChangePasswordAtLogon $False ` + -PasswordNeverExpires $True ` + -CannotChangePassword $False + Write-Host "The user $($User.firstname) $($User.lastname) ($($User.username)) was created." + } + catch { + Write-Error "The user $($User.firstname) $($User.lastname) ($($User.username)) was not created." + } + } +} \ No newline at end of file diff --git a/Active Directory/Join-Domain.ps1 b/Active Directory/Join-Domain.ps1 new file mode 100644 index 0000000..3e00d14 --- /dev/null +++ b/Active Directory/Join-Domain.ps1 @@ -0,0 +1,12 @@ +# Parametres Domaine +$domain = "DOMAIN" + +# Le nom d'utilisateur +$username = "$domain\USERNAME HERE" + +# Le mot de passe de l'utilisateur +$password = "PASSWORD HERE" | ConvertTo-SecureString -asPlainText -Force + +$credential = New-Object System.Management.Automation.PSCredential($username, $password) + +Add-Computer -DomainName $domain -Credential $credential \ No newline at end of file diff --git a/Active Directory/New-Domain.ps1 b/Active Directory/New-Domain.ps1 new file mode 100644 index 0000000..4bc1020 --- /dev/null +++ b/Active Directory/New-Domain.ps1 @@ -0,0 +1,25 @@ +#Installer la fonctionnalité AD DS +Install-WindowsFeature AD-Domain-Services -IncludeManagementTools + +#Importer le module de déploiement +Import-Module ADDSDeployment + +#Créer une nouvelle forêt +Install-ADDSForest ` + -CreateDnsDelegation:$false ` + -DatabasePath "C:\Windows\NTDS" ` + -DomainMode "WinThreshold" ` + -DomainName "DOMAINE.LOCAL" ` + -DomainNetbiosName "DOMAINE" ` + -ForestMode "WinThreshold" ` + -InstallDns:$true ` + -LogPath "C:\Windows\NTDS" ` + -NoRebootOnCompletion:$false ` + -SysvolPath "C:\Windows\SYSVOL" ` + -Force:$true + +#Voir les rédirecteurs du serveur DNS +Get-DnsServerForwarder + +#Ajouter un redirecteur au serveur DNS, Exemple avec le DNS de CloudFare +Add-DnsServerForwarder -IPAddress 1.1.1.1 \ No newline at end of file diff --git a/Active Directory/New-UsersHome.ps1 b/Active Directory/New-UsersHome.ps1 new file mode 100644 index 0000000..abdcd47 --- /dev/null +++ b/Active Directory/New-UsersHome.ps1 @@ -0,0 +1,50 @@ +<# + + .SYNOPSIS + Créer des dossiers utilisateurs avec les autorisations contrôle total + + .PARAMETER Domain + Indique le domaine + + .PARAMETER BaseDir + Indique le dossier racine + + .EXAMPLE + New-UsersHome -Domain "@Domaine.local" -BaseDir "C:\UsersHome" + +#> + +param ( + [parameter(Mandatory = $True)] + [ValidateNotNullOrEmpty()]$Domain, + [parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()]$BaseDir +) + +# Lister tous les utilisateurs du domaine +$Users = Get-ADUser -Filter { UserPrincipalName -like "*$($Domain)" } | Select SAMAccountName, SID + +# Déactiver l'héritage sur le dossier racine et supprimer les autorisation Utilisateurs +Foreach ($User in $Users) { + + $UserDir = Join-Path $BaseDir $User.SAMAccountName + + If (!(test-path $UserDir)) { + New-Item -ItemType Directory -Path $UserDir + } + + $acl = Get-Acl $UserDir + $acl.SetAccessRuleProtection($true, $true) + + $FileSystemRights = [System.Security.AccessControl.FileSystemRights]"FullControl" + $AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow + $InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit" + $PropagationFlags = [System.Security.AccessControl.PropagationFlags]::None + + $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($User.SID, $FileSystemRights, $InheritanceFlags, $PropagationFlags, $AccessControlType) + $acl.AddAccessRule($AccessRule) + + Set-Acl -Path $UserDir -AclObject $acl -ea Stop + +} + diff --git a/Active Directory/README.md b/Active Directory/README.md new file mode 100644 index 0000000..70ad26e --- /dev/null +++ b/Active Directory/README.md @@ -0,0 +1,11 @@ +# Active Directory + +- Installer les fonctionnalités AD DS, créer une nouvelle forêt. + + + +- Importer des utilisateurs à partir d'un fichier CSV + + diff --git a/Active Directory/Templates/Import-AdGroups.csv b/Active Directory/Templates/Import-AdGroups.csv new file mode 100644 index 0000000..a40030f --- /dev/null +++ b/Active Directory/Templates/Import-AdGroups.csv @@ -0,0 +1,6 @@ +Utilisateur;Commun;Commerce;Achats;Direction;Marketing;Technique +p.dupont;2;2;2;2;2;2 +b.durand;2;;2;;2;2 +d.bellier;2;1;2;;; +j.tartas;2;;;;1;2 +b.canu;2;;;;1;2 diff --git a/Active Directory/Templates/Import-AdUsers.csv b/Active Directory/Templates/Import-AdUsers.csv new file mode 100644 index 0000000..da4683b --- /dev/null +++ b/Active Directory/Templates/Import-AdUsers.csv @@ -0,0 +1,6 @@ +firstname;lastname;username;email;streetaddress;city;state;department;password;telephone;jobtitle;company;ou +Paul;Dupont;p.dupont;p.dupont@hitea.fr;;Agen;;;Test123Test1;;;;OU=Utilisateurs,OU=Agen,DC=dom,DC=hitea,DC=fr +Bernard;Durand;b.durand;b.durand@hitea.fr;;Agen;;;Test123Test2;;;;OU=Utilisateurs,OU=Agen,DC=dom,DC=hitea,DC=fr +David;Bellier;d.bellier;d.bellier@hitea.fr;;Agen;;;Test123Test3;;;;OU=Utilisateurs,OU=Agen,DC=dom,DC=hitea,DC=fr +Joël;Tartas;j.tartas;j.tartas@hitea.fr;;Agen;;;Test123Test4;;;;OU=Utilisateurs,OU=Agen,DC=dom,DC=hitea,DC=fr +Benoît;Canu;b.canu;b.canu@hitea.fr;;Agen;;;Test123Test5;;;;OU=Utilisateurs,OU=Agen,DC=dom,DC=hitea,DC=fr \ No newline at end of file diff --git a/Active Directory/Validate-GroupMembership.ps1 b/Active Directory/Validate-GroupMembership.ps1 new file mode 100644 index 0000000..921eee8 --- /dev/null +++ b/Active Directory/Validate-GroupMembership.ps1 @@ -0,0 +1,112 @@ +<# + + .SYNOPSIS + Validates AD group membership for a user or computer object + + .PARAMETER SearchString + Provide Username or Computer Name + + .PARAMETER SearchType + Specify type (User or Computer) + + .PARAMETER Group + Provide AD Group name + + .EXAMPLE + Validate-GroupMembership -SearchString $env:USERNAME -SearchType User -Group "Test Group" + + .EXAMPLE + Validate-GroupMembership -SearchString $env:COMPUTERNAME -SearchType Computer -Group "ORL Computers" + +#> + +param ( + [parameter(Mandatory = $True)] + [ValidateNotNullOrEmpty()]$SearchString, + [parameter(Mandatory = $True)] + [ValidateSet("User", "Computer")] + [ValidateNotNullOrEmpty()]$SearchType, + [parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()]$Group +) + +Try { + + $objSearcher = New-Object System.DirectoryServices.DirectorySearcher + $objSearcher.SearchRoot = New-Object System.DirectoryServices.DirectoryEntry + + If ($SearchType -eq "User") { + + $objSearcher.Filter = "(&(objectCategory=User)(SAMAccountName=$SearchString))" + + } + Else { + + $objSearcher.Filter = "(&(objectCategory=Computer)(cn=$SearchString))" + + } + + $objSearcher.SearchScope = "Subtree" + $obj = $objSearcher.FindOne() + $User = $obj.Properties["distinguishedname"] + + $objSearcher.PageSize = 1000 + $objSearcher.Filter = "(&(objectClass=group)(cn=$Group))" + $obj = $objSearcher.FindOne() + + [String[]]$Members = $obj.Properties["member"] + + If ($Members.count -eq 0) { + + $retrievedAllMembers = $false + $rangeBottom = 0 + $rangeTop = 0 + + While (! $retrievedAllMembers) { + + $rangeTop = $rangeBottom + 1499 + + $memberRange = "member;range=$rangeBottom-$rangeTop" + + $objSearcher.PropertiesToLoad.Clear() + [void]$objSearcher.PropertiesToLoad.Add("$memberRange") + + $rangeBottom += 1500 + + Try { + + $obj = $objSearcher.FindOne() + $rangedProperty = $obj.Properties.PropertyNames -like "member;range=*" + $Members += $obj.Properties.item($rangedProperty) + + if ($Members.count -eq 0) { $retrievedAllMembers = $true } + } + + Catch { + + $retrievedAllMembers = $true + } + + } + + } + +} + +Catch { + + Write-Host "Either group or user does not exist" + Return $False + +} + +If ($Members -contains $User) { + + Return $True + +} +Else { + + Return $False + +} \ No newline at end of file diff --git a/Active Directory/creation-automatique.ps1 b/Active Directory/creation-automatique.ps1 new file mode 100644 index 0000000..8bfa764 --- /dev/null +++ b/Active Directory/creation-automatique.ps1 @@ -0,0 +1,409 @@ +# Fonction pour les requetes SQL +Function QuerySQLServer([string]$DBServer, [string]$DBName, [string]$Query) { + Try { + $ErrorActionPreference = "Stop" + + $resultsDataTable = New-Object System.Data.DataTable + + $cn = new-object System.Data.SqlClient.SqlConnection("Data Source=$DBServer;Integrated Security=SSPI;Initial Catalog=$DBName") + $cn.open() + + $cmd = new-object "System.Data.SqlClient.SqlCommand" ($Query , $cn) + $reader = $cmd.ExecuteReader() + + $resultsDataTable.Load($reader) + + $cn.Close() + + return $resultsDataTable + } + Catch { + write-host $_.Exception.Message + $_.Exception.Message >> "d:\tmp\error.log" + } + Finally { + $ErrorActionPreference = "Continue" + } +} + +# Fonction pour les requetes dans GLPI +Function QueryGLPI([string]$Titre, [string]$Message, [string]$Categorie) { + Write-host $Titre + Write-host $Message + Write-host $Categorie + + $UtilisateurGLPI = Get-GlpiToolsUsers -UserName helpdesk + + $Ticket = New-GlpiToolsTicket -Name $Titre -Content $Message -Type Request -itilcategories_id $Categorie -Priority Medium -requester_id $UtilisateurGLPI.ID + + Update-GlpiToolsTicket -ticket_id $Ticket.id -requester_id $UtilisateurGLPI.ID -technician_id '12' +} + +cls + +$ListeException = $null +$ListeVide = $null +$FichierException = "D:\tmp\Exception.txt" +$FichierVide = "D:\tmp\vide.txt" +$percentCompleteA = $null +$percentCompleteB = $null +$CounterA = $null +$CounterB = $null +$EtatUtilisateur = $null + +$DateDesactivation = Get-Date -Format "dd/MM/yyyy" +$DateExpiration = (Get-Date $DateDesactivation).AddDays(-1) +$DateDelete = (Get-Date $DateDesactivation).AddDays(-30) + +$DateTmp = (Get-Date).AddDays(-1) +$DateCreation = Get-Date $DateTmp -Format "yyyy-dd-MM" + +Start-Transcript -path "D:\tmp\MyTranscript-$DateCreation.txt" + +$OuPath = "OU=Utilisateurs,DC=fr,DC=dgs,DC=group" +$ListeUserAD = Get-ADUser -Filter * -SearchBase $OuPath -Properties cn,description,sAMAccountName + +## Desactivation ou Update de compte + +Foreach ($UserAD in $ListeUserAD) { + # Barre de progression + $percentCompleteA = $(($CounterA / $ListeUserAD.Count) * 100 ) + + $ProgressA = @{ + Activity = "Getting folder information for '$($UserAD.Name)'." + Status = "Processing $CounterA of $($ListeUserAD.Count)" + PercentComplete = $([math]::Round($percentCompleteA, 2)) + } + + Write-Progress @ProgressA -Id 1 + + # recherche inforamtiopn 1 utilisateur + $InfoUser = Get-ADUser -identity $UserAD.sAMAccountName -properties 'msDS-cloudExtensionAttribute1','msDS-cloudExtensionAttribute2',mail,employeeID,EmployeeNumber,EmployeeType,Title,Initials + + $C = $UserAD.C + $City = $UserAD.City + $Cn = $UserAD.Cn + $Company = $UserAD.Company + $department = $UserAD.Department + $displayName = $UserAD.DisplayName + $EmailAddress = $UserAD.EmailAddress + $Enable = $UserAD.Enabled + $GivenName = $UserAD.GivenName + $Name = $UserAD.Name + $Office = $UserAD.Office + $Organization = $UserAD.Organization + $PostalCode = $UserAD.PostalCode + $sn = $UserAD.Sn + $Surname = $UserAD.Surname + + $ExtensionAttribute1 = $InfoUser.'msDS-cloudExtensionAttribute1' + $ExtensionAttribute2 = $InfoUser.'msDS-cloudExtensionAttribute2' + $Mail = $InfoUser.Mail + $EmployeeID = $InfoUser.employeeID + $EmployeeNumber = $InfoUser.EmployeeNumber + $EmployeeType = $InfoUser.EmployeeType + $Title = $InfoUser.Title + $Initials = $InfoUser.Initials + + # Est-ce qu'il est actif + If ($Enable -eq "True") { + # Est-ce qu'il est interne + If($EmployeeType -eq "Interne") { + # Est-ce qu'il a un ID + If ($EmployeeID) { + # Si l'employeeID est bien présent + $EtatUtilisateurD = QuerySQLServer "SWDHBBDDP01.fr.dgs.group" "dhb_prd" "SELECT NOM,PRN,NOM_PAT,LIB_EMP,ADR_EML,MTR,NUM_ALC,COD_SEX,FLG_AGT,DAT_SRT FROM [dhb_prd].[dhbref].[TAB_RH_SAL] WHERE MTR = '$EmployeeID' And DAT_SRT IS NOT NULL" + $EtatUtilisateurU = QuerySQLServer "SWDHBBDDP01.fr.dgs.group" "dhb_prd" "SELECT NOM,PRN,NOM_PAT,LIB_EMP,ADR_EML,MTR,NUM_ALC,COD_SEX,FLG_AGT,DAT_SRT FROM [dhb_prd].[dhbref].[TAB_RH_SAL] WHERE MTR = '$EmployeeID'" + + # Desactivation du compte ? + If ($EtatUtilisateurD) { + If ($DateExpiration -gt $EtatUtilisateurD.DAT_SRT) { + + Get-ADUser -Identity $UserAD.sAMAccountName | Move-ADObject -TargetPath "OU=_A_SUPPRIMER,OU=Utilisateurs,DC=fr,DC=dgs,DC=group" + Set-ADAccountExpiration -Identity $UserAD.sAMAccountName -DateTime $dateExpiration + Set-ADUser -Identity $Utilisateur -Clear msDS-cloudExtensionAttribute2 + Set-ADUser -Identity $UserAD.sAMAccountName -Add @{'msDS-cloudExtensionAttribute2' = "$DateExpiration"} + Disable-ADAccount -Identity $UserAD.sAMAccountName + + $TitreA = "Désactivation du compte Active Directory : $UserAD.sAMAccountName " + + $MessageA = "Bonjour, `r`n `r`n" ` + +"Nous venons de désactiver le compte de : $DisplayName `r`n `r`n" ` + +"Prénom : $GivenName `r`n" ` + +"Nom : $Surname `r`n" ` + +"Mail : $Mail `r`n" ` + +"Matricule : $EmployeeID `r`n" ` + +"Fonction : $Title `r`n" ` + +"`r`n" ` + +"Conformément à la politique entreprise le compte restera en état désactivé pendant 30 jours avant d'être supprimé `r`n" ` + +"La suppression du compte GMAIL se fait également en automatique." + + QueryGLPI $TitreA $MessageA "213" + } + } + + # Mise en place de la civilité + If ($EtatUtilisateurU) { + If (($Initials -ne "Mr") -And ($EtatUtilisateurU.COD_SEX -eq "H")) { + + Set-ADUser -Identity $UserAD.sAMAccountName -Clear Initials + Set-ADUser -Identity $UserAD.sAMAccountName -Initials "Mr" + + Write-Host " - Update civilité - Mr" + } + ElseIf (($Initials -ne "Mme") -And ($EtatUtilisateurU.COD_SEX -eq "F")) { + + Set-ADUser -Identity $UserAD.sAMAccountName -Clear Initials + Set-ADUser -Identity $UserAD.sAMAccountName -Initials "Mme" + + Write-Host " - Update civilité - Mme" + } + Else { + # Write-Host " - Pas de modification" + } + } + + # Mise en place du Employee Number + If ($EmployeeNumber -ne $EtatUtilisateurU.NUM_ALC) { + If ($EmployeeID.substring(0, 1) -eq 0 ) { + $tmp = ($EtatUtilisateurU.NUM_ALC).Remove(0,1) + If (!($EmployeeNumber -eq $tmp)) { + Write-host " - 2erreur : "$EtatUtilisateurU.MTR" > $EmployeeID | "$EtatUtilisateurU.NUM_ALC" > $EmployeeNumber" + } + } + Else { + Write-host " - erreur : "$EtatUtilisateurU.MTR" > $EmployeeID | "$EtatUtilisateurU.NUM_ALC" > $EmployeeNumber" + } + } + + # Controle du status + If (($ExtensionAttribute1 -eq $null) -Or ($ExtensionAttribute1 -ne $EmployeeType)) { + Set-ADUser -Identity $UserAD.sAMAccountName -Add @{'msDS-cloudExtensionAttribute1' = $EmployeeType} + } + } + Else { + # Si l'employé ID n'est pas présent + $EtatUtilisateurID = QuerySQLServer "SWDHBBDDP01.fr.dgs.group" "dhb_prd" "SELECT NOM,PRN,NOM_PAT,LIB_EMP,ADR_EML,MTR,NUM_ALC,COD_SEX,FLG_AGT,DAT_SRT FROM [dhb_prd].[dhbref].[TAB_RH_SAL] WHERE NOM = '$Surname' And PRN ='$GivenName' And DAT_SRT IS NULL" + + If ($EtatUtilisateurID) { + + Set-ADUser -Identity $UserAD.sAMAccountName -EmployeeID $EtatUtilisateurID.MTR + + Write-Host " - Mise en place de employee ID" + } + } + } + Else { + # Passage d'un externe en interne + } + } + $EtatUtilisateurD = $null + $EtatUtilisateurU = $null + + $CounterA++ +} + +## Suppression des comptes de plus 1 mois + +$OuPathDelete = "OU=_A_SUPPRIMER,OU=Utilisateurs,DC=fr,DC=dgs,DC=group" +$ListeUserADDelete = Get-ADUser -Filter * -SearchBase $OuPathDelete -Properties cn,description,sAMAccountName + +Foreach ($UserADDelete in $ListeUserADDelete) { + # Barre de progression + $percentCompleteB = $(($CounterB / $ListeUserADDelete.Count) * 100 ) + + $ProgressB = @{ + Activity = "Getting folder information for '$($UserADDelete.Name)'." + Status = "Processing $CounterB of $($ListeUserADDelete.Count)" + PercentComplete = $([math]::Round($percentCompleteB, 2)) + } + + Write-Progress @ProgressB -Id 1 + + $InfoUserDelete = Get-ADUser -identity $UserADDelete.sAMAccountName -properties 'msDS-cloudExtensionAttribute2' + + $ExtensionAttributeDelete2 = $InfoUserDelete.'msDS-cloudExtensionAttribute2' + + If ($Enable -eq $False) { + If ($DateDelete -gt $ExtensionAttributeDelete2) { + Remove-ADUser -Identity $UserADDelete.sAMAccountName + + $TitreB = "Suppression du compte Active Directory : $UserAD.sAMAccountName " + + $MessageB = "Bonjour, `r`n `r`n" ` + +"Nous venons de supprimer le compte de : $DisplayName `r`n `r`n" ` + +"Prénom : $GivenName `r`n" ` + +"Nom : $Surname `r`n" ` + +"Mail : $Mail `r`n" ` + +"Matricule : $EmployeeID `r`n" ` + +"Fonction : $Title `r`n" ` + +"`r`n" ` + +"Conformément à la politique entreprise le compte est resté en état désactivé pendant 30 jours `r`n" ` + +"La suppression du compte GMAIL se fait également en automatique." + + QueryGLPI $TitreB $MessageB "213" + } + } + $EtatUtilisateur = $null + + $CounterB++ +} + +## Creation compte + +$ListeNouveau = QuerySQLServer "SWDHBBDDP01.fr.dgs.group" "dhb_prd" "SELECT NOM,PRN,NOM_PAT,LIB_EMP,ADR_EML,MTR,NUM_ALC,COD_SEX,FLG_AGT,DAT_SRT,NUM_MAG_AGT FROM [dhb_prd].[dhbref].[TAB_RH_SAL] WHERE DTH_CRE >= '$DateCreation' ORDER BY DTH_CRE DESC" +$ListeNouveau | Format-Table +Pause +If ($ListeNouveau) { + Foreach ($NouveauUtilisateur in $ListeNouveau) { + + $InfoUserNew = Get-ADUser -Filter * | Where-Object {$_.GivenName -like $NouveauUtilisateur.PRN -and $_.Surname -like $NouveauUtilisateur.NOM} + + If ($InfoUserNew) { + $InfoUserNewA = Get-ADUser -identity $InfoUserNew.sAMAccountName -properties 'msDS-cloudExtensionAttribute1','msDS-cloudExtensionAttribute2',mail,employeeID,EmployeeNumber,EmployeeType,Title,Initials + } + + $C = $InfoUserNew.c + $City = $InfoUserNew.City + $Cn = $InfoUserNew.cn + $Company = $InfoUserNew.company + $department = $InfoUserNew.department + $DisplayName = $InfoUserNew.displayName + $EmailAddress = $InfoUserNew.EmailAddress + $Enable = $InfoUserNew.Enabled + $GivenName = $InfoUserNew.GivenName + $Name = $InfoUserNew.Name + $Office = $InfoUserNew.Office + $Organization = $InfoUserNew.Organization + $PostalCode = $InfoUserNew.PostalCode + $sn = $InfoUserNew.sn + $Surname = $InfoUserNew.Surname + + $ExtensionAttribute1 = $InfoUserNewA.'msDS-cloudExtensionAttribute1' + $ExtensionAttribute2 = $InfoUserNewA.'msDS-cloudExtensionAttribute2' + $Mail = $InfoUserNewA.Mail + $EmployeeID = $InfoUserNewA.employeeID + $EmployeeNumber = $InfoUserNewA.EmployeeNumber + $EmployeeType = $InfoUserNewA.EmployeeType + $Title = $InfoUserNewA.Title + $Initials = $InfoUserNewA.Initials + + If ($NouveauUtilisateur.MTR -eq $EmployeeID) { + Write-host "Existe deja" + } + Else { + Write-Host "A creer" + + $Surnametmp = ($NouveauUtilisateur.NOM).ToLower() + $GivenNametmp = ($NouveauUtilisateur.PRN).ToLower() + $Titletmp = ($NouveauUtilisateur.LIB_EMP).ToLower() + $Initialstmp = $NouveauUtilisateur.COD_SEX + $CodeMagtmp = $NouveauUtilisateur.NUM_MAG_AGT + + $SurnameNew = (Get-Culture).TextInfo.ToTitleCase($Surnametmp) + $GivenNameNew = (Get-Culture).TextInfo.ToTitleCase($GivenNametmp) + $TitleNew = (Get-Culture).TextInfo.ToTitleCase($Titletmp) + $EmployeeIDNew = $NouveauUtilisateur.MTR + + If ($NouveauUtilisateur.NOM_PAT) { + $SurnamePattmp = ($NouveauUtilisateur.NOM_PAT).ToLower() + $SurnamePatNew = (Get-Culture).TextInfo.ToTitleCase($SurnamePattmp) + } + + $NameNew = $GivenNameNew+" "+$SurnameNew + $DisplayNameNew = $GivenNameNew+" "+$SurnameNew+" "+$SurnamePatNew + $SamAccountNameNew = (("$GivenNameNew.$SurnameNew").Replace(' ','').Replace('é','e').Replace('è','e').Replace('ç','c').Replace('ï','i').Replace('î','i').Replace('ë','e').Replace('ö','o').Replace('ô','o')).ToLower() + $UserPrincipalNameNew = (("$GivenNameNew.$SurnameNew@fr.dgs.group").Replace(' ','').Replace('é','e').Replace('è','e').Replace('ç','c').Replace('ï','i').Replace('î','i').Replace('ë','e').Replace('ö','o').Replace('ô','o')).ToLower() + $MailNew = (("$GivenNameNew.$SurnameNew@saint-maclou.com").Replace(' ','').Replace('é','e').Replace('è','e').Replace('ç','c').Replace('ï','i').Replace('î','i').Replace('ë','e').Replace('ö','o').Replace('ô','o')).ToLower() + $Password = ([System.Guid]::NewGuid()).ToString() + + + If ($SamAccountNameNew.Length -gt 20) { + $tmp = ($SamAccountNameNew).substring(0, 20) + $SamAccountNameNew = $tmp + } + + Write-host $NameNew + Write-host $DisplayNameNew + Write-host $SamAccountNameNew + Write-host $UserPrincipalNameNew + Write-host $MailNew + Write-host $Password + Write-host $EmployeeIDNew + Write-host $TitleNew + + New-ADUser -Name "$NameNew" -DisplayName "$DisplayNameNew" -GivenName "$GivenNameNew" -Surname "$SurnameNew" -SamAccountName "$SamAccountNameNew" -UserPrincipalName "$UserPrincipalNameNew" -Path "OU=_ARRIVER,OU=Utilisateurs,DC=fr,DC=dgs,DC=group" -AccountPassword (ConvertTo-SecureString "$Password" -AsPlainText -force) -Enabled $true -EmailAddress $MailNew + + sleep 10 + + Set-ADUser -Identity $SamAccountNameNew -replace @{c="FR";co="France";countrycode=250} + Set-ADUser -Identity $SamAccountNameNew -Add @{'msDS-cloudExtensionAttribute1' = "Interne"} + Set-ADUser -Identity $SamAccountNameNew -Add @{'EmployeeType' = "Interne"} + Set-ADUser -Identity $SamAccountNameNew -Add @{'EmployeeID' = "$EmployeeIDNew"} + Set-ADUser -Identity $SamAccountNameNew -Title "$TitleNew" + Set-ADUser -Identity $SamAccountNameNew -Description "A remplir par le Helpdesk" + Set-ADUser -Identity $SamAccountNameNew -City "A remplir par le Helpdesk" + + If ($Initialstmp -eq "H") { + Set-ADUser -Identity $SamAccountNameNew -Initials "Mr" + Write-Host "Update civilite - Mr" + } + ElseIf ($Initialstmp -eq "F") { + Set-ADUser -Identity $SamAccountNameNew -Initials "Mme" + Write-Host "Update civilite - Mme" + } + Else { + + } + + $TitreC = "Creation du compte de : $DisplayNameNew " + + $MessageC = "Bonjour, `r`n `r`n" ` + +"la creation de compte automatique a cree le compte de : $DisplayNameNew `r`n `r`n" ` + +"Prenom : $GivenNameNew `r`n" ` + +"Nom : $SurnameNew `r`n" ` + +"Mail : $MailNew `r`n" ` + +"Password temporaire : $Password `r`n" ` + +"Matricule : $EmployeeIDNew `r`n" ` + +"Fonction : $TitleNew `r`n" + + QueryGLPI $TitreC $MessageC "104" + + $C = $Null + $City = $Null + $Cn = $Null + $Company = $Null + $department = $Null + $DisplayName = $Null + $EmailAddress = $Null + $Enable = $Null + $GivenName = $Null + $Name = $Null + $Office = $Null + $Organization = $Null + $PostalCode = $Null + $sn = $Null + $Surname = $Null + $ExtensionAttribute1 = $Null + $ExtensionAttribute2 = $Null + $Mail = $Null + $EmployeeID = $Null + $EmployeeNumber = $Null + $EmployeeType = $Null + $Title = $Null + $Initials = $Null + $Surnametmp = $Null + $GivenNametmp = $Null + $Titletmp = $Null + $Initialstmp = $Null + $CodeMagtmp = $Null + $SurnameNew = $Null + $SurnamePatNew = $Null + $GivenNameNew = $Null + $TitleNew = $Null + $EmployeeIDNew = $Null + } + } +} + +Stop-Transcript diff --git a/Ansible/ConfigureRemotingForAnsible.ps1 b/Ansible/ConfigureRemotingForAnsible.ps1 new file mode 100644 index 0000000..7e039bb --- /dev/null +++ b/Ansible/ConfigureRemotingForAnsible.ps1 @@ -0,0 +1,453 @@ +#Requires -Version 3.0 + +# Configure a Windows host for remote management with Ansible +# ----------------------------------------------------------- +# +# This script checks the current WinRM (PS Remoting) configuration and makes +# the necessary changes to allow Ansible to connect, authenticate and +# execute PowerShell commands. +# +# All events are logged to the Windows EventLog, useful for unattended runs. +# +# Use option -Verbose in order to see the verbose output messages. +# +# Use option -CertValidityDays to specify how long this certificate is valid +# starting from today. So you would specify -CertValidityDays 3650 to get +# a 10-year valid certificate. +# +# Use option -ForceNewSSLCert if the system has been SysPreped and a new +# SSL Certificate must be forced on the WinRM Listener when re-running this +# script. This is necessary when a new SID and CN name is created. +# +# Use option -EnableCredSSP to enable CredSSP as an authentication option. +# +# Use option -DisableBasicAuth to disable basic authentication. +# +# Use option -SkipNetworkProfileCheck to skip the network profile check. +# Without specifying this the script will only run if the device's interfaces +# are in DOMAIN or PRIVATE zones. Provide this switch if you want to enable +# WinRM on a device with an interface in PUBLIC zone. +# +# Use option -SubjectName to specify the CN name of the certificate. This +# defaults to the system's hostname and generally should not be specified. + +# Written by Trond Hindenes +# Updated by Chris Church +# Updated by Michael Crilly +# Updated by Anton Ouzounov +# Updated by Nicolas Simond +# Updated by Dag Wieërs +# Updated by Jordan Borean +# Updated by Erwan Quélin +# Updated by David Norman +# +# Version 1.0 - 2014-07-06 +# Version 1.1 - 2014-11-11 +# Version 1.2 - 2015-05-15 +# Version 1.3 - 2016-04-04 +# Version 1.4 - 2017-01-05 +# Version 1.5 - 2017-02-09 +# Version 1.6 - 2017-04-18 +# Version 1.7 - 2017-11-23 +# Version 1.8 - 2018-02-23 +# Version 1.9 - 2018-09-21 + +# Support -Verbose option +[CmdletBinding()] + +Param ( + [string]$SubjectName = $env:COMPUTERNAME, + [int]$CertValidityDays = 1095, + [switch]$SkipNetworkProfileCheck, + $CreateSelfSignedCert = $true, + [switch]$ForceNewSSLCert, + [switch]$GlobalHttpFirewallAccess, + [switch]$DisableBasicAuth = $false, + [switch]$EnableCredSSP +) + +Function Write-Log +{ + $Message = $args[0] + Write-EventLog -LogName Application -Source $EventSource -EntryType Information -EventId 1 -Message $Message +} + +Function Write-VerboseLog +{ + $Message = $args[0] + Write-Verbose $Message + Write-Log $Message +} + +Function Write-HostLog +{ + $Message = $args[0] + Write-Output $Message + Write-Log $Message +} + +Function New-LegacySelfSignedCert +{ + Param ( + [string]$SubjectName, + [int]$ValidDays = 1095 + ) + + $hostnonFQDN = $env:computerName + $hostFQDN = [System.Net.Dns]::GetHostByName(($env:computerName)).Hostname + $SignatureAlgorithm = "SHA256" + + $name = New-Object -COM "X509Enrollment.CX500DistinguishedName.1" + $name.Encode("CN=$SubjectName", 0) + + $key = New-Object -COM "X509Enrollment.CX509PrivateKey.1" + $key.ProviderName = "Microsoft Enhanced RSA and AES Cryptographic Provider" + $key.KeySpec = 1 + $key.Length = 4096 + $key.SecurityDescriptor = "D:PAI(A;;0xd01f01ff;;;SY)(A;;0xd01f01ff;;;BA)(A;;0x80120089;;;NS)" + $key.MachineContext = 1 + $key.Create() + + $serverauthoid = New-Object -COM "X509Enrollment.CObjectId.1" + $serverauthoid.InitializeFromValue("1.3.6.1.5.5.7.3.1") + $ekuoids = New-Object -COM "X509Enrollment.CObjectIds.1" + $ekuoids.Add($serverauthoid) + $ekuext = New-Object -COM "X509Enrollment.CX509ExtensionEnhancedKeyUsage.1" + $ekuext.InitializeEncode($ekuoids) + + $cert = New-Object -COM "X509Enrollment.CX509CertificateRequestCertificate.1" + $cert.InitializeFromPrivateKey(2, $key, "") + $cert.Subject = $name + $cert.Issuer = $cert.Subject + $cert.NotBefore = (Get-Date).AddDays(-1) + $cert.NotAfter = $cert.NotBefore.AddDays($ValidDays) + + $SigOID = New-Object -ComObject X509Enrollment.CObjectId + $SigOID.InitializeFromValue(([Security.Cryptography.Oid]$SignatureAlgorithm).Value) + + [string[]] $AlternativeName += $hostnonFQDN + $AlternativeName += $hostFQDN + $IAlternativeNames = New-Object -ComObject X509Enrollment.CAlternativeNames + + foreach ($AN in $AlternativeName) + { + $AltName = New-Object -ComObject X509Enrollment.CAlternativeName + $AltName.InitializeFromString(0x3,$AN) + $IAlternativeNames.Add($AltName) + } + + $SubjectAlternativeName = New-Object -ComObject X509Enrollment.CX509ExtensionAlternativeNames + $SubjectAlternativeName.InitializeEncode($IAlternativeNames) + + [String[]]$KeyUsage = ("DigitalSignature", "KeyEncipherment") + $KeyUsageObj = New-Object -ComObject X509Enrollment.CX509ExtensionKeyUsage + $KeyUsageObj.InitializeEncode([int][Security.Cryptography.X509Certificates.X509KeyUsageFlags]($KeyUsage)) + $KeyUsageObj.Critical = $true + + $cert.X509Extensions.Add($KeyUsageObj) + $cert.X509Extensions.Add($ekuext) + $cert.SignatureInformation.HashAlgorithm = $SigOID + $CERT.X509Extensions.Add($SubjectAlternativeName) + $cert.Encode() + + $enrollment = New-Object -COM "X509Enrollment.CX509Enrollment.1" + $enrollment.InitializeFromRequest($cert) + $certdata = $enrollment.CreateRequest(0) + $enrollment.InstallResponse(2, $certdata, 0, "") + + # extract/return the thumbprint from the generated cert + $parsed_cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 + $parsed_cert.Import([System.Text.Encoding]::UTF8.GetBytes($certdata)) + + return $parsed_cert.Thumbprint +} + +Function Enable-GlobalHttpFirewallAccess +{ + Write-Verbose "Forcing global HTTP firewall access" + # this is a fairly naive implementation; could be more sophisticated about rule matching/collapsing + $fw = New-Object -ComObject HNetCfg.FWPolicy2 + + # try to find/enable the default rule first + $add_rule = $false + $matching_rules = $fw.Rules | Where-Object { $_.Name -eq "Windows Remote Management (HTTP-In)" } + $rule = $null + If ($matching_rules) { + If ($matching_rules -isnot [Array]) { + Write-Verbose "Editing existing single HTTP firewall rule" + $rule = $matching_rules + } + Else { + # try to find one with the All or Public profile first + Write-Verbose "Found multiple existing HTTP firewall rules..." + $rule = $matching_rules | ForEach-Object { $_.Profiles -band 4 }[0] + + If (-not $rule -or $rule -is [Array]) { + Write-Verbose "Editing an arbitrary single HTTP firewall rule (multiple existed)" + # oh well, just pick the first one + $rule = $matching_rules[0] + } + } + } + + If (-not $rule) { + Write-Verbose "Creating a new HTTP firewall rule" + $rule = New-Object -ComObject HNetCfg.FWRule + $rule.Name = "Windows Remote Management (HTTP-In)" + $rule.Description = "Inbound rule for Windows Remote Management via WS-Management. [TCP 5985]" + $add_rule = $true + } + + $rule.Profiles = 0x7FFFFFFF + $rule.Protocol = 6 + $rule.LocalPorts = 5985 + $rule.RemotePorts = "*" + $rule.LocalAddresses = "*" + $rule.RemoteAddresses = "*" + $rule.Enabled = $true + $rule.Direction = 1 + $rule.Action = 1 + $rule.Grouping = "Windows Remote Management" + + If ($add_rule) { + $fw.Rules.Add($rule) + } + + Write-Verbose "HTTP firewall rule $($rule.Name) updated" +} + +# Setup error handling. +Trap +{ + $_ + Exit 1 +} +$ErrorActionPreference = "Stop" + +# Get the ID and security principal of the current user account +$myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent() +$myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID) + +# Get the security principal for the Administrator role +$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator + +# Check to see if we are currently running "as Administrator" +if (-Not $myWindowsPrincipal.IsInRole($adminRole)) +{ + Write-Output "ERROR: You need elevated Administrator privileges in order to run this script." + Write-Output " Start Windows PowerShell by using the Run as Administrator option." + Exit 2 +} + +$EventSource = $MyInvocation.MyCommand.Name +If (-Not $EventSource) +{ + $EventSource = "Powershell CLI" +} + +If ([System.Diagnostics.EventLog]::Exists('Application') -eq $False -or [System.Diagnostics.EventLog]::SourceExists($EventSource) -eq $False) +{ + New-EventLog -LogName Application -Source $EventSource +} + +# Detect PowerShell version. +If ($PSVersionTable.PSVersion.Major -lt 3) +{ + Write-Log "PowerShell version 3 or higher is required." + Throw "PowerShell version 3 or higher is required." +} + +# Find and start the WinRM service. +Write-Verbose "Verifying WinRM service." +If (!(Get-Service "WinRM")) +{ + Write-Log "Unable to find the WinRM service." + Throw "Unable to find the WinRM service." +} +ElseIf ((Get-Service "WinRM").Status -ne "Running") +{ + Write-Verbose "Setting WinRM service to start automatically on boot." + Set-Service -Name "WinRM" -StartupType Automatic + Write-Log "Set WinRM service to start automatically on boot." + Write-Verbose "Starting WinRM service." + Start-Service -Name "WinRM" -ErrorAction Stop + Write-Log "Started WinRM service." + +} + +# WinRM should be running; check that we have a PS session config. +If (!(Get-PSSessionConfiguration -Verbose:$false) -or (!(Get-ChildItem WSMan:\localhost\Listener))) +{ + If ($SkipNetworkProfileCheck) { + Write-Verbose "Enabling PS Remoting without checking Network profile." + Enable-PSRemoting -SkipNetworkProfileCheck -Force -ErrorAction Stop + Write-Log "Enabled PS Remoting without checking Network profile." + } + Else { + Write-Verbose "Enabling PS Remoting." + Enable-PSRemoting -Force -ErrorAction Stop + Write-Log "Enabled PS Remoting." + } +} +Else +{ + Write-Verbose "PS Remoting is already enabled." +} + +# Ensure LocalAccountTokenFilterPolicy is set to 1 +# https://github.com/ansible/ansible/issues/42978 +$token_path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" +$token_prop_name = "LocalAccountTokenFilterPolicy" +$token_key = Get-Item -Path $token_path +$token_value = $token_key.GetValue($token_prop_name, $null) +if ($token_value -ne 1) { + Write-Verbose "Setting LocalAccountTOkenFilterPolicy to 1" + if ($null -ne $token_value) { + Remove-ItemProperty -Path $token_path -Name $token_prop_name + } + New-ItemProperty -Path $token_path -Name $token_prop_name -Value 1 -PropertyType DWORD > $null +} + +# Make sure there is a SSL listener. +$listeners = Get-ChildItem WSMan:\localhost\Listener +If (!($listeners | Where-Object {$_.Keys -like "TRANSPORT=HTTPS"})) +{ + # We cannot use New-SelfSignedCertificate on 2012R2 and earlier + $thumbprint = New-LegacySelfSignedCert -SubjectName $SubjectName -ValidDays $CertValidityDays + Write-HostLog "Self-signed SSL certificate generated; thumbprint: $thumbprint" + + # Create the hashtables of settings to be used. + $valueset = @{ + Hostname = $SubjectName + CertificateThumbprint = $thumbprint + } + + $selectorset = @{ + Transport = "HTTPS" + Address = "*" + } + + Write-Verbose "Enabling SSL listener." + New-WSManInstance -ResourceURI 'winrm/config/Listener' -SelectorSet $selectorset -ValueSet $valueset + Write-Log "Enabled SSL listener." +} +Else +{ + Write-Verbose "SSL listener is already active." + + # Force a new SSL cert on Listener if the $ForceNewSSLCert + If ($ForceNewSSLCert) + { + + # We cannot use New-SelfSignedCertificate on 2012R2 and earlier + $thumbprint = New-LegacySelfSignedCert -SubjectName $SubjectName -ValidDays $CertValidityDays + Write-HostLog "Self-signed SSL certificate generated; thumbprint: $thumbprint" + + $valueset = @{ + CertificateThumbprint = $thumbprint + Hostname = $SubjectName + } + + # Delete the listener for SSL + $selectorset = @{ + Address = "*" + Transport = "HTTPS" + } + Remove-WSManInstance -ResourceURI 'winrm/config/Listener' -SelectorSet $selectorset + + # Add new Listener with new SSL cert + New-WSManInstance -ResourceURI 'winrm/config/Listener' -SelectorSet $selectorset -ValueSet $valueset + } +} + +# Check for basic authentication. +$basicAuthSetting = Get-ChildItem WSMan:\localhost\Service\Auth | Where-Object {$_.Name -eq "Basic"} + +If ($DisableBasicAuth) +{ + If (($basicAuthSetting.Value) -eq $true) + { + Write-Verbose "Disabling basic auth support." + Set-Item -Path "WSMan:\localhost\Service\Auth\Basic" -Value $false + Write-Log "Disabled basic auth support." + } + Else + { + Write-Verbose "Basic auth is already disabled." + } +} +Else +{ + If (($basicAuthSetting.Value) -eq $false) + { + Write-Verbose "Enabling basic auth support." + Set-Item -Path "WSMan:\localhost\Service\Auth\Basic" -Value $true + Write-Log "Enabled basic auth support." + } + Else + { + Write-Verbose "Basic auth is already enabled." + } +} + +# If EnableCredSSP if set to true +If ($EnableCredSSP) +{ + # Check for CredSSP authentication + $credsspAuthSetting = Get-ChildItem WSMan:\localhost\Service\Auth | Where-Object {$_.Name -eq "CredSSP"} + If (($credsspAuthSetting.Value) -eq $false) + { + Write-Verbose "Enabling CredSSP auth support." + Enable-WSManCredSSP -role server -Force + Write-Log "Enabled CredSSP auth support." + } +} + +If ($GlobalHttpFirewallAccess) { + Enable-GlobalHttpFirewallAccess +} + +# Configure firewall to allow WinRM HTTPS connections. +$fwtest1 = netsh advfirewall firewall show rule name="Allow WinRM HTTPS" +$fwtest2 = netsh advfirewall firewall show rule name="Allow WinRM HTTPS" profile=any +If ($fwtest1.count -lt 5) +{ + Write-Verbose "Adding firewall rule to allow WinRM HTTPS." + netsh advfirewall firewall add rule profile=any name="Allow WinRM HTTPS" dir=in localport=5986 protocol=TCP action=allow + Write-Log "Added firewall rule to allow WinRM HTTPS." +} +ElseIf (($fwtest1.count -ge 5) -and ($fwtest2.count -lt 5)) +{ + Write-Verbose "Updating firewall rule to allow WinRM HTTPS for any profile." + netsh advfirewall firewall set rule name="Allow WinRM HTTPS" new profile=any + Write-Log "Updated firewall rule to allow WinRM HTTPS for any profile." +} +Else +{ + Write-Verbose "Firewall rule already exists to allow WinRM HTTPS." +} + +# Test a remoting connection to localhost, which should work. +$httpResult = Invoke-Command -ComputerName "localhost" -ScriptBlock {$env:COMPUTERNAME} -ErrorVariable httpError -ErrorAction SilentlyContinue +$httpsOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck + +$httpsResult = New-PSSession -UseSSL -ComputerName "localhost" -SessionOption $httpsOptions -ErrorVariable httpsError -ErrorAction SilentlyContinue + +If ($httpResult -and $httpsResult) +{ + Write-Verbose "HTTP: Enabled | HTTPS: Enabled" +} +ElseIf ($httpsResult -and !$httpResult) +{ + Write-Verbose "HTTP: Disabled | HTTPS: Enabled" +} +ElseIf ($httpResult -and !$httpsResult) +{ + Write-Verbose "HTTP: Enabled | HTTPS: Disabled" +} +Else +{ + Write-Log "Unable to establish an HTTP or HTTPS remoting session." + Throw "Unable to establish an HTTP or HTTPS remoting session." +} +Write-VerboseLog "PS Remoting has been successfully configured for Ansible." diff --git a/Applications/AWS-CLI/Force-Update.ps1 b/Applications/AWS-CLI/Force-Update.ps1 new file mode 100644 index 0000000..38a5feb --- /dev/null +++ b/Applications/AWS-CLI/Force-Update.ps1 @@ -0,0 +1,8 @@ +# https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html +$dlurl = "https://s3.amazonaws.com/aws-cli/AWSCLI64PY3.msi" +$installerPath = Join-Path $env:TEMP (Split-Path $dlurl -Leaf) +$ProgressPreference = 'SilentlyContinue' +Invoke-WebRequest $dlurl -OutFile $installerPath +Start-Process -FilePath msiexec -Args "/i $installerPath /passive" -Verb RunAs -Wait +Remove-Item $installerPath +$env:Path += ";C:\Program Files\Amazon\AWSCLI\bin" \ No newline at end of file diff --git a/Applications/Acrobat Reader DC/Force-Update.ps1 b/Applications/Acrobat Reader DC/Force-Update.ps1 new file mode 100644 index 0000000..9ad1bdd --- /dev/null +++ b/Applications/Acrobat Reader DC/Force-Update.ps1 @@ -0,0 +1,28 @@ +# Silently install Adobe Reader DC with Microsoft Intune +# In order to distribute Adobe Acrobat Reader DC software you need to have +# a valid Adobe Acrobat Reader DC Distribution Agreement in place. +# See http://www.adobe.com/products/acrobat/distribute.html?readstep for details. + +# Check if Software is installed already in registry. +$CheckADCReg = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | where {$_.DisplayName -like "Adobe Acrobat Reader DC*"} +# If Adobe Reader is not installed continue with script. If it's istalled already script will exit. +If ($CheckADCReg -eq $null) { + + # Path for the temporary downloadfolder. Script will run as system so no issues here + $Installdir = "c:\temp\install_adobe" + New-Item -Path $Installdir -ItemType directory + + # Download the installer from the Adobe website. Always check for new versions!! + $source = "ftp://ftp.adobe.com/pub/adobe/reader/win/AcrobatDC/1800920044/AcroRdrDC1800920044_fr_FR.exe" + $destination = "$Installdir\AcroRdrDC1800920044_fr_FR.exe" + Invoke-WebRequest $source -OutFile $destination + + # Start the installation when download is finished + Start-Process -FilePath "$Installdir\AcroRdrDC1800920044_fr_FR.exe" -ArgumentList "/sAll /rs /rps /msi /norestart /quiet EULA_ACCEPT=YES" + + # Wait for the installation to finish. Test the installation and time it yourself. I've set it to 240 seconds. + Start-Sleep -s 240 + + # Finish by cleaning up the download. I choose to leave c:\temp\ for future installations. + rm -Force $Installdir\AcroRdrDC* +} \ No newline at end of file diff --git a/Applications/Edge/Force-Update.ps1 b/Applications/Edge/Force-Update.ps1 new file mode 100644 index 0000000..06eb4fd --- /dev/null +++ b/Applications/Edge/Force-Update.ps1 @@ -0,0 +1,236 @@ +<# +.SYNOPSIS + Get-EdgeEnterpriseMSI + +.DESCRIPTION + Imports all device configurations in a folder to a specified tenant + +.PARAMETER Channel + Channel to download, Valid Options are: Dev, Beta, Stable, EdgeUpdate, Policy. + +.PARAMETER Platform + Platform to download, Valid Options are: Windows or MacOS, if using channel "Policy" this should be set to "any" + Defaults to Windows if not set. + +.PARAMETER Architecture + Architecture to download, Valid Options are: x86, x64, arm64, if using channel "Policy" this should be set to "any" + Defaults to x64 if not set. + +.PARAMETER Version + If set the script will try and download a specific version. If not set it will download the latest. + +.PARAMETER Folder + Specifies the Download folder + +.PARAMETER Force + Overwrites the file without asking. + +.NOTES + Version: 1.2 + Author: Mattias Benninge + Creation Date: 2020-07-01 + + Version history: + + 1.0 - Initial script development + 1.1 - Fixes and improvements by @KarlGrindon + - Script now handles multiple files for e.g. MacOS Edge files + - Better error handling and formating + - URI Validation + 1.2 - Better compability on servers (force TLS and remove dependency to IE) + + + https://docs.microsoft.com/en-us/mem/configmgr/apps/deploy-use/deploy-edge + +.EXAMPLE + + Download the latest version for the Beta channel and overwrite any existing file + .\Get-EdgeEnterpriseMSI.ps1 -Channel Beta -Folder D:\SourceCode\PowerShell\Div -Force + +#> +[CmdletBinding()] +param( + [Parameter(Mandatory = $True, HelpMessage = 'Channel to download, Valid Options are: Dev, Beta, Stable, EdgeUpdate, Policy')] + [ValidateSet('Dev', 'Beta', 'Stable', 'EdgeUpdate', 'Policy')] + [string]$Channel = "Stable", + + [Parameter(Mandatory = $True, HelpMessage = 'Folder where the file will be downloaded')] + [ValidateNotNullOrEmpty()] + [string]$Folder = "C:\temp", + + [Parameter(Mandatory = $false, HelpMessage = 'Platform to download, Valid Options are: Windows or MacOS')] + [ValidateSet('Windows', 'MacOS', 'any')] + [string]$Platform = "Windows", + + [Parameter(Mandatory = $false, HelpMessage = "Architecture to download, Valid Options are: x86, x64, arm64, any")] + [ValidateSet('x86', 'x64', 'arm64', 'any')] + [string]$Architecture = "x64", + + [parameter(Mandatory = $false, HelpMessage = "Specifies which version to download")] + [ValidateNotNullOrEmpty()] + [string]$ProductVersion, + + [parameter(Mandatory = $false, HelpMessage = "Overwrites the file without asking")] + [Switch]$Force +) + +$ErrorActionPreference = "Stop" + +$edgeEnterpriseMSIUri = 'https://edgeupdates.microsoft.com/api/products?view=enterprise' + +# Validating parameters to reduce user errors +if ($Channel -eq "Policy" -and ($Architecture -ne "Any" -or $Platform -ne "Any")) { + Write-Warning ("Channel 'Policy' requested, but either 'Architecture' and/or 'Platform' is not set to 'Any'. + Setting Architecture and Platform to 'Any'") + + $Architecture = "Any" + $Platform = "Any" +} +elseif ($Channel -ne "Policy" -and ($Architecture -eq "Any" -or $Platform -eq "Any")) { + throw "If Channel isn't set to policy, architecture and/or platform can't be set to 'Any'" +} +elseif ($Channel -eq "EdgeUpdate" -and ($Architecture -ne "x86" -or $Platform -eq "Windows")) { + Write-Warning ("Channel 'EdgeUpdate' requested, but either 'Architecture' is not set to x86 and/or 'Platform' + is not set to 'Windows'. Setting Architecture to 'x86' and Platform to 'Windows'") + + $Architecture = "x86" + $Platform = "Windows" +} + +Write-Host "Enabling connection over TLS for better compability on servers" -ForegroundColor Green +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12 + +# Test if HTTP status code 200 is returned from URI +try { + Invoke-WebRequest $edgeEnterpriseMSIUri -UseBasicParsing | Where-Object StatusCode -match 200 | Out-Null +} +catch { + throw "Unable to get HTTP status code 200 from $edgeEnterpriseMSIUri. Does the URL still exist?" +} + +Write-Host "Getting available files from $edgeEnterpriseMSIUri" -ForegroundColor Green + +# Try to get JSON data from Microsoft +try { + $response = Invoke-WebRequest -Uri $edgeEnterpriseMSIUri -Method Get -ContentType "application/json" -UseBasicParsing -ErrorVariable InvokeWebRequestError + $jsonObj = ConvertFrom-Json $([String]::new($response.Content)) + Write-Host "Succefully retrived data" -ForegroundColor Green +} +catch { + throw "Could not get MSI data: $InvokeWebRequestError" +} + +# Alternative is to use Invoke-RestMethod to get a Json object directly +# $jsonObj = Invoke-RestMethod -Uri "https://edgeupdates.microsoft.com/api/products?view=enterprise" -UseBasicParsing + +$selectedIndex = [array]::indexof($jsonObj.Product, "$Channel") + +if (-not $ProductVersion) { + try { + Write-host "No version specified, getting the latest for $Channel" -ForegroundColor Green + $selectedVersion = (([Version[]](($jsonObj[$selectedIndex].Releases | + Where-Object { $_.Architecture -eq $Architecture -and $_.Platform -eq $Platform }).ProductVersion) | + Sort-Object -Descending)[0]).ToString(4) + + Write-Host "Latest Version for channel $Channel is $selectedVersion`n" -ForegroundColor Green + $selectedObject = $jsonObj[$selectedIndex].Releases | + Where-Object { $_.Architecture -eq $Architecture -and $_.Platform -eq $Platform -and $_.ProductVersion -eq $selectedVersion } + } + catch { + throw "Unable to get object from Microsoft. Check your parameters and refer to script help." + } +} +else { + Write-Host "Matching $ProductVersion on channel $Channel" -ForegroundColor Green + $selectedObject = ($jsonObj[$selectedIndex].Releases | + Where-Object { $_.Architecture -eq $Architecture -and $_.Platform -eq $Platform -and $_.ProductVersion -eq $ProductVersion }) + + if (-not $selectedObject) { + throw "No version matching $ProductVersion found in $channel channel for $Architecture architecture." + } + else { + Write-Host "Found matching version`n" -ForegroundColor Green + } +} + + +if (Test-Path $Folder) { + foreach ($artifacts in $selectedObject.Artifacts) { + # Not showing the progress bar in Invoke-WebRequest is quite a bit faster than default + $ProgressPreference = 'SilentlyContinue' + + Write-host "Starting download of: $($artifacts.Location)" -ForegroundColor Green + # Work out file name + $fileName = Split-Path $artifacts.Location -Leaf + + if (Test-Path "$Folder\$fileName" -ErrorAction SilentlyContinue) { + if ($Force) { + Write-Host "Force specified. Will attempt to download and overwrite existing file." -ForegroundColor Green + try { + Invoke-WebRequest -Uri $artifacts.Location -OutFile "$Folder\$fileName" -UseBasicParsing + } + catch { + throw "Attempted to download file, but failed: $error[0]" + } + } + else { + # CR-someday: There should be an evaluation of the file version, if possible. Currently the function only + # checks if a file of the same name exists, not if the versions differ + Write-Host "$Folder\$fileName already exists!" -ForegroundColor Yellow + + do { + $overWrite = Read-Host -Prompt "Press Y to overwrite or N to quit." + } + # -notmatch is case insensitive + while ($overWrite -notmatch '^y$|^n$') + + if ($overWrite -match '^y$') { + Write-Host "Starting Download" -ForegroundColor Green + try { + Invoke-WebRequest -Uri $artifacts.Location -OutFile "$Folder\$fileName" -UseBasicParsing + } + catch { + throw "Attempted to download file, but failed: $error[0]" + } + } + else { + Write-Host "File already exists and user chose not to overwrite, exiting script." -ForegroundColor Red + exit + } + } + } + else { + Write-Host "Starting Download" -ForegroundColor Green + try { + Invoke-WebRequest -Uri $artifacts.Location -OutFile "$Folder\$fileName" -UseBasicParsing + } + catch { + throw "Attempted to download file, but failed: $error[0]" + } + } + if (((Get-FileHash -Algorithm $artifacts.HashAlgorithm -Path "$Folder\$fileName").Hash) -eq $artifacts.Hash) { + Write-Host "Calculated checksum matches known checksum`n" -ForegroundColor Green + } + else { + Write-Warning "Checksum mismatch!" + Write-Warning "Expected Hash: $($artifacts.Hash)" + Write-Warning "Downloaded file Hash: $((Get-FileHash -Algorithm $($artifacts.HashAlgorithm) -Path "$Folder\$fileName").Hash)`n" + } + } +} +Else { + throw "Folder $Folder does not exist" +} +Write-Host "-- Script Completed: File Downloaded -- " -ForegroundColor Green + +Write-Host "Installing..." -ForegroundColor Green + +cmd /c start /wait msiexec /i "$Folder\$fileName" /qn /norestart + +Set-Service edgeupdate -StartupType Manual -ErrorAction SilentlyContinue +Set-Service edgeupdatem -StartupType Manual -ErrorAction SilentlyContinue + +Unregister-ScheduledTask -TaskName MicrosoftEdgeUpdateTaskMachineCore -Confirm:$false -ErrorAction SilentlyContinue +Unregister-ScheduledTask -TaskName MicrosoftEdgeUpdateTaskMachineUA -Confirm:$false -ErrorAction SilentlyContinue + +Write-Host "Installed Microsoft Edge" -ForegroundColor Green \ No newline at end of file diff --git a/Applications/Firefox/Force-Update.ps1 b/Applications/Firefox/Force-Update.ps1 new file mode 100644 index 0000000..6fac3a3 --- /dev/null +++ b/Applications/Firefox/Force-Update.ps1 @@ -0,0 +1,2175 @@ +<# +Update-MozillaFirefox.ps1 + + +Requires either (a) PowerShell v3 or later or (b) .NET 3.5 or later (at Step 8: JSON import and conversion). +Assumes that one instance (the latest non-beta version) of Mozilla Firefox is to be used. The script will exit at Step 15, if more than one instance of Firefox is detected. + + +Latest Firefox version numbers: +https://product-details.mozilla.org/ +https://product-details.mozilla.org/1.0/firefox_versions.json +https://product-details.mozilla.org/1.0/thunderbird_versions.json + +Languages: +https://product-details.mozilla.org/1.0/languages.json + +Regions: +https://product-details.mozilla.org/1.0/regions/en-US.json + +Release History: +https://product-details.mozilla.org/1.0/firefox_history_stability_releases.json + +Download Latest Firefox Version URLs: +https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt +https://download.mozilla.org/?product=firefox-latest&os=win&lang=en-US +http://www.mozilla.org/firefox/organizations/all/ +https://www.mozilla.org/en-US/firefox/all/ + +Check if the installed version of Firefox is the latest: +https://www.mozilla.org/en-US/firefox/new/ + +Uninstall Firefox: +https://support.mozilla.org/en-US/kb/uninstall-firefox-from-your-computer +https://wiki.mozilla.org/Installer:Command_Line_Arguments + + +#> + + +# Step 1 +# Establish the common parameters +$path = $env:temp +$computer = $env:COMPUTERNAME +$ErrorActionPreference = "Stop" +$start_time = Get-Date +$empty_line = "" +$quote ='"' +$unquote ='"' +$firefox_enumeration = @() +$latest_firefox = @() +$after_update_firefoxes = @() + + +# Function to check whether a program is installed or not +Function Check-InstalledSoftware ($display_name) { + Return Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -like $display_name } +} # function + + + + +# Step 2 +# Determine the architecture of a machine # Credit: Tobias Weltner: "PowerTips Monthly vol 8 January 2014" +If ([IntPtr]::Size -eq 8) { + $empty_line | Out-String + "Running in a 64-bit subsystem" | Out-String + $64 = $true + $bit_number = "64" + $registry_paths = @( + 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*', + 'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' + ) + $empty_line | Out-String +} Else { + $empty_line | Out-String + "Running in a 32-bit subsystem" | Out-String + $64 = $false + $bit_number = "32" + $registry_paths = @( + 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*' + ) + $empty_line | Out-String +} # Else + + + + +# Step 3 +# Determine whether Firefox is installed or not +$firefox_is_installed = $false +If ((Check-InstalledSoftware "*Firefox*") -ne $null) { + $firefox_is_installed = $true +} Else { + $continue = $true +} # Else + + + + +# Step 4 +# Enumerate the existing installed Firefoxes +$32_bit_firefox_is_installed = $false +$64_bit_firefox_is_installed = $false +$registry_paths_selection = Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { ($_.DisplayName -like "*Firefox*" ) -and ($_.Publisher -like "Mozilla*" )} + +If ($registry_paths_selection -ne $null) { + + ForEach ($item in $registry_paths_selection) { + + # Custom Values + If (($item.DisplayName.Split(" ")[-1] -match "\(") -eq $false) { + $locale = ($item.DisplayName.Split(" ")[-1]).Replace(")","") + } Else { + $continue = $true + } # Else + + + If (($item.DisplayName.Split(" ")[-1] -match "\(x") -eq $true) { + + If ($item.DisplayName.Split(" ")[-1] -like "(x86") { + $32_bit_firefox_is_installed = $true + $type = "32-bit" + } ElseIf ($item.DisplayName.Split(" ")[-1] -like "(x64") { + $64_bit_firefox_is_installed = $true + $type = "64-bit" + } Else { + $continue = $true + } # Else + + } ElseIf (($item.DisplayName.Split(" ")[-2] -match "\(x") -eq $true) { + + If ($item.DisplayName.Split(" ")[-2] -like "(x86") { + $32_bit_firefox_is_installed = $true + $type = "32-bit" + } ElseIf ($item.DisplayName.Split(" ")[-2] -like "(x64") { + $64_bit_firefox_is_installed = $true + $type = "64-bit" + } Else { + $continue = $true + } # Else + + } Else { + $continue = $true + } # Else + + # $product_version_enum = ((Get-ItemProperty -Path "C:\Program Files (x86)\Mozilla Firefox\Firefox.exe" -ErrorAction SilentlyContinue -Name VersionInfo).VersionInfo).ProductVersion + $product_version_enum = ((Get-ItemProperty -Path "$($item.InstallLocation)\Firefox.exe" -ErrorAction SilentlyContinue -Name VersionInfo).VersionInfo).ProductVersion + $test_stability = $product_version_enum -match "(\d+)\.(\d+)\.(\d+)" + $test_major = $product_version_enum -match "(\d+)\.(\d+)" + If (($product_version_enum -ne $null) -and ($test_stability -eq $true)) { $product_version_enum -match "(?\d+)\.(?\d+)\.(?\d+)" | Out-Null } Else { $continue = $true } + If (($product_version_enum -ne $null) -and ($test_stability -eq $false) -and ($test_major -eq $true)) { $product_version_enum -match "(?\d+)\.(?\d+)" | Out-Null } Else { $continue = $true } + + + $firefox_enumeration += $obj_firefox = New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $item.DisplayName.Replace("(TM)","") + 'Publisher' = $item.Publisher + 'Product' = $item.DisplayName.Split(" ")[1] + 'Type' = $type + 'Locale' = $locale + 'Major Version' = If ($Matches.C1 -ne $null) { $Matches.C1 } Else { $continue = $true } + 'Minor Version' = If ($Matches.C2 -ne $null) { $Matches.C2 } Else { $continue = $true } + 'Build Number' = If ($Matches.C3 -ne $null) { $Matches.C3 } Else { "-" } + 'Computer' = $computer + 'Install Location' = $item.InstallLocation + 'Standard Uninstall String' = $item.UninstallString.Trim('"') + 'Release Notes' = $item.URLUpdateInfo + 'Identifying Number' = $item.PSChildName + 'Version' = $item.DisplayVersion + } # New-Object + } # foreach ($item) + + + # Display the Firefox Version Enumeration in console + If ($firefox_enumeration -ne $null) { + $firefox_enumeration.PSObject.TypeNames.Insert(0,"Firefox Version Enumeration") + $firefox_enumeration_selection = $firefox_enumeration | Select-Object 'Name','Publisher','Product','Type','Locale','Major Version','Minor Version','Build Number','Computer','Install Location','Standard Uninstall String','Release Notes','Version' + $empty_line | Out-String + $header_firefox_enumeration = "Enumeration of Firefox Versions Found on the System" + $coline_firefox_enumeration = "---------------------------------------------------" + Write-Output $header_firefox_enumeration + $coline_firefox_enumeration | Out-String + Write-Output $firefox_enumeration_selection + } Else { + $continue = $true + } # Else + +} Else { + $continue = $true +} # Else (Step 4) + + + + +# Step 5 +# Warn the user if more than one instance of Firefox is installed on the system +$multiple_firefoxes = $false +If ((($firefox_enumeration | Measure-Object Name).Count) -eq 0) { + Write-Verbose "No Firefox seems to be installed on the system." +} ElseIf ((($firefox_enumeration | Measure-Object Name).Count) -eq 1) { + # One instance of Firefox seems to be installed. + $continue = $true +} ElseIf ((($firefox_enumeration | Measure-Object Name).Count) -ge 2) { + $empty_line | Out-String + Write-Warning "More than one instance of Firefox seems to be installed on the system." + $multiple_firefoxes = $true +} Else { + $continue = $true +} # Else + + + + +# Step 6 +# Check if the computer is connected to the Internet # Credit: ps1: "Test Internet connection" +If (([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet) -eq $false) { + $empty_line | Out-String + Return "The Internet connection doesn't seem to be working. Exiting without checking the latest Firefox version numbers or without updating Firefox (at Step 6)." +} Else { + Write-Verbose 'Checking the most recent Firefox version numbers from the Mozilla website...' +} # Else + + + + +# Step 7 +# Check the baseline Firefox version numbers by connecting to the Mozilla website and write it to a file (The Baseline). Also download three additional auxillary JSON files from Mozilla. +# Source: https://groups.google.com/forum/#!topic/mozilla.release.engineering/EOyvryJNq7A + +$baseline_url = "https://product-details.mozilla.org/1.0/firefox_versions.json" +$baseline_file = "$path\firefox_current_versions.json" + + try + { + $download_baseline = New-Object System.Net.WebClient + $download_baseline.DownloadFile($baseline_url, $baseline_file) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $baseline_url" + If (([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet) -eq $true) { + $page_exception_text = "Please consider running this script again. Sometimes this Mozilla page just isn't queryable for no apparent reason. The success rate 'in the second go' usually seems to be a bit higher." + $empty_line | Out-String + Write-Output $page_exception_text + } Else { + $continue = $true + } # Else + $empty_line | Out-String + Return "Exiting without checking the latest Firefox version numbers or without updating Firefox (at Step 7)." + } + + + + +$history_url = "https://product-details.mozilla.org/1.0/firefox_history_stability_releases.json" +$history_file = "$path\firefox_release_history.json" + + try + { + $download_history = New-Object System.Net.WebClient + $download_history.DownloadFile($history_url, $history_file) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $history_url" + If (([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet) -eq $true) { + $empty_line | Out-String + Write-Output $page_exception_text + } Else { + $continue = $true + } # Else + $empty_line | Out-String + Return "Exiting without checking the latest Firefox version numbers or without updating Firefox (at Step 7 while trying to download the history file)." + } + + + + +# https://product-details.mozilla.org/1.0/all.json +# https://product-details.mozilla.org/1.0/firefox.json +$major_url = "https://product-details.mozilla.org/1.0/firefox_history_major_releases.json" +$major_file = "$path\firefox_major_versions.json" + + try + { + $download_major = New-Object System.Net.WebClient + $download_major.DownloadFile($major_url, $major_file) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $major_url" + If (([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet) -eq $true) { + $empty_line | Out-String + Write-Output $page_exception_text + } Else { + $continue = $true + } # Else + $empty_line | Out-String + Return "Exiting without checking the latest Firefox version numbers or without updating Firefox (at Step 7 while trying to download a file containing the major version release dates)." + } + + + + +$language_url = "https://product-details.mozilla.org/1.0/languages.json" +$language_file = "$path\firefox_languages.json" + + try + { + $download_language = New-Object System.Net.WebClient + $download_language.DownloadFile($language_url, $language_file) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $language_url" + If (([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet) -eq $true) { + $empty_line | Out-String + Write-Output $page_exception_text + } Else { + $continue = $true + } # Else + $empty_line | Out-String + Return "Exiting without checking the latest Firefox version numbers or without updating Firefox (at Step 7 while trying to download the languages file)." + } + + + + +$region_url = "https://product-details.mozilla.org/1.0/regions/en-US.json" +$region_file = "$path\firefox_regions.json" + + try + { + $download_region = New-Object System.Net.WebClient + $download_region.DownloadFile($region_url, $region_file) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $region_url" + If (([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet) -eq $true) { + $empty_line | Out-String + Write-Output $page_exception_text + } Else { + $continue = $true + } # Else + $empty_line | Out-String + Return "Exiting without checking the latest Firefox version numbers or without updating Firefox (at Step 7 while trying to download the regions file)." + } + +Start-Sleep -Seconds 2 + + + + +# Step 8 +# Import the downloaded JSON files as objects +# Source: http://stackoverflow.com/questions/1825585/determine-installed-powershell-version?rq=1 +# Source: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/convertfrom-json +# Source: https://blogs.technet.microsoft.com/heyscriptingguy/2014/04/23/powertip-convert-json-file-to-powershell-object/ +# Source: http://powershelldistrict.com/powershell-json/ +# Source: https://technet.microsoft.com/en-us/library/ee692803.aspx +# Source: http://stackoverflow.com/questions/32887583/powershell-v2-converts-dictionary-to-array-when-returned-from-a-function +<# + + Update channels - Advanced + + Updates can be retrieved from a number of different update channels. To check which channel you are on, look in about:config at app.update.channel. This determines what kind of updates you will receive. The current update channels are: + + nightly: The nightly channel allows you to update to every nightly test build that is produced. There are nightly channels for the trunk (i.e., current release version plus 3 numbers); this is also a nightly channel for the remaining legacy branches (Firefox 3.6 & Thunderbird 3.1 builds). + + aurora: This is a new channel which has been introduced with the rapid-release scheme; these builds reflect changes which also went into beta for the next release, thus making them available immediately, or which were deemed unsuitable for beta but safe for the following release (and, in general don't contain any string changes). + + beta: The beta channel lets you receive every beta, release candidate, and release version of the product (e.g. Firefox 1.5 beta 1, Firefox 1.5 RC 1, Firefox 1.5, etc.). With the new rapid-release process (starting with Firefox/Thunderbird 5.0 and SeaMonkey 2.1), every beta is a release candidate for the next version now, and the actual release build is no longer provided on the beta channel. + + esr: This is a special release channel for extended-support releases which are mostly targeting enterprise users. Features are frozen with every 7th or so update cycle and only security updates provided (i.e., Firefox/Thunderbird 10.0 ESR updates to 10.0.1, 10.0.2, ..., 10.0.x, then 17.0 as the next ESR branch). + + default: This channel is used when there is no channel information, for example if you build Firefox or Thunderbird yourself. There are no updates on this channel. This channel is frequently used by Linux distributions, given that they provide own updates through their respective package-management system. + + release: The release channel will provide stable release versions, including security updates (e.g. Firefox 2.0, 2.0.0.4 etc.). + + Source: http://kb.mozillazine.org/Software_Update + +#> + +# Join the two files containing release dates +# Source: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/convertfrom-stringdata +# Source: https://technet.microsoft.com/en-us/library/ee692803.aspx +# $history_file_content = (Get-Content -Path $history_file) +# $major_file_content = (Get-Content -Path $major_file) +$history_conversion = [System.IO.File]::ReadAllText($history_file).Replace("}",", ") +$major_conversion = [System.IO.File]::ReadAllText($major_file).Replace("{","") +$all_firefox = [string]$history_conversion + $major_conversion + +If ((($PSVersionTable.PSVersion).Major -lt 3) -or (($PSVersionTable.PSVersion).Major -eq $null)) { + + # PowerShell v2 or earlier JSON import # Credit: Goyuix: "Read Json Object in Powershell 2.0" + # Requires .NET 3.5 or later + $powershell_v2_or_earlier = $true + + If (($PSVersionTable.PSVersion).Major -eq $null) { + $powershell_v1 = $true + # LoadWithPartialName is obsolete, source: https://msdn.microsoft.com/en-us/library/system.reflection.assembly(v=vs.110).aspx + [System.Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions") + } ElseIf (($PSVersionTable.PSVersion).Major -lt 3) { + $powershell_v2 = $true + Add-Type -AssemblyName "System.Web.Extensions" + } Else { + $continue = $true + } # Else + + $serializer = New-Object System.Web.Script.Serialization.JavaScriptSerializer + $latest = $serializer.DeserializeObject((Get-Content -Path $baseline_file) -join "`n") + $history = $serializer.DeserializeObject((Get-Content -Path $history_file) -join "`n") + $major = $serializer.DeserializeObject((Get-Content -Path $major_file) -join "`n") + $all_dates = $serializer.DeserializeObject(($all_firefox) -join "`n") + $language = $serializer.DeserializeObject((Get-Content -Path $language_file) -join "`n") + $region = $serializer.DeserializeObject((Get-Content -Path $region_file) -join "`n") + try + { + $latest_release_date = (Get-Date ($all_dates.Get_Item("$($latest.LATEST_FIREFOX_VERSION)"))).ToShortDateString() + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } +} ElseIf (($PSVersionTable.PSVersion).Major -ge 3) { + + # PowerShell v3 or later JSON import + $latest = (Get-Content -Raw -Path $baseline_file) | ConvertFrom-Json + $history = (Get-Content -Raw -Path $history_file) | ConvertFrom-Json + $major = (Get-Content -Raw -Path $major_file) | ConvertFrom-Json + $all_dates = ($all_firefox) | ConvertFrom-Json + $language = (Get-Content -Raw -Path $language_file) | ConvertFrom-Json + $region = (Get-Content -Raw -Path $region_file) | ConvertFrom-Json + try + { + $latest_release_date = (Get-Date ($all_dates | Select-Object -ExpandProperty "$($latest.LATEST_FIREFOX_VERSION)")).ToShortDateString() + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } +} Else { + $continue = $true +} # Else + + + # Had the release date not yet been resolved, convert the .json formatted dates to a hash table and try to figure out the date + # Source: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/convertfrom-stringdata + # Source: https://technet.microsoft.com/en-us/library/ee692803.aspx + If ($latest_release_date -eq $null) { + $raw_conversion = $all_firefox.Replace("{","").Replace(": "," = ").Replace(",","`r`n").Replace("}","`r`n").Replace('"','') + $release_dates = ConvertFrom-StringData -StringData $raw_conversion + $release_dates_list = $release_dates.GetEnumerator() | Sort-Object Value -Descending + + If ($release_dates.ContainsKey("$($latest.LATEST_FIREFOX_VERSION)")) { + $latest_release_date = $release_dates.Get_Item("$($latest.LATEST_FIREFOX_VERSION)") + } Else { + $latest_release_date = "[unknown]" + } # Else + + } Else { + $continue = $true + } # Else + + $latest_firefox += $obj_latest = New-Object -TypeName PSCustomObject -Property @{ + 'Nightly' = $latest.FIREFOX_NIGHTLY + 'Aurora' = $latest.FIREFOX_AURORA + 'In Development' = $latest.LATEST_FIREFOX_DEVEL_VERSION + 'Released Beta' = $latest.LATEST_FIREFOX_RELEASED_DEVEL_VERSION + 'Extended-Support Release (ESR)' = $latest.FIREFOX_ESR + 'Extended-Support Release (ESR) Next' = $latest.FIREFOX_ESR_NEXT + 'Old' = $latest.LATEST_FIREFOX_OLDER_VERSION + 'Latest Release Date' = $latest_release_date + 'Major Versions' = $major_url + 'Release History' = $history_url + 'History' = "https://www.mozilla.org/en-US/firefox/releases/" + 'Info' = [string]"https://www.mozilla.org/en-US/firefox/" + $latest.LATEST_FIREFOX_VERSION + "/releasenotes/" + 'Current' = $latest.LATEST_FIREFOX_VERSION + } # New-Object + $latest_firefox.PSObject.TypeNames.Insert(0,"Latest Firefox Versions") + $most_recent_firefox_version = $latest_firefox | Select-Object -ExpandProperty Current + + # Display the most recent and extended support Firefox version numbers in console + If ($latest_firefox -ne $null) { + $latest_firefox_selection = $latest_firefox | Select-Object 'Nightly','Aurora','In Development','Released Beta','Extended-Support Release (ESR)','Old','Latest Release Date','Release History','History','Info','Current' + $empty_line | Out-String + $header_firefox_enumeration = "Latest Firefox Versions" + $coline_firefox_enumeration = "-----------------------" + Write-Output $header_firefox_enumeration + $coline_firefox_enumeration | Out-String + Write-Output $latest_firefox_selection + } Else { + $continue = $true + } # Else + + + + +# Step 9 +# Try to determine which Firefox versions, if any, are outdated and need to be updated. +$downloading_firefox_is_required = $false +$downloading_firefox_32_is_required = $false +$downloading_firefox_64_is_required = $false + +If ($firefox_is_installed -eq $true) { + + $most_recent_firefox_already_exists = Check-InstalledSoftware "Mozilla Firefox $($most_recent_firefox_version)*" + $most_recent_32_bit_firefox_already_exists = Check-InstalledSoftware "Mozilla Firefox $($most_recent_firefox_version) (x86*" + $most_recent_64_bit_firefox_already_exists = Check-InstalledSoftware "Mozilla Firefox $($most_recent_firefox_version) (x64*" + $all_32_bit_firefoxes = $firefox_enumeration | Where-Object { $_.Type -eq "32-bit" } + $number_of_32_bit_firefoxes = ($all_32_bit_firefoxes | Measure-Object).Count + $all_64_bit_firefoxes = $firefox_enumeration | Where-Object { $_.Type -eq "64-bit" } + $number_of_64_bit_firefoxes = ($all_64_bit_firefoxes | Measure-Object).Count + + + # 32-bit + If ($32_bit_firefox_is_installed -eq $false) { + $continue = $true + + } ElseIf (($32_bit_firefox_is_installed -eq $true) -and ($most_recent_32_bit_firefox_already_exists) -and ($number_of_32_bit_firefoxes -eq 1)) { + + # $downloading_firefox_32_is_required = $false + $locale = If (($most_recent_32_bit_firefox_already_exists.DisplayName.Split(" ")[-1] -match "\(") -eq $false) { + If ($powershell_v2_or_earlier -eq $true) { + $language.Get_Item(($most_recent_32_bit_firefox_already_exists.DisplayName.Split(" ")[-1]).Replace(")","")) + } Else { + $language | Select-Object -ExpandProperty (($most_recent_32_bit_firefox_already_exists.DisplayName.Split(" ")[-1]).Replace(")","")) + } # Else + + } Else { + $continue = $true + } # Else ($locale) + + If ($powershell_v2_or_earlier -eq $true) { + try + { + $release_date = $all_dates.Get_Item($most_recent_32_bit_firefox_already_exists.DisplayVersion) + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } Else { + try + { + $release_date = $all_dates | Select-Object -ExpandProperty $most_recent_32_bit_firefox_already_exists.DisplayVersion + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } # Else + + $currently_installed_32 += New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $most_recent_32_bit_firefox_already_exists.DisplayName.replace("(TM)","") + 'Publisher' = $most_recent_32_bit_firefox_already_exists.Publisher + 'Product' = $most_recent_32_bit_firefox_already_exists.DisplayName.Split(" ")[1] + 'Type' = "32-bit" + 'Locale' = $locale + 'Computer' = $computer + 'Install Location' = $most_recent_32_bit_firefox_already_exists.InstallLocation + 'Release Notes' = $most_recent_32_bit_firefox_already_exists.URLUpdateInfo + 'Standard Uninstall String' = $most_recent_32_bit_firefox_already_exists.UninstallString.Trim('"') + 'Identifying Number' = $most_recent_32_bit_firefox_already_exists.PSChildName + 'Release_Date' = $release_date + 'Version' = $most_recent_32_bit_firefox_already_exists.DisplayVersion + + } # New-Object + $currently_installed_32.PSObject.TypeNames.Insert(0,"Existing Current Firefox 32-bit") + + $empty_line | Out-String + Write-Output "Currently (until the next Firefox version is released) the $($($currently_installed_32.Locale).English) 32-bit $($currently_installed_32.Name) released on $((Get-Date ($currently_installed_32.Release_Date)).ToShortDateString()) doesn't need any further maintenance or care." + + } Else { + $downloading_firefox_32_is_required = $true + $downloading_firefox_is_required = $true + + ForEach ($32_bit_firefox in $all_32_bit_firefoxes) { + + If ($32_bit_firefox.Version -eq $most_recent_firefox_version) { + + If ($powershell_v2_or_earlier -eq $true) { + try + { + $release_date = $all_dates.Get_Item($32_bit_firefox.Version) + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } Else { + try + { + $release_date_32 = $all_dates | Select-Object -ExpandProperty "$($32_bit_firefox.Version)" + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } # Else + + $empty_line | Out-String + Write-Output "Currently (until the next Firefox version is released) the 32-bit $($32_bit_firefox.Name) released on $((Get-Date ($release_date_32)).ToShortDateString()) doesn't need any further maintenance or care." + } Else { + $empty_line | Out-String + Write-Warning "$($32_bit_firefox.Name) seems to be outdated." + $empty_line | Out-String + Write-Output "The most recent non-beta Firefox version is $most_recent_firefox_version. The installed 32-bit Firefox version $($32_bit_firefox.Version) needs to be updated." + } # Else + + + } # ForEach + } # Else + + + # 64-bit + If ($64_bit_firefox_is_installed -eq $false) { + $continue = $true + + } ElseIf (($64_bit_firefox_is_installed -eq $true) -and ($most_recent_64_bit_firefox_already_exists) -and ($number_of_64_bit_firefoxes -eq 1)) { + + # $downloading_firefox_64_is_required = $false + $locale = If (($most_recent_64_bit_firefox_already_exists.DisplayName.Split(" ")[-1] -match "\(") -eq $false) { + If ($powershell_v2_or_earlier -eq $true) { + $language.Get_Item(($most_recent_64_bit_firefox_already_exists.DisplayName.Split(" ")[-1]).Replace(")","")) + } Else { + $language | Select-Object -ExpandProperty (($most_recent_64_bit_firefox_already_exists.DisplayName.Split(" ")[-1]).Replace(")","")) + } # Else + + } Else { + $continue = $true + } # Else ($locale) + + If ($powershell_v2_or_earlier -eq $true) { + try + { + $release_date = $all_dates.Get_Item($most_recent_64_bit_firefox_already_exists.DisplayVersion) + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } Else { + try + { + $release_date = $all_dates | Select-Object -ExpandProperty $most_recent_64_bit_firefox_already_exists.DisplayVersion + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } # Else + + $currently_installed_64 += New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $most_recent_64_bit_firefox_already_exists.DisplayName.replace("(TM)","") + 'Publisher' = $most_recent_64_bit_firefox_already_exists.Publisher + 'Product' = $most_recent_64_bit_firefox_already_exists.DisplayName.Split(" ")[1] + 'Type' = "64-bit" + 'Locale' = $locale + 'Computer' = $computer + 'Install Location' = $most_recent_64_bit_firefox_already_exists.InstallLocation + 'Release Notes' = $most_recent_64_bit_firefox_already_exists.URLUpdateInfo + 'Standard Uninstall String' = $most_recent_64_bit_firefox_already_exists.UninstallString.Trim('"') + 'Identifying Number' = $most_recent_64_bit_firefox_already_exists.PSChildName + 'Release_Date' = $release_date + 'Version' = $most_recent_64_bit_firefox_already_exists.DisplayVersion + + } # New-Object + $currently_installed_64.PSObject.TypeNames.Insert(0,"Existing Current Firefox 64-bit") + + $empty_line | Out-String + Write-Output "Currently (until the next Firefox version is released) the $($($currently_installed_64.Locale).English) 64-bit $($currently_installed_64.Name) released on $((Get-Date ($currently_installed_64.Release_Date)).ToShortDateString()) doesn't need any further maintenance or care." + + } Else { + $downloading_firefox_64_is_required = $true + $downloading_firefox_is_required = $true + + ForEach ($64_bit_firefox in $all_64_bit_firefoxes) { + + If ($64_bit_firefox.Version -eq $most_recent_firefox_version) { + + If ($powershell_v2_or_earlier -eq $true) { + try + { + $release_date_64 = $all_dates.Get_Item($64_bit_firefox.Version) + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } Else { + try + { + $release_date_64 = $all_dates | Select-Object -ExpandProperty "$($64_bit_firefox.Version)" + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } # Else + + $empty_line | Out-String + Write-Output "Currently (until the next Firefox version is released) the 64-bit $($64_bit_firefox.Name) released on $((Get-Date ($release_date_64)).ToShortDateString()) doesn't need any further maintenance or care." + } Else { + $empty_line | Out-String + Write-Warning "$($64_bit_firefox.Name) seems to be outdated." + $empty_line | Out-String + Write-Output "The most recent non-beta Firefox version is $most_recent_firefox_version. The installed 64-bit Firefox version $($64_bit_firefox.Version) needs to be updated." + } # Else + + } # ForEach + } # Else + +} Else { + $continue = $true +} # Else + + + + +# Step 10 +# Write the Maintenance info in console +If ($firefox_is_installed -eq $true) { + + $32_bit_uninstall_string = $all_32_bit_firefoxes | Select-Object -ExpandProperty 'Standard Uninstall String' + $64_bit_uninstall_string = $all_64_bit_firefoxes | Select-Object -ExpandProperty 'Standard Uninstall String' + + $obj_maintenance += New-Object -TypeName PSCustomObject -Property @{ + 'Open the Firefox primary profile location' = [string]'Invoke-Item ' + $quote + [Environment]::GetFolderPath("ApplicationData") + '\Mozilla\Firefox\Profiles' + $unquote + 'Open the Firefox secondary profile location' = [string]'Invoke-Item ' + $quote + [Environment]::GetFolderPath("LocalApplicationData") + '\Mozilla\Firefox\Profiles' + $unquote + 'Open the updates.xml file location' = [string]'Invoke-Item ' + $quote + [Environment]::GetFolderPath("LocalApplicationData") + '\Mozilla\updates\' + $unquote + 'Uninstall the 32-bit Firefox' = If ($32_bit_firefox_is_installed -eq $true) { $32_bit_uninstall_string } Else { [string]'[not installed]' } + 'Uninstall the 64-bit Firefox' = If ($64_bit_firefox_is_installed -eq $true) { $64_bit_uninstall_string } Else { [string]'[not installed]' } + + } # New-Object + $obj_maintenance.PSObject.TypeNames.Insert(0,"Maintenance") + $obj_maintenance_selection = $obj_maintenance | Select-Object 'Open the Firefox primary profile location','Open the Firefox secondary profile location','Open the updates.xml file location','Uninstall the 32-bit Firefox','Uninstall the 64-bit Firefox' + + + # Display the Maintenance table in console + $empty_line | Out-String + $header_maintenance = "Maintenance" + $coline_maintenance = "-----------" + Write-Output $header_maintenance + $coline_maintenance | Out-String + Write-Output $obj_maintenance_selection + + + + + $obj_downloading += New-Object -TypeName PSCustomObject -Property @{ + '32-bit Firefox' = If ($32_bit_firefox_is_installed -eq $true) { $downloading_firefox_32_is_required } Else { [string]'-' } + '64-bit Firefox' = If ($64_bit_firefox_is_installed -eq $true) { $downloading_firefox_64_is_required } Else { [string]'-' } + } # New-Object + $obj_downloading.PSObject.TypeNames.Insert(0,"Maintenance Is Required for These Firefox Versions") + $obj_downloading_selection = $obj_downloading | Select-Object '32-bit Firefox','64-bit Firefox' + + + # Display in console which installers for Firefox need to be downloaded + $empty_line | Out-String + $header_downloading = "Maintenance Is Required for These Firefox Versions" + $coline_downloading = "--------------------------------------------------" + Write-Output $header_downloading + $coline_downloading | Out-String + Write-Output $obj_downloading_selection + $empty_line | Out-String + +} Else { + $continue = $true +} # Else + + + + +# Step 11 +# Determine if there is a real need to carry on with the rest of the script. +If ($firefox_is_installed -eq $true) { + + If (($downloading_firefox_is_required -eq $false) -and ($downloading_firefox_32_is_required -eq $false) -and ($downloading_firefox_64_is_required -eq $false)) { + Return "The installed Firefox seems to be OK." + } Else { + $continue = $true + } # Else +} Else { + Write-Warning "No Firefox seems to be installed on the system." + $empty_line | Out-String + $no_firefox_text_1 = "This script didn't detect that any version of Firefox would have been installed." + $no_firefox_text_2 = "Please consider installing Firefox by visiting" + $no_firefox_text_3 = "https://www.mozilla.org/en-US/firefox/all/" + $no_firefox_text_4 = "For URLs of the full installation files please, for example, see the page" + $no_firefox_text_5 = "https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" + $no_firefox_text_6 = "and for uninstalling Firefox, please visit" + $no_firefox_text_7 = "https://support.mozilla.org/en-US/kb/uninstall-firefox-from-your-computer" + Write-Output $no_firefox_text_1 + Write-Output $no_firefox_text_2 + Write-Output $no_firefox_text_3 + Write-Output $no_firefox_text_4 + Write-Output $no_firefox_text_5 + Write-Output $no_firefox_text_6 + Write-Output $no_firefox_text_7 + + # Offer the option to install a specific version of Firefox, if no Firefox is detected and the script is run in an elevated window + # Source: "Adding a Simple Menu to a Windows PowerShell Script": https://technet.microsoft.com/en-us/library/ff730939.aspx + # Credit: lamaar75: "Creating a Menu": http://powershell.com/cs/forums/t/9685.aspx + # Credit: alejandro5042: "How to run exe with/without elevated privileges from PowerShell" + If (([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator") -eq $true) { + $empty_line | Out-String + Write-Verbose "Welcome to the Admin Corner." -verbose + $title_1 = "Install Firefox - The Fundamentals (Step 1/3)" + $message_1 = "Would you like to install one of the Firefox versions (32-bit or 64-bit in a certain language) with this script?" + + $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "Yes: tries to download and install one of the Firefox versions specified on the next two steps." + $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "No: exits from this script (similar to Ctrl + C)." + $exit = New-Object System.Management.Automation.Host.ChoiceDescription "&Exit", "Exit: exits from this script (similar to Ctrl + C)." + $abort = New-Object System.Management.Automation.Host.ChoiceDescription "&Abort", "Abort: exits from this script (similar to Ctrl + C)." + $cancel = New-Object System.Management.Automation.Host.ChoiceDescription "&Cancel", "Cancel: exits from this script (similar to Ctrl + C)." + + $options_1 = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no, $exit, $abort, $cancel) + $result_1 = $host.ui.PromptForChoice($title_1, $message_1, $options_1, 1) + + switch ($result_1) + { + 0 { + "Yes. Proceeding to the next step."; + $admin_corner = $true + $continue = $true + } + 1 { + "No. Exiting from Install Firefox script."; + Exit + } + 2 { + "Exit. Exiting from Install Firefox script."; + Exit + } + 3 { + "Abort. Exiting from Install Firefox script."; + Exit + } + 4 { + "Cancel. Exiting from Install Firefox script."; + Exit + } # 4 + } # switch + + $empty_line | Out-String + $title_2 = "Install Firefox - The Bit Version (Step 2/3)" + $message_2 = "Which bit version (32-bit or 64-bit) of Firefox would you like to install?" + + $32_bit = New-Object System.Management.Automation.Host.ChoiceDescription "&32-bit", "32-bit: tries to download and install the 32-bit version of Firefox." + $64_bit = New-Object System.Management.Automation.Host.ChoiceDescription "&64-bit", "64-bit: tries to download and install the 64-bit version of Firefox." + + $options_2 = [System.Management.Automation.Host.ChoiceDescription[]]($32_bit, $64_bit, $exit, $abort, $cancel) + $result_2 = $host.ui.PromptForChoice($title_2, $message_2, $options_2, 4) + + switch ($result_2) + { + 0 { + "32-bit selected."; + $firefox_is_installed = $true + $32_bit_firefox_is_installed = $true + $original_firefox_version = "[Nonexistent]" + $downloading_firefox_is_required = $true + $downloading_firefox_32_is_required = $true + $os = '&os=win' + $bit_number = "32" + $continue = $true + } + 1 { + "64-bit selected."; + $firefox_is_installed = $true + $64_bit_firefox_is_installed = $true + $original_firefox_version = "[Nonexistent]" + $downloading_firefox_is_required = $true + $downloading_firefox_64_is_required = $true + $os = '&os=win64' + $bit_number = "64" + $continue = $true + } + 2 { + "Exit. Exiting from Install Firefox script."; + Exit + } + 3 { + "Abort. Exiting from Install Firefox script."; + Exit + } + 4 { + "Cancel. Exiting from Install Firefox script."; + Exit + } # 4 + } # switch + + $empty_line | Out-String + $title_3 = "Install Firefox - The Language (Step 3/3)" + $message_3 = "Which language version of Firefox would you like to install?" + + $0 = New-Object System.Management.Automation.Host.ChoiceDescription "&0 English (US)", "English (US): tries to download and install the English (US) version of Firefox." + $1 = New-Object System.Management.Automation.Host.ChoiceDescription "&1 English (British)", "English (British): tries to download and install the English (British) version of Firefox." + $2 = New-Object System.Management.Automation.Host.ChoiceDescription "&2 Arabic", "Arabic: tries to download and install the Arabic version of Firefox." + $3 = New-Object System.Management.Automation.Host.ChoiceDescription "&3 Chinese (Simplified)", "Chinese (Simplified): tries to download and install the Chinese (Simplified) version of Firefox." + $4 = New-Object System.Management.Automation.Host.ChoiceDescription "&4 Chinese (Traditional)", "Chinese (Traditional): tries to download and install the Chinese (Traditional) version of Firefox." + $5 = New-Object System.Management.Automation.Host.ChoiceDescription "&5 Dutch", "Dutch: tries to download and install the Dutch version of Firefox." + $6 = New-Object System.Management.Automation.Host.ChoiceDescription "&6 French", "French: tries to download and install the French version of Firefox." + $7 = New-Object System.Management.Automation.Host.ChoiceDescription "&7 German", "German: tries to download and install the German version of Firefox." + $8 = New-Object System.Management.Automation.Host.ChoiceDescription "&8 Portuguese (Portugal)", "Portuguese (Portugal): tries to download and install the Portuguese (Portugal) version of Firefox." + $9 = New-Object System.Management.Automation.Host.ChoiceDescription "&9 Spanish (Spain)", "Spanish (Spain): tries to download and install the Spanish (Spain) version of Firefox." + $b = New-Object System.Management.Automation.Host.ChoiceDescription "&b Bengali (India)", "Bengali (India): tries to download and install the Bengali (India) version of Firefox." + $d = New-Object System.Management.Automation.Host.ChoiceDescription "&d Danish", "Danish: tries to download and install the Danish version of Firefox." + $f = New-Object System.Management.Automation.Host.ChoiceDescription "&f Finnish", "Finnish: tries to download and install the Finnish version of Firefox." + $g = New-Object System.Management.Automation.Host.ChoiceDescription "&g Greek", "Greek: tries to download and install the Greek version of Firefox." + $h = New-Object System.Management.Automation.Host.ChoiceDescription "&h Hebrew", "Hebrew: tries to download and install the Hebrew version of Firefox." + $i = New-Object System.Management.Automation.Host.ChoiceDescription "&i Italian", "Italian: tries to download and install the Italian version of Firefox." + $j = New-Object System.Management.Automation.Host.ChoiceDescription "&j Indonesian", "Indonesian: tries to download and install the Indonesian version of Firefox." + $k = New-Object System.Management.Automation.Host.ChoiceDescription "&k Korean", "Korean: tries to download and install the Korean version of Firefox." + $l = New-Object System.Management.Automation.Host.ChoiceDescription "&l Latvian", "Latvian: tries to download and install the Latvian version of Firefox." + $m = New-Object System.Management.Automation.Host.ChoiceDescription "&m Malay", "Malay: tries to download and install the Malay version of Firefox." + $n = New-Object System.Management.Automation.Host.ChoiceDescription "&n Norwegian (Nynorsk)", "Norwegian (Nynorsk): tries to download and install the Norwegian (Nynorsk) version of Firefox." + $o = New-Object System.Management.Automation.Host.ChoiceDescription "&o Norwegian (Bokmal)", "Norwegian (Bokmal): tries to download and install the Norwegian (Bokmal) version of Firefox." + $p = New-Object System.Management.Automation.Host.ChoiceDescription "&p Punjabi (India)", "Punjabi (India): tries to download and install the Punjabi (India) version of Firefox." + $q = New-Object System.Management.Automation.Host.ChoiceDescription "&q Hindi (India)", "Hindi (India): tries to download and install the Hindi (India) version of Firefox." + $r = New-Object System.Management.Automation.Host.ChoiceDescription "&r Romanian", "Romanian: tries to download and install the Romanian version of Firefox." + $s = New-Object System.Management.Automation.Host.ChoiceDescription "&s Swedish", "Swedish: tries to download and install the Swedish version of Firefox." + $t = New-Object System.Management.Automation.Host.ChoiceDescription "&t Thai", "Thai: tries to download and install the Thai version of Firefox." + $u = New-Object System.Management.Automation.Host.ChoiceDescription "&u Ukrainian", "Ukrainian: tries to download and install the Ukrainian version of Firefox." + $v = New-Object System.Management.Automation.Host.ChoiceDescription "&v Vietnamese", "Vietnamese: tries to download and install the Vietnamese version of Firefox." + $w = New-Object System.Management.Automation.Host.ChoiceDescription "&w Welsh", "Welsh: tries to download and install the Welsh version of Firefox." + $x = New-Object System.Management.Automation.Host.ChoiceDescription "&x Xhosa", "Xhosa: tries to download and install the Xhosa version of Firefox." + $y = New-Object System.Management.Automation.Host.ChoiceDescription "&y Gaelic (Scotland)", "Gaelic (Scotland): tries to download and install the Gaelic (Scotland) version of Firefox." + $z = New-Object System.Management.Automation.Host.ChoiceDescription "&z Uzbek", "Uzbek: tries to download and install the Uzbek version of Firefox." + + $options_3 = [System.Management.Automation.Host.ChoiceDescription[]]($0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $b, $d, $f, $g, $h, $i, $j, $k, $l, $m, $n, $o, $p, $q, $r, $s, $t, $u, $v, $w, $x, $y, $z, $exit, $abort, $cancel) + $result_3 = $host.ui.PromptForChoice($title_3, $message_3, $options_3, 35) + + switch ($result_3) + { + 0 { + "English (US) selected."; + $lang = '&lang=en-US' + $continue = $true + } + 1 { + "English (British) selected."; + $lang = '&lang=en-GB' + $continue = $true + } + 2 { + "Arabic selected."; + $lang = '&lang=ar' + $continue = $true + } + 3 { + "Chinese (Simplified) selected."; + $lang = '&lang=zh-CN' + $continue = $true + } + 4 { + "Chinese (Traditional) selected."; + $lang = '&lang=zh-TW' + $continue = $true + } + 5 { + "Dutch selected."; + $lang = '&lang=nl' + $continue = $true + } + 6 { + "French selected."; + $lang = '&lang=fr' + $continue = $true + } + 7 { + "German selected."; + $lang = '&lang=de' + $continue = $true + } + 8 { + "Portuguese (Portugal) selected."; + $lang = '&lang=pt-PT' + $continue = $true + } + 9 { + "Spanish (Spain) selected."; + $lang = '&lang=es-ES' + $continue = $true + } + 10 { + "Bengali (India) selected."; + $lang = '&lang=bn-IN' + $continue = $true + } + 11 { + "Danish selected."; + $lang = '&lang=da' + $continue = $true + } + 12 { + "Finnish selected."; + $lang = 'lang=fi' + $continue = $true + } + 13 { + "Greek selected."; + $lang = '&lang=el' + $continue = $true + } + 14 { + "Hebrew selected."; + $lang = '&lang=he' + $continue = $true + } + 15 { + "Italian selected."; + $lang = '&lang=it' + $continue = $true + } + 16 { + "Indonesian selected."; + $lang = '&lang=id' + $continue = $true + } + 17 { + "Korean selected."; + $lang = '&lang=ko' + $continue = $true + } + 18 { + "Latvian selected."; + $lang = '&lang=lv' + $continue = $true + } + 19 { + "Malay selected."; + $lang = '&lang=ms' + $continue = $true + } + 20 { + "Norwegian (Nynorsk) selected."; + $lang = '&lang=nn-NO' + $continue = $true + } + 21 { + "Norwegian (Bokmal) selected."; + $lang = '&lang=nb-NO' + $continue = $true + } + 22 { + "Punjabi (India) selected."; + $lang = '&lang=pa-IN' + $continue = $true + } + 23 { + "Hindi (India) selected."; + $lang = '&lang=hi-IN' + $continue = $true + } + 24 { + "Romanian selected."; + $lang = '&lang=ro' + $continue = $true + } + 25 { + "Swedish selected."; + $lang = '&lang=sv-SE' + $continue = $true + } + 26 { + "Thai selected."; + $lang = '&lang=th' + $continue = $true + } + 27 { + "Ukrainian selected."; + $lang = '&lang=uk' + $continue = $true + } + 28 { + "Vietnamese selected."; + $lang = '&lang=vi' + $continue = $true + } + 29 { + "Welsh selected."; + $lang = '&lang=cy' + $continue = $true + } + 30 { + "Xhosa selected."; + $lang = '&lang=xh' + $continue = $true + } + 31 { + "Gaelic (Scotland) selected."; + $lang = '&lang=gd' + $continue = $true + } + 32 { + "Uzbek selected."; + $lang = '&lang=uz' + $continue = $true + } + 33 { + "Exit. Exiting from Install Firefox script."; + Exit + } + 34 { + "Abort. Exiting from Install Firefox script."; + Exit + } + 35 { + "Cancel. Exiting from Install Firefox script."; + Exit + } # 35 + } # switch + + # Determine the Download URL based on the selections made by the user. + # Source: https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt + # https://download.mozilla.org/?product=firefox-latest&os=win&lang=en-US + $download_url = [string]'https://download.mozilla.org/?product=firefox-latest' + $os + $lang + + } Else { + Exit + } # Else (Admin Corner) +} # Else (No Firefox ) + + + + +# Step 12 +# Check if the PowerShell session is elevated (has been run as an administrator) +If (([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator") -eq $false) { + Write-Warning "It seems that this script is run in a 'normal' PowerShell window." + $empty_line | Out-String + Write-Verbose "Please consider running this script in an elevated (administrator-level) PowerShell window." -verbose + $empty_line | Out-String + $admin_text = "For performing system altering procedures, such as installing Firefox the elevated rights are mandatory. An elevated PowerShell session can, for example, be initiated by starting PowerShell with the 'run as an administrator' option." + Write-Output $admin_text + $empty_line | Out-String + # Write-Verbose "Even though it could also be possible to write a self elevating PowerShell script (https://blogs.msdn.microsoft.com/virtual_pc_guy/2010/09/23/a-self-elevating-powershell-script/) or run commands elevated in PowerShell (http://powershell.com/cs/blogs/tips/archive/2014/03/19/running-commands-elevated-in-powershell.aspx) with the UAC prompts, the new UAC pop-up window may come as a surprise to the end-user, who isn't neccesarily aware that this script needs the elevated rights to complete the intended actions." + Return "Exiting without updating (at Step 12)." +} Else { + $continue = $true +} # Else + + + + +# Step 13 +# Initiate the update process +$empty_line | Out-String +$timestamp = Get-Date -Format HH:mm:ss +$update_text = "$timestamp - Initiating the Firefox Update Protocol..." +Write-Output $update_text + +# Determine the current directory # Credit: JaredPar and Matthew Pirocchi "What's the best way to determine the location of the current PowerShell script?" +$script_path = Split-Path -parent $MyInvocation.MyCommand.Definition + +# "Manual" progress bar variables +$activity = "Updating Firefox" +$status = "Status" +$id = 1 # For using more than one progress bar +$total_steps = 19 # Total number of the steps or tasks, which will increment the progress bar +$task_number = 0.2 # An increasing numerical value, which is set at the beginning of each of the steps that increments the progress bar (and the value should be less or equal to total_steps). In essence, this is the "progress" of the progress bar. +$task = "Setting Initial Variables" # A description of the current operation, which is set at the beginning of each of the steps that increments the progress bar. + +# Start the progress bar +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + # Specify [Esc] and [q] as the Cancel-key # Credit: Jeff: "Powershell show elapsed time" + If ($Host.UI.RawUI.KeyAvailable -and ("q" -eq $Host.UI.RawUI.ReadKey("IncludeKeyUp,NoEcho").Character)) { + Write-Host " ...Stopping the Firefox Update Protocol..."; + Break; + } ElseIf ($Host.UI.RawUI.KeyAvailable -and (([char]27) -eq $Host.UI.RawUI.ReadKey("IncludeKeyUp,NoEcho").Character)) { + Write-Host " ...Stopping the Firefox Update Protocol..."; Break; + } Else { + $continue = $true + } # Else + + + + +# Step 14 +# Write the Firefox installation configuration ini file +# Description: Keep the default save location and the default shortcuts, but disable the Mozilla Maintenance service. +# Source: https://wiki.mozilla.org/Installer:Command_Line_Arguments + +<# + Silent install (always installs into the default location. Use the "Configuration ini file" option below to set the install location and other install options): + -ms + + Silent uninstall: + /S + + Configuration ini file (When specifying a configuration ini file the installer will always run silently): + [/INI=] + + The silent install applies only to the full installer and not the stub installer. If you want to perform a silent install you cannot do so with the stub installer and you must use the full installer. + Full installers for Firefox can be found at http://www.mozilla.org/firefox/all/ (or for Firefox ESR at http://www.mozilla.org/firefox/organizations/all/ ). +#> + +$task_number = 1 +$task = "Writing the Firefox installation configuration ini file..." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + +$ini_file = "firefox_configuration.ini" +$ini = New-Item -ItemType File -Path "$path\$ini_file" -Force +$ini +Add-Content $ini -Value ("[Install] +; +; Remove the semicolon (;) to un-comment a line. +; +; The name of the directory where the application will be installed in the +; system's program files directory. The security context the installer is +; running in must have write access to the installation directory. Also, the +; directory must not exist or if it exists it must be a directory and not a +; file. If any of these conditions are not met the installer will abort the +; installation with an error level of 2. If this value is specified +; then InstallDirectoryPath will be ignored. +; InstallDirectoryName=Mozilla Firefox + +; The full path to the directory to install the application. The security +; context the installer is running in must have write access to the +; installation directory. Also, the directory must not exist or if it exists +; it must be a directory and not a file. If any of these conditions are not met +; the installer will abort the installation with an error level of 2. +; InstallDirectoryPath=c:\firefox\ + +; By default all of the following shortcuts are created. To prevent the +; creation of a shortcut specify false for the shortcut you don't want created. + +; Create a shortcut for the application in the current user's QuickLaunch +; directory. +; QuickLaunchShortcut=false + +; Create a shortcut for the application on the desktop. This will create the +; shortcut in the All Users Desktop directory and if that fails this will +; attempt to create the shortcuts in the current user's Start Menu directory. +; DesktopShortcut=false + +; Create shortcuts for the application in the Start Menu. This will create the +; shortcuts in the All Users Start Menu directory and if that fails this will +; attempt to create the shortcuts in the current user's Start Menu directory. +; StartMenuShortcuts=false + +; The directory name to use for the StartMenu folder (not available with +; Firefox 4.0 and above - see the note below). +; Note: if StartMenuShortcuts=false is specified then this will be ignored. +; StartMenuDirectoryName=Mozilla Firefox + +; The MozillaMaintenance service is used for silent updates and may be used +; for other maintenance related tasks. It is an optional component. This +; option can be used in Firefox 16 or later to skip installing the service. +MaintenanceService=false") + + + + +# Step 15 +# Determine the required language version and the correct download URL +# Source: https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt +# Source: https://wiki.mozilla.org/Software_Update:Checking_For_Updates +# Source: http://kb.mozillazine.org/App.update.url + +<# + + # Download URL (clickable) + https://www.mozilla.org/en-US/firefox/all/ + + # Check if the installed version of Firefox is the latest: + https://www.mozilla.org/en-US/firefox/new/ + + # 32-bit English (US) Firefox for Windows: + https://download.mozilla.org/?product=firefox-latest&os=win&lang=en-US + + # 64-bit English (US) Firefox for Windows: + https://download.mozilla.org/?product=firefox-latest&os=win64&lang=en-US + +#> +<# + + For other languages, please replace 'lang=en-US' with: + Acholi lang=ach + Afrikaans lang=af + Albanian lang=sq + Arabic lang=ar + Aragonese lang=an + Armenian lang=hy-AM + Assamese lang=as + Asturian lang=ast + Azerbaijani lang=az + Basque lang=eu + Belarusian lang=be + Bengali (Bangladesh) lang=bn-BD + Bengali (India) lang=bn-IN + Bosnian lang=bs + Breton lang=br + Bulgarian lang=bg + Catalan lang=ca + Chinese (Simplified) lang=zh-CN + Chinese (Traditional) lang=zh-TW + Croatian lang=hr + Czech lang=cs + Danish lang=da + Dutch lang=nl + English (British) lang=en-GB + English (South African) lang=en-ZA + Esperanto lang=eo + Estonian lang=et + Finnish lang=fi + French lang=fr + Frisian lang=fy-NL + Fulah lang=ff + Gaelic (Scotland) lang=gd + Galician lang=gl + German lang=de + Greek lang=el + Gujarati (India) lang=gu-IN + Hebrew lang=he + Hindi (India) lang=hi-IN + Hungarian lang=hu + Icelandic lang=is + Indonesian lang=id + Irish lang=ga-IE + Italian lang=it + Kannada lang=kn + Kazakh lang=kk + Khmer lang=km + Korean lang=ko + Latvian lang=lv + Ligurian lang=lij + Lithuanian lang=lt + Lower Sorbian lang=dsb + Macedonian lang=mk + Maithili lang=mai + Malay lang=ms + Malayalam lang=ml + Marathi lang=mr + Norwegian (BokmÃ¥l) lang=nb-NO + Norwegian (Nynorsk) lang=nn-NO + Oriya lang=or + Persian lang=fa + Polish lang=pl + Portuguese (Brazilian) lang=pt-BR + Portuguese (Portugal) lang=pt-PT + Punjabi (India) lang=pa-IN + Romanian lang=ro + Romansh lang=rm + Russian lang=ru + Serbian lang=sr + Sinhala lang=si + Slovak lang=sk + Slovenian lang=sl + Songhai lang=son + Spanish (Argentina) lang=es-AR + Spanish (Chile) lang=es-CL + Spanish (Mexico) lang=es-MX + Spanish (Spain) lang=es-ES + Swedish lang=sv-SE + Tamil lang=ta + Telugu lang=te + Thai lang=th + Turkish lang=tr + Ukrainian lang=uk + Upper Sorbian lang=hsb + Uzbek lang=uz + Vietnamese lang=vi + Welsh lang=cy + Xhosa lang=xh + + https://download.mozilla.org/?product=firefox-50.0.2-SSL&os=win&lang=en-US + https://download.mozilla.org/?product=firefox-50.0.2-complete&os=win&lang=en-US&force=1 + https://download-installer.cdn.mozilla.net/pub/firefox/releases/50.0.2/win32/en-US/Firefox%20Setup%2050.0.2.exe + + https://download.mozilla.org/?product=firefox-50.0.2-SSL&os=win64&lang=en-US + https://download.mozilla.org/?product=firefox-50.0.2-complete&os=win64&lang=en-US&force=1 + https://download-installer.cdn.mozilla.net/pub/firefox/releases/50.0.2/win64/en-US/Firefox%20Setup%2050.0.2.exe + + about:config and search for app.update.url + # Old Firefox: + https://aus2.mozilla.org/update/3/Firefox/3.0a8pre/2007083015/Darwin_x86-gcc3/en-US/default/Darwin%208.10.1/testpartner/1.0/update.xml?force=1 + # Firefox (trunk builds since 2010): + https://aus3.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml + # Firefox Current: + https://aus5.mozilla.org/update/6/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%SYSTEM_CAPABILITIES%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml + + '3' is the schema version + + PRODUCT: App name (e.g., 'Firefox') + VERSION: App version (e.g., '3.0a8pre') + BUILD_ID: Build ID (e.g., '2007083015') + BUILD_TARGET: Build target (e.g., 'Darwin_x86-gcc3') + LOCALE: App locale (e.g., 'en-US') + CHANNEL: AUS channel (e.g., 'default') + OS_VERSION: Operating System version (e.g., 'Darwin%208.10.1') + DISTRIBUTION: Name of customized distribution, if any (e.g., 'testpartner') + DISTRIBUTION_VERSION: Version of the customized distribution (e.g., '1.0) + +#> + +$task_number = 2 +$task = "Determining the required language version and the correct download URL..." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + +If (($multiple_firefoxes -ne $true) -and ($admin_corner -ne $true)) { + + + If ($downloading_firefox_32_is_required -eq $true) { + $os = '&os=win' + $bit_number = "32" + } ElseIf ($downloading_firefox_64_is_required -eq $true) { + $os = '&os=win64' + $bit_number = "64" + } Else { + $continue = $true + } # Else + + + # $system_language_and_region = (Get-Culture).Name + # $system_language_abbreviation = (Get-Culture).TwoLetterISOLanguageName + # $system_language = (Get-Culture).EnglishName + If (($firefox_enumeration | select -ExpandProperty Locale) -ne $null) { + $lang = [string]'&lang=' + ($firefox_enumeration | select -ExpandProperty Locale) + } ElseIf (($firefox_enumeration | select -ExpandProperty Locale) -eq $null) { + + If ((($language | Select-Object -ErrorAction SilentlyContinue -ExpandProperty "$($(Get-Culture).TwoLetterISOLanguageName)").English) -match ((Get-Culture).EnglishName.split(' (')[0]) ) { + $lang = [string]'&lang=' + $($(Get-Culture).TwoLetterISOLanguageName) + } ElseIf ((($language | Select-Object -ErrorAction SilentlyContinue -ExpandProperty "$($(Get-Culture).Name)").English) -match ((Get-Culture).EnglishName) ) { + $lang = [string]'&lang=' + $($(Get-Culture).Name) + } ElseIf ((($language | Select-Object -ErrorAction SilentlyContinue -ExpandProperty "$($(Get-Culture).Name)").English) -match ((Get-Culture).EnglishName.split(' (')[0]) ) { + $lang = [string]'&lang=' + $($(Get-Culture).Name) + } ElseIf ((($language | Select-Object -ErrorAction SilentlyContinue -ExpandProperty "$($(Get-Culture).TwoLetterISOLanguageName)").English) -match ((Get-Culture).EnglishName) ) { + $lang = [string]'&lang=' + $($(Get-Culture).TwoLetterISOLanguageName) + } Else { + $lang = [string]'&lang=' + (([Threading.Thread]::CurrentThread.CurrentUICulture).Name.Split("-")[0]) + } # Else + + } Else { + $continue = $true + } # Else + + + $download_url = [string]'https://download.mozilla.org/?product=firefox-latest' + $os + $lang + + +} ElseIf (($multiple_firefoxes -ne $true) -and ($admin_corner -eq $true)) { + $continue = $true +} Else { + Return "Multiple Firefox installations detected. Please update the relevant Firefox versions manually by visiting for example https://www.mozilla.org/en-US/firefox/all/ or run this script again after reducing the total number of Firefox installations to one. Exiting without updating (at Step 15)." +} # Else (If $multiple_firefoxes) + + + + +# Step 16 +# Download the latest installation file for Firefox for Windows +If (($firefox_is_installed -eq $true) -and ($downloading_firefox_is_required -eq $true)) { + + $task_number = 4 + $task = "Downloading a full offline $bit_number-bit Firefox installer from $download_url" + Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + + $download_file = "Firefox_Setup.exe" + $firefox_save_location = "$path\$download_file" + $firefox_is_downloaded = $false + + # Purge existing old Firefox installation files + If ((Test-Path $firefox_save_location) -eq $true) { + Write-Verbose "Deleting $firefox_save_location" + Remove-Item -Path "$firefox_save_location" + } Else { + $continue = $true + } # Else + + try + { + $download_firefox = New-Object System.Net.WebClient + $download_firefox.DownloadFile($download_url, $firefox_save_location) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $download_url" + $empty_line | Out-String + Return "Exiting without installing a new Firefox version (at Step 16)." + } + + Start-Sleep -s 2 + + If ((Test-Path $firefox_save_location) -eq $true) { + $firefox_is_downloaded = $true + } Else { + $firefox_is_downloaded = $false + } # Else + +} Else { + $continue = $true +} # Else + + + + +# Step 17 +# Exit all browsers +$task_number = 8 +$task = "Stopping Firefox -related processes..." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + +Stop-Process -ProcessName '*messenger*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'FlashPlayer*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'plugin-container*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'chrome*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'opera*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'firefox' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'iexplore' -ErrorAction SilentlyContinue -Force +Start-Sleep -s 4 + + + + +# Step 18 +# Install Firefox silently on top of the existing Firefox installation +# For the Firefox installation configuration ini file, please see the Step 14. +# Source: https://wiki.mozilla.org/Installer:Command_Line_Arguments + +<# + Silent install (always installs into the default location. Use the "Configuration ini file" option below to set the install location and other install options): + -ms + + Silent uninstall: + /S + + Configuration ini file (When specifying a configuration ini file the installer will always run silently): + [/INI=] + + The silent install applies only to the full installer and not the stub installer. If you want to perform a silent install you cannot do so with the stub installer and you must use the full installer. + Full installers for Firefox can be found at http://www.mozilla.org/firefox/all/ (or for Firefox ESR at http://www.mozilla.org/firefox/organizations/all/ ). +#> + +$task_number = 11 +$task = "Installing Firefox..." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + +If ($firefox_is_downloaded -eq $true) { + + $task_number = 10 + $task = "Installing Firefox..." + Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + cd $path + .\Firefox_Setup.exe /INI="$path\$ini_file" | Out-Null + cd $script_path + Start-Sleep -s 5 +} Else { + $continue = $true +} # Else + + + + +# Step 19 +# Try to find out which Firefox versions, if any, are installed on the system after the update +$task_number = 15 +$task = "Enumerating the Firefox versions found on the system after the update..." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + +# Determine whether Firefox is installed or not +$firefox_is_installed = $false +If ((Check-InstalledSoftware "*Firefox*") -ne $null) { + $firefox_is_installed = $true +} Else { + $continue = $true +} # Else + + +# Enumerate the installed Firefoxes after the update +$32_bit_firefox_is_installed = $false +$64_bit_firefox_is_installed = $false +$registry_paths_after_update = Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { ($_.DisplayName -like "*Firefox*" ) -and ($_.Publisher -like "Mozilla*" )} + +If ($registry_paths_after_update -ne $null) { + + ForEach ($new_firefox in $registry_paths_after_update) { + + # Custom Values + If (($new_firefox.DisplayName.Split(" ")[-1] -match "\(") -eq $false) { + $locale_new = ($new_firefox.DisplayName.Split(" ")[-1]).Replace(")","") + } Else { + $continue = $true + } # Else + + + If (($new_firefox.DisplayName.Split(" ")[-1] -match "\(x") -eq $true) { + + If ($new_firefox.DisplayName.Split(" ")[-1] -like "(x86") { + $32_bit_firefox_is_installed = $true + $type_new = "32-bit" + } ElseIf ($new_firefox.DisplayName.Split(" ")[-1] -like "(x64") { + $64_bit_firefox_is_installed = $true + $type_new = "64-bit" + } Else { + $continue = $true + } # Else + + } ElseIf (($new_firefox.DisplayName.Split(" ")[-2] -match "\(x") -eq $true) { + + If ($new_firefox.DisplayName.Split(" ")[-2] -like "(x86") { + $32_bit_firefox_is_installed = $true + $type_new = "32-bit" + } ElseIf ($new_firefox.DisplayName.Split(" ")[-2] -like "(x64") { + $64_bit_firefox_is_installed = $true + $type_new = "64-bit" + } Else { + $continue = $true + } # Else + + } Else { + $continue = $true + } # Else + + + $product_version_new = ((Get-ItemProperty -Path "$($new_firefox.InstallLocation)\Firefox.exe" -ErrorAction SilentlyContinue -Name VersionInfo).VersionInfo).ProductVersion + $regex_stability = $product_version_new -match "(\d+)\.(\d+)\.(\d+)" + $regex_major = $product_version_new -match "(\d+)\.(\d+)" + If (($product_version_new -ne $null) -and ($regex_stability -eq $true)) { $product_version_new -match "(?\d+)\.(?\d+)\.(?\d+)" } Else { $continue = $true } + If (($product_version_new -ne $null) -and ($regex_stability -eq $false) -and ($regex_major -eq $true)) { $product_version_new -match "(?\d+)\.(?\d+)" } Else { $continue = $true } + + + $after_update_firefoxes += $obj_updated_firefox = New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $new_firefox.DisplayName.Replace("(TM)","") + 'Publisher' = $new_firefox.Publisher + 'Product' = $new_firefox.DisplayName.Split(" ")[1] + 'Type' = $type_new + 'Locale' = $locale_new + 'Major Version' = If ($Matches.B1 -ne $null) { $Matches.B1 } Else { $continue = $true } + 'Minor Version' = If ($Matches.B2 -ne $null) { $Matches.B2 } Else { $continue = $true } + 'Build Number' = If ($Matches.B3 -ne $null) { $Matches.B3 } Else { "-" } + 'Computer' = $computer + 'Install Location' = $new_firefox.InstallLocation + 'Standard Uninstall String' = $new_firefox.UninstallString.Trim('"') + 'Release Notes' = $new_firefox.URLUpdateInfo + 'Identifying Number' = $new_firefox.PSChildName + 'Version' = $new_firefox.DisplayVersion + } # New-Object + } # foreach ($new_firefox) + + + # Display the Firefox Version Enumeration in console + If ($after_update_firefoxes -ne $null) { + $after_update_firefoxes.PSObject.TypeNames.Insert(0,"Firefox Versions After the Update") + $after_update_firefoxes_selection = $after_update_firefoxes | Select-Object 'Name','Publisher','Product','Type','Locale','Major Version','Minor Version','Build Number','Computer','Install Location','Standard Uninstall String','Release Notes','Version' + $empty_line | Out-String + $header_new = "Firefox Versions Found on the System After the Update" + $coline_new = "-----------------------------------------------------" + Write-Output $header_new + $coline_new | Out-String + Write-Output $after_update_firefoxes_selection + } Else { + $continue = $true + } # Else + +} Else { + $continue = $true +} # Else (Step 19) + + + + +# Step 20 +# Determine the success rate of the update process. +$task_number = 16 +$task = "Determining the success rate of the update process..." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + +$multiple_firefoxes_after_update = $false +If ((($after_update_firefoxes | Measure-Object Name).Count) -eq 0) { + $success = $false + $empty_line | Out-String + Write-Warning "No Firefox seems to be installed on the system." + $empty_line | Out-String + Return "The most recent non-beta Firefox version is $most_recent_firefox_version. This script tried to update Firefox, but something went wrong with the installation. Instead of updating Firefox this script uninstalled all versions of Firefox. Exiting at Step 20." +} ElseIf ((($after_update_firefoxes | Measure-Object Name).Count) -eq 1) { + # One instance of Firefox seems to be installed. + $continue = $true +} ElseIf ((($after_update_firefoxes | Measure-Object Name).Count) -ge 2) { + $success = $false + $empty_line | Out-String + Write-Warning "More than one instance of Firefox seems to be installed on the system." + $multiple_firefoxes_after_update = $true + $empty_line | Out-String + Return "The most recent non-beta Firefox version is $most_recent_firefox_version. This script tried to update Firefox, but something went wrong with the installation. Instead of updating Firefox this script installed yet another version of Firefox. Currently the versions $($after_update_firefoxes.Version) are installed. Exiting at Step 20." +} Else { + $continue = $true +} # Else + + +$most_recent_firefox_after_update = Check-InstalledSoftware "Mozilla Firefox $($most_recent_firefox_version)*" +If (($firefox_is_installed -eq $true) -and ($downloading_firefox_is_required -eq $true) -and ($after_update_firefoxes -ne $null) -and ($multiple_firefoxes_after_update -eq $false)) { + + If ($most_recent_firefox_after_update -eq $null) { + $success = $false + $empty_line | Out-String + Write-Warning "Failed to update Mozilla Firefox" + $empty_line | Out-String + Return "$($after_update_firefoxes.Name) seems to be outdated. The most recent non-beta Firefox version is $most_recent_firefox_version. The installed Firefox version $($after_update_firefoxes.Version) needs to be updated. This script tried to update Firefox, but failed to do so." + + } ElseIf ($most_recent_firefox_after_update) { + + $success = $true + $locale = If (($most_recent_firefox_after_update.DisplayName.Split(" ")[-1] -match "\(") -eq $false) { + If ($powershell_v2_or_earlier -eq $true) { + $language.Get_Item(($most_recent_firefox_after_update.DisplayName.Split(" ")[-1]).Replace(")","")) + } Else { + $language | Select-Object -ExpandProperty (($most_recent_firefox_after_update.DisplayName.Split(" ")[-1]).Replace(")","")) + } # Else + + } Else { + $continue = $true + } # Else ($locale) + + If ($powershell_v2_or_earlier -eq $true) { + try + { + $release_date = $all_dates.Get_Item($most_recent_firefox_after_update.DisplayVersion) + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } Else { + try + { + $release_date = $all_dates | Select-Object -ExpandProperty $most_recent_firefox_after_update.DisplayVersion + } + catch + { + $message = $error[0].Exception + Write-Verbose $message + } + } # Else + + $obj_success_firefox += New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $most_recent_firefox_after_update.DisplayName.replace("(TM)","") + 'Publisher' = $most_recent_firefox_after_update.Publisher + 'Product' = $most_recent_firefox_after_update.DisplayName.Split(" ")[1] + 'Type' = $after_update_firefoxes.Type + 'Locale' = $locale + 'Computer' = $computer + 'Install_Location' = $most_recent_firefox_after_update.InstallLocation + 'Release Notes' = $most_recent_firefox_after_update.URLUpdateInfo + 'Standard Uninstall String' = $most_recent_firefox_after_update.UninstallString.Trim('"') + 'Identifying Number' = $most_recent_firefox_after_update.PSChildName + 'Release_Date' = $release_date + 'Version' = $most_recent_firefox_after_update.DisplayVersion + + } # New-Object + $obj_success_firefox.PSObject.TypeNames.Insert(0,"Successfully Updated Firefox Version") + + $empty_line | Out-String + Write-Output "Currently (until the next Firefox version is released) the $($($obj_success_firefox.Locale).English) $($obj_success_firefox.Type) $($obj_success_firefox.Name) released on $((Get-Date ($obj_success_firefox.Release_Date)).ToShortDateString()) doesn't need any further maintenance or care." + $empty_line | Out-String + Write-Output "The installed Firefox seems to be OK." + + } Else { + $continue = $true + } # Else + +} Else { + $continue = $true +} # Else + + + + +# Step 21 +# Check if the installed version of Firefox is the latest by opening a web page in the default browser +# Congrats! You're using the latest version of Firefox. +$task_number = 17 +$task = "Verifying that the Firefox has been installed by opening a web page in the default browser..." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + +If ($obj_success_firefox -ne $null) { + Start-Process -FilePath "$($obj_success_firefox.Install_Location)\firefox.exe" -ArgumentList "https://www.mozilla.org/en-US/firefox/new/" +} Else { + $continue = $true +} # Else + + + + +# Step 22 +# Close the progress bar +$task_number = 19 +$task = "Finished updating Firefox." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) -Completed + + +# Find out how long the script took to complete +$end_time = Get-Date +$runtime = ($end_time) - ($start_time) + + If ($runtime.Days -ge 2) { + $runtime_result = [string]$runtime.Days + ' days ' + $runtime.Hours + ' h ' + $runtime.Minutes + ' min' + } ElseIf ($runtime.Days -gt 0) { + $runtime_result = [string]$runtime.Days + ' day ' + $runtime.Hours + ' h ' + $runtime.Minutes + ' min' + } ElseIf ($runtime.Hours -gt 0) { + $runtime_result = [string]$runtime.Hours + ' h ' + $runtime.Minutes + ' min' + } ElseIf ($runtime.Minutes -gt 0) { + $runtime_result = [string]$runtime.Minutes + ' min ' + $runtime.Seconds + ' sec' + } ElseIf ($runtime.Seconds -gt 0) { + $runtime_result = [string]$runtime.Seconds + ' sec' + } ElseIf ($runtime.Milliseconds -gt 1) { + $runtime_result = [string]$runtime.Milliseconds + ' milliseconds' + } ElseIf ($runtime.Milliseconds -eq 1) { + $runtime_result = [string]$runtime.Milliseconds + ' millisecond' + } ElseIf (($runtime.Milliseconds -gt 0) -and ($runtime.Milliseconds -lt 1)) { + $runtime_result = [string]$runtime.Milliseconds + ' milliseconds' + } Else { + $runtime_result = [string]'' + } # Else (if) + + If ($runtime_result.Contains(" 0 h")) { + $runtime_result = $runtime_result.Replace(" 0 h"," ") + } If ($runtime_result.Contains(" 0 min")) { + $runtime_result = $runtime_result.Replace(" 0 min"," ") + } If ($runtime_result.Contains(" 0 sec")) { + $runtime_result = $runtime_result.Replace(" 0 sec"," ") + } # if ($runtime_result: first) + +# Display the runtime in console +$empty_line | Out-String +$timestamp_end = Get-Date -Format hh:mm:ss +$end_text = "$timestamp_end - The Firefox Update Protocol completed." +Write-Output $end_text +$empty_line | Out-String +$runtime_text = "The update took $runtime_result." +Write-Output $runtime_text +$empty_line | Out-String + + + + +# [End of Line] + + + + +<# + + _____ + / ____| + | (___ ___ _ _ _ __ ___ ___ + \___ \ / _ \| | | | '__/ __/ _ \ + ____) | (_) | |_| | | | (_| __/ + |_____/ \___/ \__,_|_| \___\___| + + +http://powershell.com/cs/PowerTips_Monthly_Volume_8.pdf#IDERA-1702_PS-PowerShellMonthlyTipsVol8-jan2014 # Tobias Weltner: "PowerTips Monthly vol 8 January 2014" +http://powershell.com/cs/blogs/tips/archive/2011/05/04/test-internet-connection.aspx # ps1: "Test Internet connection" +http://stackoverflow.com/questions/17601528/read-json-object-in-powershell-2-0#17602226 # Goyuix: "Read Json Object in Powershell 2.0" +http://powershell.com/cs/forums/t/9685.aspx # lamaar75: "Creating a Menu" +http://stackoverflow.com/questions/29266622/how-to-run-exe-with-without-elevated-privileges-from-powershell?rq=1 # alejandro5042: "How to run exe with/without elevated privileges from PowerShell" +http://stackoverflow.com/questions/5466329/whats-the-best-way-to-determine-the-location-of-the-current-powershell-script?noredirect=1&lq=1 # JaredPar and Matthew Pirocchi "What's the best way to determine the location of the current PowerShell script?" +http://stackoverflow.com/questions/10941756/powershell-show-elapsed-time # Jeff: "Powershell show elapsed time" + + + _ _ _ + | | | | | | + | |__| | ___| |_ __ + | __ |/ _ \ | '_ \ + | | | | __/ | |_) | + |_| |_|\___|_| .__/ + | | + |_| +#> + +<# + +.SYNOPSIS +Retrieves the latest Mozilla Firefox version numbers from the Internets, and looks +for the installed Firefox versions on the system. If an outdated Firefox version +is found, tries to update Firefox. + +.DESCRIPTION +Update-MozillaFirefox downloads a list of the most recent Firefox version numbers +against which it compares the Firefox version numbers found on the system and +displays, whether a Firefox update is needed or not. Update-MozillaFirefox detects +the installed Firefoxes by querying the Windows registry for installed programs. +The keys from +HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ and +HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\ are read on 64-bit +computers, and on the 32-bit computers only the latter path is accessed. At Step 7 +Update-MozillaFirefox downloads and writes several Firefox-related files, namely +"firefox_current_versions.json", "firefox_release_history.json", +"firefox_major_versions.json", "firefox_languages.json" and "firefox_regions.json", +which Update-MozillaFirefox uses as data sources. When run in a 'normal' PowerShell +window, and all the detected Firefox versions seem to be up-to-date, +Update-MozillaFirefox will just check that everything is OK and leave without +further ceremony at Step 11. + +If Update-MozillaFirefox is run without elevated rights (but with a working Internet +connection) in a machine with an old Firefox version, it will be shown that +a Firefox update is needed, but Update-MozillaFirefox will exit at Step 12 before +downloading any files. To perform an update with Update-MozillaFirefox, PowerShell +has to be run in an elevated window (run as an administrator). If +Update-MozillaFirefox is run in an elevated PowerShell window and no Firefox is +detected, the script offers the option to install Firefox in the "Admin Corner" +(step 11), where, in contrary to the main autonomous nature of Update-MozillaFirefox, +an end-user input is required for selecting the bit-version and the language. In +the "Admin Corner", one instance of either 32-bit or 64-bit version in one of the +available languages is installable with Update-MozillaFirefox – the language +selection covers over 30 languages. + +In the update procedure itself Update-MozillaFirefox downloads a full Firefox +installer from Mozilla, which is equal to the type that is already installed on +the system (same bit version and language). After writing the Install Configuration +File (firefox_configuration.ini to $path at Step 14, where, for instance, +the automatic Mozilla Maintenance service is disabled and the default shortcuts +are enabled) and stopping several Firefox-related processes, Update-MozillaFirefox +installs the downloaded Firefox on top of the existing Firefox installation, +which triggers the in-built Firefox update procedure. + +.OUTPUTS +Displays Firefox related information in console. Tries to update an outdated Firefox +to its latest version, if an old Firefox installation is found, and if +Update-MozillaFirefox is run in an elevated Powershell window. In addition to that... + + +At Step 7 the baseline Firefox version numbers are written to a file +(firefox_current_versions.json) and also four additional auxillary JSON files +are created, namely: + + + Firefox JSON Files (at Step 7): + + + firefox_current_versions.json %TEMP%\firefox_current_versions.json + firefox_release_history.json %TEMP%\firefox_release_history.json + firefox_major_versions.json %TEMP%\firefox_major_versions.json + firefox_languages.json %TEMP%\firefox_languages.json + firefox_regions.json %TEMP%\firefox_regions.json + + + The %TEMP% location represents the current Windows temporary file folder. + In PowerShell, for instance the the command $env:temp displays the temp-folder + path. + + +If the actual update procedure including the installation file downloading +is initiated, a Firefox Install Configuration File (firefox_configuration.ini) is +created with one active parameter (other parameters inside the file are commented +out): + + + Install Configuration File (at Step 14): + + + firefox_configuration.ini %TEMP%\firefox_configuration.ini + + + The %TEMP% location represents the current Windows temporary file folder. + In PowerShell, for instance the the command $env:temp displays the temp-folder + path. + + +To see the actual values that are being written, please see the Step 14 above, +where the following value is written: (altering the duplicated value below won't +affect the script in any meaningful way) + + + MaintenanceService=false The MozillaMaintenance service is used for silent + updates and may be used for other maintenance + related tasks. It is an optional component. This + option can be used in Firefox 16 or later to skip + installing the service. + + +For a comprehensive list of available settings and a more detailed description +of the value above, please see the "Installer:Command Line Arguments" at +https://wiki.mozilla.org/Installer:Command_Line_Arguments + + +To open these file locations in a Resource Manager Window, for instance a command + + + Invoke-Item $env:temp + + +may be used at the PowerShell prompt window [PS>]. + +.NOTES +Requires either (a) PowerShell v3 or later or (b) .NET 3.5 or later for importing +and converting JSON-files (at Step 8). + +Requires a working Internet connection for downloading a list of the most recent +Firefox version numbers and for downloading a complete Firefox installer from +Mozilla (but the latter procedure is not initiated, if the system is deemed +up-to-date). + +For performing any actual updates with Update-MozillaFirefox, it's mandatory to +run this script in an elevated PowerShell window (where PowerShell has been started +with the 'run as an administrator' option). The elevated rights are needed for +installing Firefox on top of the exising Firefox installation. + +Update-MozillaFirefox is designed to update only one instance of Firefox. If more +than one instances of Firefox are detected, the script will notify the user in +Step 5, and furthermore, if old Firefox(es) are detected, the script will exit +before downloading the installation file at Step 15. + +Please note that the Firefox installation configuration file written at Step 14 +disables the Mozilla Maintenance service so that the Mozilla Maintenance service +will not be installed during the Firefox update. The values set with the Install +Configuration File (firefox_configuration.ini) are altering the system files and +seemingly are written somewhere deeper to the innards of Mozilla Firefox +semi-permanently. + +Please also notice that when run in an elevated PowerShell window and an old +Firefox version is detected, Update-MozillaFirefox will automatically try to +download files from the Internet without prompting the end-user beforehand or +without asking any confirmations (at Step 16 and onwards) and at Step 17 closes +a bunch of processes without any further notice. + +Please note that the downloaded files are placed in a directory, which is specified +with the $path variable (at line 42). The $env:temp variable points to the current +temp folder. The default value of the $env:temp variable is +C:\Users\\AppData\Local\Temp (i.e. each user account has their own +separate temp folder at path %USERPROFILE%\AppData\Local\Temp). To see the current +temp path, for instance a command + + [System.IO.Path]::GetTempPath() + +may be used at the PowerShell prompt window [PS>]. To change the temp folder for instance +to C:\Temp, please, for example, follow the instructions at +http://www.eightforums.com/tutorials/23500-temporary-files-folder-change-location-windows.html + + Homepage: https://github.com/auberginehill/update-mozilla-firefox + Short URL: http://tinyurl.com/gr75tjx + Version: 1.6 + +.EXAMPLE +./Update-MozillaFirefox +Runs the script. Please notice to insert ./ or .\ before the script name. + +.EXAMPLE +help ./Update-MozillaFirefox -Full +Displays the help file. + +.EXAMPLE +Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine +This command is altering the Windows PowerShell rights to enable script execution +in the default (LocalMachine) scope, and defines the conditions under which Windows +PowerShell loads configuration files and runs scripts in general. In Windows Vista +and later versions of Windows, for running commands that change the execution policy +of the LocalMachine scope, Windows PowerShell has to be run with elevated rights +(Run as Administrator). The default policy of the default (LocalMachine) scope is +"Restricted", and a command "Set-ExecutionPolicy Restricted" will "undo" the changes +made with the original example above (had the policy not been changed before...). +Execution policies for the local computer (LocalMachine) and for the current user +(CurrentUser) are stored in the registry (at for instance the +HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ExecutionPolicy key), and remain +effective until they are changed again. The execution policy for a particular session +(Process) is stored only in memory, and is discarded when the session is closed. + + + Parameters: + + Restricted Does not load configuration files or run scripts, but permits + individual commands. Restricted is the default execution policy. + + AllSigned Scripts can run. Requires that all scripts and configuration + files be signed by a trusted publisher, including the scripts + that have been written on the local computer. Risks running + signed, but malicious, scripts. + + RemoteSigned Requires a digital signature from a trusted publisher on scripts + and configuration files that are downloaded from the Internet + (including e-mail and instant messaging programs). Does not + require digital signatures on scripts that have been written on + the local computer. Permits running unsigned scripts that are + downloaded from the Internet, if the scripts are unblocked by + using the Unblock-File cmdlet. Risks running unsigned scripts + from sources other than the Internet and signed, but malicious, + scripts. + + Unrestricted Loads all configuration files and runs all scripts. + Warns the user before running scripts and configuration files + that are downloaded from the Internet. Not only risks, but + actually permits, eventually, running any unsigned scripts from + any source. Risks running malicious scripts. + + Bypass Nothing is blocked and there are no warnings or prompts. + Not only risks, but actually permits running any unsigned scripts + from any source. Risks running malicious scripts. + + Undefined Removes the currently assigned execution policy from the current + scope. If the execution policy in all scopes is set to Undefined, + the effective execution policy is Restricted, which is the + default execution policy. This parameter will not alter or + remove the ("master") execution policy that is set with a Group + Policy setting. + __________ + Notes: - Please note that the Group Policy setting "Turn on Script Execution" + overrides the execution policies set in Windows PowerShell in all + scopes. To find this ("master") setting, please, for example, open + the Local Group Policy Editor (gpedit.msc) and navigate to + Computer Configuration > Administrative Templates > + Windows Components > Windows PowerShell. + + - The Local Group Policy Editor (gpedit.msc) is not available in any + Home or Starter edition of Windows. + + - Group Policy setting "Turn on Script Execution": + + Not configured : No effect, the default + value of this setting + Disabled : Restricted + Enabled - Allow only signed scripts : AllSigned + Enabled - Allow local scripts and remote signed scripts : RemoteSigned + Enabled - Allow all scripts : Unrestricted + + +For more information, please type "Get-ExecutionPolicy -List", "help Set-ExecutionPolicy -Full", +"help about_Execution_Policies" or visit https://technet.microsoft.com/en-us/library/hh849812.aspx +or http://go.microsoft.com/fwlink/?LinkID=135170. + +.EXAMPLE +New-Item -ItemType File -Path C:\Temp\Update-MozillaFirefox.ps1 +Creates an empty ps1-file to the C:\Temp directory. The New-Item cmdlet has an inherent +-NoClobber mode built into it, so that the procedure will halt, if overwriting (replacing +the contents) of an existing file is about to happen. Overwriting a file with the New-Item +cmdlet requires using the Force. If the path name and/or the filename includes space +characters, please enclose the whole -Path parameter value in quotation marks (single or +double): + + New-Item -ItemType File -Path "C:\Folder Name\Update-MozillaFirefox.ps1" + +For more information, please type "help New-Item -Full". + +.LINK +http://powershell.com/cs/PowerTips_Monthly_Volume_8.pdf#IDERA-1702_PS-PowerShellMonthlyTipsVol8-jan2014 +http://powershell.com/cs/blogs/tips/archive/2011/05/04/test-internet-connection.aspx +http://stackoverflow.com/questions/17601528/read-json-object-in-powershell-2-0#17602226 +http://powershell.com/cs/forums/t/9685.aspx +http://stackoverflow.com/questions/29266622/how-to-run-exe-with-without-elevated-privileges-from-powershell?rq=1 +http://stackoverflow.com/questions/5466329/whats-the-best-way-to-determine-the-location-of-the-current-powershell-script?noredirect=1&lq=1 +http://stackoverflow.com/questions/10941756/powershell-show-elapsed-time +http://stackoverflow.com/questions/1825585/determine-installed-powershell-version?rq=1 +https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/convertfrom-json +https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/convertfrom-stringdata +https://blogs.technet.microsoft.com/heyscriptingguy/2014/04/23/powertip-convert-json-file-to-powershell-object/ +http://stackoverflow.com/questions/32887583/powershell-v2-converts-dictionary-to-array-when-returned-from-a-function +http://powershelldistrict.com/powershell-json/ +https://technet.microsoft.com/en-us/library/ff730939.aspx +https://technet.microsoft.com/en-us/library/ee692803.aspx +https://www.credera.com/blog/technology-insights/perfect-progress-bars-for-powershell/ +http://kb.mozillazine.org/Software_Update +https://wiki.mozilla.org/Installer:Command_Line_Arguments +https://wiki.mozilla.org/Software_Update:Checking_For_Updates +https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt +http://kb.mozillazine.org/App.update.url + +#> \ No newline at end of file diff --git a/Applications/Flash Player/Force-Remove.ps1 b/Applications/Flash Player/Force-Remove.ps1 new file mode 100644 index 0000000..621eb48 --- /dev/null +++ b/Applications/Flash Player/Force-Remove.ps1 @@ -0,0 +1,126 @@ +<# +=========================================================================== + Created on: 0/01/2021 13:06 + Created by: Ben Whitmore + Organization: - + Filename: Install_Flash_Removal_KB4577586.ps1 + Target System: Windows 10 , Windows Server 2012/R2 | 2016 | 2019 | 1903 | 1909 | 2004 +=========================================================================== + +Version: +1.2.1 - 22/01/2021 +Added support for Server OS - Thanks @Hoorge for the suggestion + +1.2 - 04/01/2021 +Fixed 20H2 coding error - Credit @AndyUpperton + +1.1 02/01/2021 +Basic Transcript Logging added + +1.0 - 01/01/2021 +Release +#> + +#Set Current Directory +$ScriptPath = $MyInvocation.MyCommand.Path +$CurrentDir = Split-Path $ScriptPath + +$Log = Join-Path $ENV:TEMP "Flash_Uninstall.log" +Start-Transcript $Log + +#Set WUSA.EXE Variable +$WUSA = "$env:systemroot\System32\wusa.exe" + +#Get OS Product Name +$OS_ProductName = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' ProductName).ProductName + +#Build OS Version String +Switch ($OS_ProductName) { + { $_.StartsWith("Windows 10") } { $OS_String = ($OS_ProductName -split "\s+" | Select-Object -First 2) -Join ' ' } + { $_.StartsWith("Windows Server 2012 R2") } { $OS_String = ($OS_ProductName -split "\s+" | Select-Object -First 4) -Join ' ' } + { ($_.StartsWith("Windows Server") -and (!($_.Contains("R2")))) } { $OS_String = ($OS_ProductName -split "\s+" | Select-Object -First 3) -Join ' ' } +} + +#Get OS Release ID for valid OS's +If (!($OS_String -match "Server 2012")) { + $OS_ReleaseID = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' ReleaseId).ReleaseId +} +else { + Write-Output "Skipping check of Release ID for $($OS_ProductName)" +} + +#Rename $OS_ReleaseID variable for "Windows 10 20H2" and "Windows Server, version 1909" because the same KB update is used for both 2004 and 2009 +If (($OS_ReleaseID -eq "2009" -and $OS_ProductName -match "Windows 10")) { + $OS_ReleaseID = "2004" +} + +#Build OS Version Name variable +Switch ($OS_String) { + { $_.Equals("Windows 10") } { $Version_String = $OS_String + " Version " + $OS_ReleaseID } + { $_.StartsWith("Windows Server 2") } { $Version_String = $OS_String } + { $_.StartsWith("Windows Server,") } { $Version_String = $OS_String + $OS_ReleaseID } +} + +#Get OS Architecture +$OS_Architecture = Switch (Get-CIMInstance -Namespace "ROOT\CIMV2" -Class "Win32_Processor" | Select-Object -Unique -ExpandProperty Architecture) { + 9 { 'x64-based' } + 0 { 'x86-based' } + 5 { 'ARM64-based' } +} + +$PatchRequired = "Update for Removal of Adobe Flash Player for " + $Version_String + " for " + $OS_Architecture + " systems (KB4577586)" + +#Get Patch Titles +$PatchNames = Get-ChildItem $CurrentDir | Where-Object { $_.PSIsContainer } | Foreach-Object { $_.Name } + +#Check if the patch has been downloaded for the current system +$PatchFound = $False + +#Check Installation +$Patch = Get-Hotfix | Where-Object { $_.HotFixID -match "KB4577586" } +If ($Patch) { + Write-Host "Patch Already Installed" +} +else { + Foreach ($Patch in $PatchNames) { + If ($Patch -eq $PatchRequired) { + $PatchFound = $True + + #Get MSU from the correct Directory + $MSU = Get-ChildItem (Join-Path $CurrentDir $Patch) -Recurse | Where-Object { $_.Extension -eq ".msu" } + $MSUFullPath = Join-Path (Join-Path $CurrentDir $PatchRequired) $MSU.Name + + #Set WUSA Args + $Args = @( + """$MSUFullPath""" + "/quiet" + "/norestart" + ) + } + } + + #Patch detection determines outcome + If ($PatchFound) { + Write-Host "Patch found for this system" + Write-Host "Patch Required: $($PatchRequired)" + Write-Host "Patch Name: $($MSU.Name)" + Write-Host "Installing Update..." + + #Install Patch + Start-Process -FilePath $WUSA -ArgumentList $Args -Wait + + #Check Installation + $Patch = Get-Hotfix | Where-Object { $_.HotFixID -match "KB4577586" } + If ($Patch) { + Write-Host "Patch Installed Successfully" + } + Else { + Write-Warning "Patch Installation Failed" + } + } + Else { + Write-Host "Patch not found for this system" + Write-Host "Patch Required: $($PatchRequired)" + } +} +Stop-Transcript \ No newline at end of file diff --git a/Applications/Java/Force-Update.ps1 b/Applications/Java/Force-Update.ps1 new file mode 100644 index 0000000..da191ba --- /dev/null +++ b/Applications/Java/Force-Update.ps1 @@ -0,0 +1,2268 @@ +<# +Java-Update.ps1 + +Please Note: +- It's assumed that a 64-bit Java is going to be used in a 64-bit machine. +- It's assumed that only one (the most recent non-beta available) version of Java is intended to be used. +- If enough rights are deemed to be possessed (PowerShell has been started with the 'run as an administrator' option), any not up-to-date versions of Java will be uninstalled, and successively if the most recent non-beta version of Java is not found on the system, one instance will be installed (the 64-bit Java to a 64-bit machine and the 32-bit Java to a 32-bit machine). +- So if, for example, 32-bit and 64-bit outdated Java is installed in a 64-bit machine, only the most recent 64-bit Java replaces those versions. For more granular uninstallation/installation procedures, please consider doing the uninstallation manually via the Control Panel or by using the Java Uninstall Tool (please see the Step 19 for futher details about the Java Uninstall Tool) and downloading the relevant files manually (for download URLs, please see the Step 16 below) or changing this script according to the prevailing preferences. +- System Files are altered, for instance, in Steps 4, 5, 19 and 24. +- Please consider reviewing at least the Steps 4 and 5, since eventually (after some update iterations) the written settings will also be used in the Java installations not initiated by this script. +- Processes may be stopped in Step 6 and will be stopped in Step 18 without any further notification to the end-user or without any question prompts presented beforehand. +#> + + +$path = $env:temp +$computer = $env:COMPUTERNAME +$ErrorActionPreference = "Stop" +$start_time = Get-Date +$empty_line = "" +$quote ='"' +$unquote ='"' +$original_javases = @() +$duplicate_uninstall = @() +$java_enumeration = @() +$uninstalled_old_javas = @() +$new_javases = @() + + +# C:\Windows\system32\msiexec.exe +$path_system_32 = [Environment]::GetFolderPath("System") +$msiexec = "$path_system_32\msiexec.exe" + +# C:\Windows\system32\cmd.exe +$cmd = "$path_system_32\cmd.exe" + +# General Java URLs: +# Source: https://bugs.openjdk.java.net/browse/JDK-8005362 +$uninstaller_tool_url = "https://javadl-esd-secure.oracle.com/update/jut/JavaUninstallTool.exe" +$uninstaller_info_url = "https://www.java.com/en/download/help/uninstall_java.xml" +$release_history_url = "https://www.java.com/en/download/faq/release_dates.xml" +$baseline_url = "https://javadl-esd-secure.oracle.com/update/baseline.version" + +# 32-bit Java ID Numbers (JRE 4 -) +# Source: http://pastebin.com/73JqpTqv +# Source: https://github.com/bmrf/standalone_scripts/blob/master/java_runtime_nuker.bat +# Source: http://www.itninja.com/question/silent-uninstall-java-all-versions +$regex_32_a = "{26A24AE4-039D-4CA4-87B4-2F32(\d+)..}" +$regex_32_b = "{26A24AE4-039D-4CA4-87B4-2F.32(\d+)..}" +$regex_32_c = "{3248F0A8-6813-11D6-A77B-00B0D0(\d+).}" +$regex_32_d = "{7148F0A8-6813-11D6-A77B-00B0D0(\d+).}" + +# 64-bit Java ID Numbers (Java 6 Update 23 -) +# Source: http://pastebin.com/73JqpTqv +# Source: https://github.com/bmrf/standalone_scripts/blob/master/java_runtime_nuker.bat +# Source: http://www.itninja.com/question/silent-uninstall-java-all-versions +$regex_64_a = "{26A24AE4-039D-4CA4-87B4-2F64(\d+)..}" +$regex_64_b = "{26A24AE4-039D-4CA4-87B4-2F.64(\d+)..}" + + + + +# Step 1 +# Determine the architecture of a machine # Credit: Tobias Weltner: "PowerTips Monthly vol 8 January 2014" +If ([IntPtr]::Size -eq 8) { + $empty_line | Out-String + "Running in a 64-bit subsystem" | Out-String + $64 = $true + $bit_number = "64" + $registry_paths = @( + 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*', + 'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' + ) + $empty_line | Out-String +} Else { + $empty_line | Out-String + "Running in a 32-bit subsystem" | Out-String + $64 = $false + $bit_number = "32" + $registry_paths = @( + 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*' + ) + $empty_line | Out-String +} # Else + +# Determine if the script is run in an elevated window # Credit: alejandro5042: "How to run exe with/without elevated privileges from PowerShell" +$is_elevated = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator") + + +# Function to check whether a program is installed or not +Function Check-InstalledSoftware ($display_name) { + Return Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -eq $display_name } +} # function + + +# Function to check whether a certain version of Java is installed or not +Function Check-JavaID ($id_number) { + Return Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match $id_number } +} # function + + + + +# Step 2 +# Find out the which kind of Java is installed +$java_is_installed = $false +$32_bit_java_is_installed = $false +$64_bit_java_is_installed = $false +$auto_updater_is_installed = $false + +$existing_javas = Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { ($_.DisplayName -like "*Java*" -or $_.DisplayName -like "*J2SE Runtime*") -and ($_.Publisher -like "Oracle*" -or $_.Publisher -like "Sun*" )} +# $query= "select * from win32_Product where (Name like 'Java %' or Name like 'Java(TM)%' or Name like 'J2SE%') and (Name <> 'Java Auto Updater') and ((Vendor='Sun Microsystems, Inc.') or (Vendor='Oracle') or (Vendor='Oracle Corporation')) and (NOT Name like '%CompuGROUP%') and (NOT Name like '%IBM%') and (NOT Name like '%DB%') and (NOT Name like '%Advanced Imaging%') and (NOT Name like '%Media Framework%') and (NOT Name like '%SDK%') and (NOT Name like '%Development Kit%')" +# https://poshuninstalljava.codeplex.com/SourceControl/latest#uninstall-java.ps1 +# Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { ($_.DisplayName -like "*Java*" -or $_.DisplayName -like "*J2SE Runtime*") -and ($_.Publisher -like "Oracle*" -or $_.Publisher -like "Sun*") -and (-not $_.DisplayName -like "*SDK*") -and (-not $_.DisplayName -like "*Development Kit*") } + +# Number of Installed Javas +If ($existing_javas -eq $null) { + $number_of_installed_javas = 0 +} Else { + $number_of_installed_javas = ($existing_javas | Measure-Object).Count +} # Else + + +# Installed Java Types +If ($existing_javas -ne $null) { + + $java_is_installed = $true + + ForEach ($original_java in $existing_javas) { + + # Custom Uninstall Strings + $original_arguments = "/uninstall $($original_java.PSChildName) /qn /norestart" + $original_uninstall_string = "$msiexec /uninstall $($original_java.PSChildName) /qn" + $original_powershell_uninstall_string = [string]"Start-Process -FilePath $msiexec -ArgumentList " + $quote + $original_arguments + $unquote + " -Wait" + $original_product_version = ((Get-ItemProperty -Path "$($original_java.InstallLocation)\bin\java.exe" -ErrorAction SilentlyContinue -Name VersionInfo).VersionInfo).ProductVersion + $regex_build = If ($original_product_version -ne $null) { $original_product_version -match "(?\d+)\.(?\d+)\.(?\d+)\.(?\d+)" } Else { $continue = $true } + + + $original_javases += $obj_java = New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $original_java.DisplayName.replace("(TM)","") + 'Version' = $original_java.DisplayVersion + 'Major_Version' = [int32]$original_java.VersionMajor + 'Build_Number' = If ($Matches.P4 -ne $null) { [string]"b" + $Matches.P4 } Else { $continue = $true } + 'Install_Date' = $original_java.InstallDate + 'Install_Location' = $original_java.InstallLocation + 'Publisher' = $original_java.Publisher + 'Computer' = $computer + 'ID' = $original_java.PSChildName + 'Standard_Uninstall_String' = $original_java.UninstallString + 'Custom_Uninstall_String' = $original_uninstall_string + 'PowerShell_Uninstall_String' = $original_powershell_uninstall_string + 'Type' = If (($original_java.PSChildName -match $regex_32_a) -or ($original_java.PSChildName -match $regex_32_b) -or ($original_java.PSChildName -match $regex_32_c) -or ($original_java.PSChildName -match $regex_32_d)) { + "32-bit" + } ElseIf (($original_java.PSChildName -match $regex_64_a) -or ($original_java.PSChildName -match $regex_64_b)) { + "64-bit" + } Else { + $continue = $true + } # Else + 'Update_Number' = If (($original_java.PSChildName -match $regex_32_a) -or ($original_java.PSChildName -match $regex_32_b) -or ($original_java.PSChildName -match $regex_32_c) -or ($original_java.PSChildName -match $regex_32_d)) { + [int32]$original_java.DisplayName.Split()[-1] + } ElseIf (($original_java.PSChildName -match $regex_64_a) -or ($original_java.PSChildName -match $regex_64_b)) { + [int32]$original_java.DisplayName.Split()[-2] + } Else { + $continue = $true + } # Else + + } # New-Object + } # ForEach ($original_java) + $original_javases.PSObject.TypeNames.Insert(0,"Original Installed Java Versions") +} Else { + $continue = $true +} # Else + + + # 32-bit Java + If ((Check-JavaID $regex_32_a -ne $null) -or (Check-JavaID $regex_32_b -ne $null) -or (Check-JavaID $regex_32_c -ne $null) -or (Check-JavaID $regex_32_d -ne $null)) { + + $32_bit_java_is_installed = $true + $original_java_32_bit_powershell_uninstall_string = $original_javases | Where-Object { $_.Type -eq "32-bit" } | Select-Object -ExpandProperty PowerShell_Uninstall_String + + } Else { + $continue = $true + } # Else + + + # 64-bit Java + If ((Check-JavaID $regex_64_a -ne $null) -or (Check-JavaID $regex_64_b -ne $null)) { + + $64_bit_java_is_installed = $true + $original_java_64_bit_powershell_uninstall_string = $original_javases | Where-Object { $_.Type -eq "64-bit" } | Select-Object -ExpandProperty PowerShell_Uninstall_String + + } Else { + $continue = $true + } # Else + + + # Installed Version(s) + $installed_java_version_text_format = ($original_javases | Select-Object -ExpandProperty Name) + + # Installed Java Version Number(s) + $installed_java_version = $original_javases | Where-Object { $_.Name -ne "Java Auto Updater" } | Select-Object -ExpandProperty Version + + # Installed Java Main Version(s) + $installed_java_major_version = $original_javases | Where-Object { $_.Name -ne "Java Auto Updater" } | Select-Object -ExpandProperty Major_Version + + # Installed Java Update Number(s) + $installed_java_update_number = $original_javases | Where-Object { $_.Name -ne "Java Auto Updater" } | Select-Object -ExpandProperty Update_Number + + # Installed Build Number(s) + $installed_java_build_number = $original_javases | Where-Object { $_.Name -ne "Java Auto Updater" } | Select-Object -ExpandProperty Build_Number + + # Java Installation Path(s) + $java_home_path = $original_javases | Where-Object { $_.Name -ne "Java Auto Updater" } | Select-Object -ExpandProperty Install_Location + + # Java Auto Updater Is Installed? + If (Check-InstalledSoftware "Java Auto Updater") { $auto_updater_is_installed = $true } Else { $continue = $true } + + If (($auto_updater_is_installed -eq $true) -and ($number_of_installed_javas -eq 1)) { + # Only the Java Auto Updater is installed + $exception_one = $true + } Else { + $continue = $true + } # Else + + + + +# Step 3 +# Gather more details about the latest installed version of Java +$java_reg_path = 'HKLM:\Software\JavaSoft\Java Runtime Environment' +If ((Test-Path $java_reg_path) -eq $true) { + + # $java_8_is_installed = $true + $existing_installed_version = (Get-ItemProperty -Path $java_reg_path -Name CurrentVersion).CurrentVersion + + # Java Installation Path + $java_home_path_reg = (Get-ItemProperty -Path "$java_reg_path\$existing_installed_version" -Name JavaHome).JavaHome + + # Installed Java Description: + $installed_java_description = ((Get-ChildItem "$java_home_path_reg\bin\java.exe").VersionInfo.ProductName).Replace("(TM)","") + + # Installed Java Version (legacy_format): + # 8.0.1110.14 + $installed_java_version_alternative_legacy_format = (Get-ChildItem "$java_home_path_reg\bin\java.exe").VersionInfo.ProductVersion + + # Latest installed Java Main Version: + $latest_installed_java_major_version = [int32](Get-ChildItem "$java_home_path_reg\bin\java.exe").VersionInfo.ProductMajorPart + + # Installed Java Update Number (legacy_format): + # 1110 + $installed_java_alternative_legacy_update_number = [int32](Get-ChildItem "$java_home_path_reg\bin\java.exe").VersionInfo.ProductBuildPart + +} Else { + $continue = $true +} # Else (Step 3) + + + + +# Step 4 +# Set the Java deployment properties and with an alternative method find out the build number +# Note: Please consider reviewing these settings, since eventually (after some update iterations) these will also be used in the Java installations not initiated by this script. +# Source: http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/properties.html + +<# + + The following locations provide examples for each operating system: + + Windows 7: + For user jsmith running on Windows 7, the deployment.properties file would be located in the following directory: + C:\Users\jsmith\AppData\LocalLow\Sun\Java\Deployment\deployment.properties + \LocalLow\Sun\Java\Deployment\deployment.properties + + Linux: + For user bjones running on Solaris or Linux, the deployment.properties file would be located in the following directory: + /home/bjones/.java/deployment/deployment.properties + ${user.home}/.java/deployment/deployment.properties + + OS X: + For user jdoe running on OS X, the deployment.properties file would be located in the following directory: + /Users/jdoe/Library/Application Support/Oracle/Java/Deployment/deployment.properties + ~/Library/Application Support/Oracle/Java/Deployment/deployment.properties + +#> + +If ((Test-Path $java_reg_path) -eq $true) { + + # Step 4.1 + # "deployment.properties" File Location # 1/2 (Store user settings in the roaming profile = false) + $appdata_path = [string][Environment]::GetFolderPath("LocalApplicationData") + 'Low\Sun\Java\Deployment' + + If ((Test-Path $appdata_path\deployment.properties) -eq $true) { + $app_path = $appdata_path + + If ((Test-Path $appdata_path\deployment.properties_original) -eq $true) { + # If the "original" version of the deployment.properties file exists, do not overwrite it, but instead create another backup that gets overwritten each time this script is run this deep + copy $appdata_path\deployment.properties $appdata_path\deployment.properties.old + } Else { + # If an "original" version of this file does not exist, create it (practically when this script is run for the first time) + copy $appdata_path\deployment.properties $appdata_path\deployment.properties_original + } # Else + + # Get-Content $appdata_path\deployment.properties + + $seed_file = "$appdata_path\deployment.properties" + $destination_file = "$appdata_path\deployment.properties.new" + $new_configuration_file = New-Item -ItemType File -Path "$destination_file" -Force + + # Installed Java Version (Almost Full, with an underscore: x.y.z_nnn) - Legacy Format: + # 1.8.0_101 + $installed_java_version_reg = ((Get-Content $seed_file | Select-String 'deployment.javaws.jre.0.product=') -split '=')[1] + + # Installed Java Version (x.y.z) - Old Name: + $installed_baseline = $installed_java_version_reg.split("_")[0] + + # Installed Java Update Number (nnn): + $installed_update_number_reg = [int32]$installed_java_version_reg.split("_")[1] + + + # Security Tab + # Disable Java content in the browser + If ((Get-Content $seed_file | Select-String 'deployment.webjava.enabled') -eq $null) { + # The 'display Java content in the browser' setting is missing = $true + $new_configuration_file + Add-Content $new_configuration_file -Value (Get-Content $seed_file) + Add-Content $new_configuration_file -Value 'deployment.webjava.enabled=false' + copy $destination_file $seed_file + } Else { + $continue = $true + } # Else + + If ((Get-Content $seed_file | Select-String 'deployment.webjava.enabled=true') -eq $true) { + # Java content is enabled in the browser = $true + (Get-Content $seed_file) | Foreach-Object { $_ -replace 'deployment.webjava.enabled=true', 'deployment.webjava.enabled=false' } | Set-Content $destination_file + copy $destination_file $seed_file + } Else { + $continue = $true + } # Else + + + # Advanced Tab + # Disable Third Party Advertisements + If ((Get-Content $seed_file | Select-String 'install.disable.sponsor.offers') -eq $null) { + # The 'Third Party Advertisement' setting is missing = $true + $new_configuration_file + Add-Content $new_configuration_file -Value (Get-Content $seed_file) + Add-Content $new_configuration_file -Value 'install.disable.sponsor.offers=true' + copy $destination_file $seed_file + } Else { + $continue = $true + } # Else + + If ((Get-Content $seed_file | Select-String 'install.disable.sponsor.offers=false') -eq $true) { + # The Third Party Advertisements are enabled = $true + (Get-Content $seed_file) | Foreach-Object { $_ -replace 'install.disable.sponsor.offers=false', 'install.disable.sponsor.offers=true' } | Set-Content $destination_file + copy $destination_file $seed_file + } Else { + $continue = $true + } # Else + } # if (Step 4.1) + + + # Step 4.2 + # "deployment.properties" File Location # 2/2 (Store user settings in the roaming profile = true) + $alternative_appdata_path = [string][Environment]::GetFolderPath("ApplicationData") + '\Sun\Java\Deployment' + + If ((Test-Path $alternative_appdata_path\deployment.properties) -eq $true) { + $app_path = $alternative_appdata_path + + If ((Test-Path $alternative_appdata_path\deployment.properties_original) -eq $true) { + # If the "original" version of the deployment.properties file exists, do not overwrite it, but instead create another backup that gets overwritten each time this script is run this deep + copy $alternative_appdata_path\deployment.properties $alternative_appdata_path\deployment.properties.old + } Else { + # If an "original" version of this file does not exist, create it (practically when this script is run for the first time) + copy $alternative_appdata_path\deployment.properties $alternative_appdata_path\deployment.properties_original + } # Else + + # Get-Content $alternative_appdata_path\deployment.properties + + $seed_file = "$alternative_appdata_path\deployment.properties" + $destination_file = "$alternative_appdata_path\deployment.properties.new" + $new_configuration_file = New-Item -ItemType File -Path "$destination_file" -Force + + # Installed Java Version (Almost Full, with an underscore: x.y.z_nnn) - Legacy Format: + # 1.8.0_101 + $installed_java_version_reg = ((Get-Content $seed_file | Select-String 'deployment.javaws.jre.0.product=') -split '=')[1] + + # Installed Java Version (x.y.z) - Old Name: + $installed_baseline = $installed_java_version_reg.split("_")[0] + + # Installed Java Update Number (nnn): + $installed_update_number_reg = [int32]$installed_java_version_reg.split("_")[1] + + + # Security Tab + # Disable Java content in the browser + If ((Get-Content $seed_file | Select-String 'deployment.webjava.enabled') -eq $null) { + # The 'display Java content in the browser' setting is missing = $true + $new_configuration_file + Add-Content $new_configuration_file -Value (Get-Content $seed_file) + Add-Content $new_configuration_file -Value 'deployment.webjava.enabled=false' + copy $destination_file $seed_file + } Else { + $continue = $true + } # Else + + If ((Get-Content $seed_file | Select-String 'deployment.webjava.enabled=true') -eq $true) { + # Java content is enabled in the browser = $true + (Get-Content $seed_file) | Foreach-Object { $_ -replace 'deployment.webjava.enabled=true', 'deployment.webjava.enabled=false' } | Set-Content $destination_file + copy $destination_file $seed_file + } Else { + $continue = $true + } # Else + + + # Advanced Tab + # Disable Third Party Advertisements + If ((Get-Content $seed_file | Select-String 'install.disable.sponsor.offers') -eq $null) { + # The 'Third Party Advertisement' setting is missing = $true + $new_configuration_file + Add-Content $new_configuration_file -Value (Get-Content $seed_file) + Add-Content $new_configuration_file -Value 'install.disable.sponsor.offers=true' + copy $destination_file $seed_file + } Else { + $continue = $true + } # Else + + If ((Get-Content $seed_file | Select-String 'install.disable.sponsor.offers=false') -eq $true) { + # The Third Party Advertisements are enabled = $true + (Get-Content $seed_file) | Foreach-Object { $_ -replace 'install.disable.sponsor.offers=false', 'install.disable.sponsor.offers=true' } | Set-Content $destination_file + copy $destination_file $seed_file + } Else { + $continue = $true + } # Else + } # if (Step 4.2) + + + # Installed Java Build Name + If ((Test-Path $java_reg_path\$installed_java_version_reg\MSI) -eq $true) { + $installed_java_build_name_reg = (Get-ItemProperty -Path "$java_reg_path\$installed_java_version_reg\MSI" -Name FullVersion).FullVersion + } Else { + $continue = $true + } # Else + +} Else { + $continue = $true +} # Else (Step 4) + + $obj_installed += New-Object -TypeName PSCustomObject -Property @{ + 'Installed Version' = $installed_java_version_text_format + 'Installed Java Main Version' = $installed_java_major_version + 'Installed Java Update Number' = $installed_java_update_number + 'Installed Version (Legacy Name)' = $installed_java_version + 'Installed Java Build' = $installed_java_build_number + 'Description' = $installed_java_description + 'Java Installation Path' = $java_home_path + 'Configuration File Location' = $app_path + 'java_config.txt File Location' = $path + 'Java Release History' = $release_history_url + 'Java Uninstallation Info' = $uninstaller_info_url + 'Java Uninstall Tool URL' = $uninstaller_tool_url + 'Java Is Installed?' = $java_is_installed + 'How Many Instances of Java is Found?' = $number_of_installed_javas + 'Java Auto Updater Is Installed?' = $auto_updater_is_installed + '32-bit Java Is Installed?' = $32_bit_java_is_installed + '64-bit Java Is Installed?' = $64_bit_java_is_installed + + } # New-Object + $obj_installed.PSObject.TypeNames.Insert(0,"Installed Java Versions") + $obj_installed_selection = $obj_installed | Select-Object 'Installed Version','Installed Java Main Version','Installed Java Update Number','Installed Java Build','Installed Version (Legacy Name)','Description','Java Installation Path','Configuration File Location','java_config.txt File Location','Java Release History','Java Uninstallation Info','Java Uninstall Tool URL','Java Is Installed?','How Many Instances of Java is Found?','Java Auto Updater Is Installed?','32-bit Java Is Installed?','64-bit Java Is Installed?' + + + # Display the Installed Java version numbers in console + $empty_line | Out-String + $header_installed = "Existing (Installed) Java Versions' Summary Table" + $coline_installed = "-------------------------------------------------" + Write-Output $header_installed + $coline_installed | Out-String + Write-Output $obj_installed_selection + + + + +# Step 5 +# Create a Java Install Configuration File +# Note: Please see the steps 4.1 and 4.2 above for Java deployment properties (the "deployment.properties" -file) +# Note: Please consider reviewing these settings, since eventually (after some update iterations) these will also be used in the Java installations not initiated by this script. +# Source: http://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html#installing_with_config_file +# Source: http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html +# Source: http://docs.oracle.com/javacomponents/msi-jre8/install-guide/installing_jre_msi.htm#msi_install_command_line +# Source: http://stackoverflow.com/questions/28043588/installing-jdk-8-and-jre-8-silently-on-a-windows-machine-through-command-line + +<# + jre [INSTALLCFG=configuration_file_path] [options] + jre INSTALLCFG=configuration_file_path + + jre is the installer base file name, for example, jre-8u05-windows-i586.exe. jre refers to the JRE Windows Offline Installer base file name + + configuration_file_path is the path to the configuration file. Specifies the path of the installer configuration file. + + options are options with specified values separated by spaces. Use the same options as listed in Table 20-1, "Configuration File Options". In addition, you may use the option /s for the JRE Windows Offline Installer to perform a silent installation. You may substitute the value Enable for 1 and the value Disable for 0. + + # Silent install removing old Java and creating a logfile example: + jre1.8.0_60.exe /s /L C:\pathsetup.log REMOVEOUTOFDATEJRES=1 + + # Using a configuration file and creating a logfile example: + jre-8u31-windows-x64.exe INSTALLCFG="%ProgramData%\Java8Configuration\Java8u31config.txt" /L C:\Temp\Java8u31x64itRuntime_install.log + jre-8-windows-i586.exe INSTALLCFG=jre-install-options.txt /s /L C:\TMP\jre-install.log + + # cmd.exe Command Prompt with Administrative rights + msiexec.exe /i jre1.8.0_31_64bit.msi /L*v C:\Temp\Java8u31x64it_verb_Runtime_install.log INSTALL_SILENT="Enable" AUTO_UPDATE="Disable" WEB_JAVA="Enable" WEB_ANALYTICS="Disable" EULA="Disable" NOSTARTMENU="Enable" /qb + msiexec.exe /i %~dp0jre-8u45-windows-i586.msi INSTALLCFG=%~dp0custom.cfg /qn /L c:\log\jre-8u45-windows-i586.log + + # Basic UI mode: + msiexec.exe /i installer.msi [INSTALLCFG=configuration_file_path] [options] /qb + + # Silent or unattended mode: + msiexec.exe /i installer.msi [INSTALLCFG=configuration_file_path] [options] /qn +#> + + $java_config = New-Item -ItemType File -Path "$path\java_config.txt" -Force + $java_config + Add-Content $java_config -Value ('INSTALL_SILENT=1 +AUTO_UPDATE=0 +WEB_JAVA=0 +WEB_JAVA_SECURITY_LEVEL=VH +WEB_ANALYTICS=0 +EULA=0 +REBOOT=0 +REBOOT=Suppress +REBOOT=ReallySuppress +NOSTARTMENU=1 +SPONSORS=0 +REMOVEOUTOFDATEJRES=1') + + + + +# Step 6 +# If more than one instance of Java is installed on the system, notify the user, and try to remove the excessive Java(s), if enough permissions are deemed to be available +If ((($number_of_installed_javas -eq 1) -and ($auto_updater_is_installed -eq $false)) -or (($number_of_installed_javas -eq 2) -and ($32_bit_java_is_installed -eq $true) -and ($64_bit_java_is_installed -eq $true) -and ($auto_updater_is_installed -eq $false))) { + $excessive_javas_are_installed = $false + $continue = $true + +} ElseIf (($number_of_installed_javas -gt 1 ) -or ($auto_updater_is_installed -eq $true)) { + $excessive_javas_are_installed = $true + $empty_line | Out-String + + If ($number_of_installed_javas -gt 1) { + Write-Warning "More than one instance of Java seems to be installed on the system." + } ElseIf ($auto_updater_is_installed -eq $true) { + Write-Warning "Java Auto Updater seems to be installed on the system." + } Else { + $continue = $true + } # Else + + # Check if the PowerShell session is elevated (has been run as an administrator) and try to remove the duplicate Java if enough permissions are deemed to be available + If ($is_elevated -eq $true) { + + # Stop the Java-related processes + Stop-Process -ProcessName '*messenger*' -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName 'FlashPlayer*' -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName 'plugin-container*' -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName 'chrome*' -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName 'opera*' -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName 'firefox' -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName 'palemoon' -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName 'iexplore' -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName 'iexplorer' -ErrorAction SilentlyContinue -Force + + Stop-Process -ProcessName java -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName javaw -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName javaws -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName JP2Launcher -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName jqs -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName jucheck -ErrorAction SilentlyContinue -Force + Stop-Process -ProcessName jusched -ErrorAction SilentlyContinue -Force + + Start-Sleep -s 2 + + + + + # The Duplicate Java Uninstallation Protocol + # If ($installed_java_version_alternative_legacy_format -ne $null) { + If ($original_javases -ne $null) { + + $timestamp_multi = Get-Date -Format HH:mm:ss + $multi_text_1 = "$timestamp_multi - Initiating the Duplicate Java Uninstallation Protocol..." + $multi_text_2 = "Trying to keep the latest installed version of Java (in both 32-bit and 64-bit flavors) and removing the earlier Java version (including the Java Auto Updater)." + $multi_text_3 = "Trying to keep the latest installed version of Java (in both 32-bit and 64-bit flavors) and removing the earlier Java versions (including the Java Auto Updater)." + $empty_line | Out-String + Write-Output $multi_text_1 + $empty_line | Out-String + If ($number_of_installed_javas -eq 2) { + Write-Output $multi_text_2 + } Else { + Write-Output $multi_text_3 + } # Else + + + + + # Uninstall the Java Auto Updater + $the_java_auto_updater_exists = Check-InstalledSoftware "Java Auto Updater" + + If ($the_java_auto_updater_exists) { + + $argument_the_java_auto_updater = "/uninstall $($the_java_auto_updater_exists.PSChildName) /qn /norestart" + Start-Process -FilePath $msiexec -ArgumentList "$argument_the_java_auto_updater" -Wait + Start-Process -FilePath $msiexec -ArgumentList "/uninstall {4A03706F-666A-4037-7777-5F2748764D10} /qn /norestart" -Wait + + If ((Check-InstalledSoftware "Java Auto Updater").DisplayName -eq $null) { + $the_uninstall_text = "$($the_java_auto_updater_exists.DisplayName) is uninstalled." + $empty_line | Out-String + Write-Output $the_uninstall_text + } Else { + $continue = $true + } # Else If (Check-InstalledSoftware) + + } Else { + $continue = $true + } # Else If ($the_java_auto_updater_exists) + + + + + # Find out the most recent Java out of all the installed Javas + $highest_java_main_version = $original_javases | Select-Object -ExpandProperty Major_Version | Sort-Object -Descending | Select-Object -First 1 + $highest_java_update_number = $original_javases | Where-Object Major_Version -eq $highest_java_main_version | Select-Object -ExpandProperty Update_Number | Sort-Object -Descending | Select-Object -First 1 + $highest_java_version = $original_javases | Where-Object Major_Version -eq $highest_java_main_version | Where-Object Update_Number -eq $highest_java_update_number | Select-Object -ExpandProperty Version + + ForEach ($java in $original_javases) { + + If ($java.Version -ne $highest_java_version) { + + # Uninstall any remaining duplicate and old instances of Java + # 8.0.1110.14 + # Source: http://docs.oracle.com/javacomponents/msi-jre8/install-guide/installing_jre_msi.htm#msi_system_requirements + <# + Uninstalling the JRE with the Command Line + + 32-bit JRE: msiexec /x {26A24AE4-039D-4CA4-87B4-2F83218025F0} + 64-bit JRE: msiexec /x {26A24AE4-039D-4CA4-87B4-2F86418025F0} + + The value in curly braces is the MSI product code for the JRE about to be uninstalled. The latter part, 18025, correlates to the JRE version 1.8.0_25. + #> + Start-Sleep -s 2 + Write-Verbose "$($java.Name) version $($java.Version) installed on $($java.Install_Date) is uninstalling..." + + $duplicate_uninstall += $obj_uninstall = New-Object -TypeName PSCustomObject -Property @{ + 'Computer' = $computer + 'Name' = $java.Name + 'Version' = $java.Version + 'IdentifyingNumber' = $java.ID + 'InstallDate' = $java.Install_Date + 'InstallLocation' = $java.Install_Location + } # New-Object + $duplicate_uninstall.PSObject.TypeNames.Insert(0,"Uninstalled Old Duplicate Java Versions") + + $argument_java_uninstall = "/uninstall $($java.ID) /qn /norestart" + Start-Process -FilePath $msiexec -ArgumentList "$argument_java_uninstall" -Wait + $uninstall_text = "$($java.Name) is uninstalled." + $empty_line | Out-String + Write-Output $uninstall_text + + } Else { + + # This instance "slot" is altering the the latest installed Java version + # Do not touch the latest installed Java version = $true + $continue = $true + + } # Else + } # ForEach ($java) + + + $timestamp_protocol = Get-Date -Format HH:mm:ss + $protocol_text = "$timestamp_protocol - The Duplicate Java Uninstallation Protocol completed." + $empty_line | Out-String + Write-Output $protocol_text + + } Else { + $continue = $true + } # Else (The Duplicate Java Uninstallation Protocol) + + + + + # Check the Status of Java after The Duplicate Java Uninstallation Protocol + $java_is_installed = $false + $32_bit_java_is_installed = $false + $64_bit_java_is_installed = $false + $auto_updater_is_installed = $false + + $reduced_javas = Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { ($_.DisplayName -like "*Java*" -or $_.DisplayName -like "*J2SE Runtime*") -and ($_.Publisher -like "Oracle*" -or $_.Publisher -like "Sun*" )} + + # Number of Installed Javas + If ($reduced_javas -eq $null) { + $number_of_installed_javas = 0 + } Else { + $number_of_installed_javas = ($reduced_javas | Measure-Object).Count + } # Else + + # Is Java Installed? + If ($reduced_javas -ne $null) { + $java_is_installed = $true + } Else { + $continue = $true + } # Else + + # 32-bit Java + If ((Check-JavaID $regex_32_a -ne $null) -or (Check-JavaID $regex_32_b -ne $null) -or (Check-JavaID $regex_32_c -ne $null) -or (Check-JavaID $regex_32_d -ne $null)) { + $32_bit_java_is_installed = $true + } Else { + $continue = $true + } # Else + + # 64-bit Java + If ((Check-JavaID $regex_64_a -ne $null) -or (Check-JavaID $regex_64_b -ne $null)) { + $64_bit_java_is_installed = $true + } Else { + $continue = $true + } # Else + + # Java Auto Updater + If (Check-InstalledSoftware "Java Auto Updater") { $auto_updater_is_installed = $true } Else { $continue = $true } + + } Else { + $continue = $true + } # Else (If "Administrator" -eq $true) +} Else { + $continue = $true +} # Else (Step 6) + + + + +# Step 7 +# Enumerate the existing installed Javas +$registry_paths_selection = Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { ($_.DisplayName -like "*Java*" -or $_.DisplayName -like "*J2SE Runtime*") -and ($_.Publisher -like "Oracle*" -or $_.Publisher -like "Sun*" )} + +If ($registry_paths_selection -ne $null) { + + ForEach ($item in $registry_paths_selection) { + + # Custom Uninstall Strings + $arguments = "/uninstall $($item.PSChildName) /qn /norestart" + $custom_uninstall_string = "$msiexec /uninstall $($item.PSChildName) /qn" + $powershell_uninstall_string = [string]"Start-Process -FilePath $msiexec -ArgumentList " + $quote + $arguments + $unquote + " -Wait" + $product_version_enum = ((Get-ItemProperty -Path "$($item.InstallLocation)\bin\java.exe" -ErrorAction SilentlyContinue -Name VersionInfo).VersionInfo).ProductVersion + $regex_build_enumeration = If ($product_version_enum -ne $null) { $product_version_enum -match "(?\d+)\.(?\d+)\.(?\d+)\.(?\d+)" } Else { $continue = $true } + + + $java_enumeration += $obj_enumeration = New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $item.DisplayName.replace("(TM)","") + 'Version' = $item.DisplayVersion + 'Main Version' = [int32]$item.VersionMajor + 'Build' = If ($Matches.C4 -ne $null) { [string]"b" + $Matches.C4 } Else { $continue = $true } + 'Install Date' = $item.InstallDate + 'Install Location' = $item.InstallLocation + 'Publisher' = $item.Publisher + 'Computer' = $computer + 'Identifying Number' = $item.PSChildName + 'Standard Uninstall String' = $item.UninstallString + 'Custom Uninstall String' = $custom_uninstall_string + 'PowerShell Uninstall String' = $powershell_uninstall_string + 'Type' = If (($item.PSChildName -match $regex_32_a) -or ($item.PSChildName -match $regex_32_b) -or ($item.PSChildName -match $regex_32_c) -or ($item.PSChildName -match $regex_32_d)) { + "32-bit" + } ElseIf (($item.PSChildName -match $regex_64_a) -or ($item.PSChildName -match $regex_64_b)) { + "64-bit" + } Else { + $continue = $true + } # Else + 'Update Number' = If (($item.PSChildName -match $regex_32_a) -or ($item.PSChildName -match $regex_32_b) -or ($item.PSChildName -match $regex_32_c) -or ($item.PSChildName -match $regex_32_d)) { + [int32]$item.DisplayName.Split()[-1] + } ElseIf (($item.PSChildName -match $regex_64_a) -or ($item.PSChildName -match $regex_64_b)) { + [int32]$item.DisplayName.Split()[-2] + } Else { + $continue = $true + } # Else + + } # New-Object + } # ForEach ($item) + + + # Display the Java Version Enumeration in console + If ($java_enumeration -ne $null) { + $java_enumeration.PSObject.TypeNames.Insert(0,"Java Version Enumeration") + $java_enumeration_selection = $java_enumeration | Select-Object 'Name','Main Version','Update Number','Build','Version','Install Date','Type','Install Location','Publisher','Computer','Identifying Number','PowerShell Uninstall String' + $empty_line | Out-String + $header_java_enumeration = "Enumeration of Java Versions Found on the System" + $coline_java_enumeration = "------------------------------------------------" + Write-Output $header_java_enumeration + $coline_java_enumeration | Out-String + Write-Output $java_enumeration_selection + } Else { + $continue = $true + } # Else + +} Else { + $continue = $true +} # Else (Step 7) + + + +# Step 8 +# Check if the computer is connected to the Internet # Credit: ps1: "Test Internet connection" +If (([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet) -eq $false) { + $empty_line | Out-String + Return "The Internet connection doesn't seem to be working. Exiting without checking the latest Java version numbers or without updating Java (at Step 8)." +} Else { + Write-Verbose 'Checking the most recent Java version numbers from the Java/Oracle website...' +} # Else + + + + +# Step 9 +# Check the baseline Java version number by connecting to the Java/Oracle website (Page 1) and write it to a file (The Baseline) + +$baseline_file = "$path\java_baseline.csv" + + try + { + $download_baseline = New-Object System.Net.WebClient + $download_baseline.DownloadFile($baseline_url, $baseline_file) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $baseline_url" + If (([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'{DCB00C01-570F-4A9B-8D69-199FDBA5723B}')).IsConnectedToInternet) -eq $true) { + $page_exception_text = "Please consider running this script again. Sometimes this Oracle page just isn't queryable for no apparent reason. The success rate 'in the second go' usually seems to be a bit higher." + $empty_line | Out-String + Write-Output $page_exception_text + } Else { + $continue = $true + } # Else + $empty_line | Out-String + Return "Exiting without checking the latest Java version numbers or without updating Java (at Step 9)." + } + +Start-Sleep -Seconds 3 + +# Selects the second result from java_baseline.csv +# https://github.com/auberginehill/java-update/issues/1 +$source = Get-Content $baseline_file | Select-Object -Skip 1 | Select-Object -First 1 +$regex = $source -match "(?\d+).(?\d+).(?\d+)_(?\d+)" + +# Most Recent Java Baseline Version (x.y.z) - Old Name: +$current_baseline = $source.split("_")[0] + +# Most Recent Java Update Number (nnn): +# $current_update_number = $Matches.P4 +$current_update_number = [int32]$source.split("_")[1] + +# Most Recent Java Main Version (y): +$current_main_version = [int32]$Matches.P2 + +# Most Recent Java Version (Almost Full, with an underscore: x.y.z_nnn) - Legacy Format: +# 1.8.0_111 +$current_version_full = $source + + + + +# Step 10 +# Check the most recent Java version numbers by connecting to the Java/Oracle website (Page 2, The Java Update Chart / Map) +# Source: http://superuser.com/questions/443686/silent-java-update-check +# http://javadl-esd.sun.com/update/1.8.0/map-m-1.8.0.xml +# http://javadl-esd.sun.com/update/1.8.0/map-1.8.0.xml +$update_map_url = "http://javadl-esd.sun.com/update/$current_baseline/map-m-$current_baseline.xml" + + try + { + $java_update_map = New-Object XML + $java_update_map.Load($update_map_url) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $update_map_url" + $empty_line | Out-String + Return "Exiting without checking the latest Java version numbers or without updating Java (at Step 10)." + } + +# Update Chart: +$update_chart = $java_update_map.SelectNodes("/java-update-map/mapping") +$update_chart | Export-Csv $path\java_update_chart.csv -Delimiter ';' -NoTypeInformation -Encoding UTF8 + + + + +# Step 11 +# Check the Info on the most recent Java version Home Page (XML) by connecting to the Java/Oracle website (Page 3, The Home Page) +# https://javadl-esd-secure.oracle.com/update/1.8.0/au-descriptor-1.8.0_111-b14.xml +$most_recent_xml_home_page = ($java_update_map.SelectNodes("/java-update-map/mapping") | Select-Object -First 1).url + + try + { + $xml_info = New-Object XML + $xml_info.Load($most_recent_xml_home_page) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $most_recent_xml_home_page" + $empty_line | Out-String + Return "Exiting without checking the latest Java version numbers or without updating Java (at Step 11)." + } + +# Further Info URL: +$further_info_url = $xml_info.SelectNodes("/java-update/information") | Select-Object -First 1 | Select-Object -ExpandProperty moreinfo + +# Description: +$description = $xml_info.SelectNodes("/java-update/information") | Select-Object -First 1 | Select-Object -ExpandProperty descriptionfrom8 + +# Current Version (Full, with an underscore and a dash: x.y.z_nnn-abc): +# 1.8.0_111-b14 +$current_version_build = ($xml_info.SelectNodes("/java-update/information") | Select-Object -First 1 | Select-Object -ExpandProperty version)[-1] + +# Most Recent Java Version +$most_recent_java_version = [string]'Java ' + $current_main_version + ' Update ' + $current_update_number + +# Most Recent Build +$current_build_number = $current_version_build.Split("-")[-1] + +# Download URL: +# http://javadl.oracle.com/webapps/download/GetFile/1.8.0_111-b14/windows-i586/jre-8u111-windows-au.exe +# Source: http://stackoverflow.com/questions/27175137/powershellv2-remove-last-x-characters-from-a-string#32608908 +$download_url = $xml_info.SelectNodes("/java-update/information") | Select-Object -First 1 | Select-Object -ExpandProperty url +$powershell_version = $PSVersionTable.PSVersion + + If (($download_url.EndsWith("/")) -eq $true) { $download_url = $download_url -replace ".{1}$" } Else { $continue = $true } + + If (($powershell_version.Major -ge 5) -and ($powershell_version.Minor -ge 1)) { + $root_url = (Split-Path $download_url -Parent).Replace("\", "/") + } Else { + $filename = $download_url.Split("/")[-1] + $root_url = $download_url.Replace("/$filename", "") + } # Else (If $PSVersionTable.PSVersion) + +# Custom Download URL: +$custom_download_url = [string]$root_url + "/xpiinstall.exe" + +# Full 32-bit Download URL: +$full_32_download_url = [string]$root_url + "/jre-" + $current_main_version + "u" + $current_update_number + "-windows-i586.exe" + +# Full 64-bit Download URL: +$full_64_download_url = [string]$root_url + "/jre-" + $current_main_version + "u" + $current_update_number + "-windows-x64.exe" + + $obj_most_recent += New-Object -TypeName PSCustomObject -Property @{ + 'Most Recent Version' = $most_recent_java_version + 'Most Recent Java Main Version' = [int32]$current_main_version + 'Most Recent Java Update Number' = [int32]$current_update_number + 'Most Recent Build' = $current_build_number + 'Most Recent Build (Legacy Name, Full)' = $current_version_build + 'Most Recent Version (Legacy Name)' = $current_version_full + 'Description' = $description + 'Further Info' = $further_info_url + 'Java Uninstall Tool URL' = $uninstaller_tool_url + 'Download URL' = $download_url + 'Custom Download URL' = $custom_download_url + 'Full 32-bit Download URL' = $full_32_download_url + 'Full 64-bit Download URL' = $full_64_download_url + } # New-Object + $obj_most_recent.PSObject.TypeNames.Insert(0,"Most Recent non-beta Java Version Available") + $obj_most_recent_selection = $obj_most_recent | Select-Object 'Most Recent Version','Most Recent Java Main Version','Most Recent Java Update Number','Most Recent Build','Most Recent Version (Legacy Name)','Description','Further Info','Java Uninstall Tool URL','Download URL','Custom Download URL','Full 32-bit Download URL','Full 64-bit Download URL' + + + # Display the most recent Java version numbers in console + $empty_line | Out-String + $header_most_recent = "Most Recent non-beta Java Version Available" + $coline_most_recent = "-------------------------------------------" + Write-Output $header_most_recent + $coline_most_recent | Out-String + Write-Output $obj_most_recent_selection + + + + +# Step 12 +# Try to determine which Java versions, if any, are outdated and need to be updated. +$downloading_java_is_required = $false +$downloading_java_32_is_required = $false +$downloading_java_64_is_required = $false + +If ($java_is_installed -eq $true) { + + $most_recent_32_bit_java_already_exists = Check-InstalledSoftware "Java $current_main_version Update $current_update_number" + $most_recent_64_bit_java_already_exists = Check-InstalledSoftware "Java $current_main_version Update $current_update_number (64-bit)" + $java_auto_updater_exists = Check-InstalledSoftware "Java Auto Updater" + $all_32_bit_javas = $java_enumeration | Where-Object { $_.Type -eq "32-bit" } + $number_of_32_bit_javas = ($all_32_bit_javas | Measure-Object).Count + $all_64_bit_javas = $java_enumeration | Where-Object { $_.Type -eq "64-bit" } + $number_of_64_bit_javas = ($all_64_bit_javas | Measure-Object).Count + + # 32-bit + If ($32_bit_java_is_installed -eq $false) { + $continue = $true + + } ElseIf (($32_bit_java_is_installed -eq $true) -and ($most_recent_32_bit_java_already_exists) -and ($number_of_32_bit_javas -eq 1)) { + + # $downloading_java_32_is_required = $false + $argument_32 = "/uninstall $($most_recent_32_bit_java_already_exists.PSChildName) /qn /norestart" + $custom_32_uninstall_string = "$msiexec /uninstall $($most_recent_32_bit_java_already_exists.PSChildName) /qn" + $powershell_32_uninstall_string = [string]"Start-Process -FilePath $msiexec -ArgumentList " + $quote + $argument_32 + $unquote + " -Wait" + + + $obj_32_installed_current += New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $most_recent_32_bit_java_already_exists.DisplayName.replace("(TM)","") + 'Version' = $most_recent_32_bit_java_already_exists.DisplayVersion + 'Install_Date' = $most_recent_32_bit_java_already_exists.InstallDate + 'Install_Location' = $most_recent_32_bit_java_already_exists.InstallLocation + 'Publisher' = $most_recent_32_bit_java_already_exists.Publisher + 'Computer' = $computer + 'Identifying_Number' = $most_recent_32_bit_java_already_exists.PSChildName + 'Standard_Uninstall_String' = $most_recent_32_bit_java_already_exists.UninstallString + 'Custom_Uninstall_String' = $custom_32_uninstall_string + 'PowerShell_Uninstall_String' = $powershell_32_uninstall_string + + } # New-Object + $obj_32_installed_current.PSObject.TypeNames.Insert(0,"Existing Current Java 32-bit") + + $empty_line | Out-String + Write-Output "Currently (until the next Java version is released) the 32-bit $($obj_32_installed_current.Name) installed on $($obj_32_installed_current.Install_Date) doesn't need any further maintenance or care." + + } Else { + $downloading_java_32_is_required = $true + $downloading_java_is_required = $true + + ForEach ($32_bit_java in $all_32_bit_javas) { + $install_date_32 = $32_bit_java | Select-Object -ExpandProperty "Install Date" + + If ($32_bit_java.Name -eq $most_recent_java_version) { + $empty_line | Out-String + Write-Output "Currently (until the next Java version is released) the 32-bit $($32_bit_java.Name) installed on $install_date_32 doesn't need any further maintenance or care." + } Else { + $empty_line | Out-String + Write-Warning "$($32_bit_java.Name) seems to be outdated." + $empty_line | Out-String + Write-Output "The most recent non-beta Java version is $most_recent_java_version. The installed 32-bit Java version $($32_bit_java.Version) needs to be updated." + } # Else + + + } # ForEach + } # Else + + + # 64-bit + If ($64_bit_java_is_installed -eq $false) { + $continue = $true + + } ElseIf (($64_bit_java_is_installed -eq $true) -and ($most_recent_64_bit_java_already_exists) -and ($number_of_64_bit_javas -eq 1)) { + + # $downloading_java_64_is_required = $false + $argument_64 = "/uninstall $($most_recent_64_bit_java_already_exists.PSChildName) /qn /norestart" + $custom_64_uninstall_string = "$msiexec /uninstall $($most_recent_64_bit_java_already_exists.PSChildName) /qn" + $powershell_64_uninstall_string = [string]"Start-Process -FilePath $msiexec -ArgumentList " + $quote + $argument_64 + $unquote + " -Wait" + + + $obj_64_installed_current += New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $most_recent_64_bit_java_already_exists.DisplayName.replace("(TM)","") + 'Version' = $most_recent_64_bit_java_already_exists.DisplayVersion + 'Install_Date' = $most_recent_64_bit_java_already_exists.InstallDate + 'Install_Location' = $most_recent_64_bit_java_already_exists.InstallLocation + 'Publisher' = $most_recent_64_bit_java_already_exists.Publisher + 'Computer' = $computer + 'Identifying_Number' = $most_recent_64_bit_java_already_exists.PSChildName + 'Standard_Uninstall_String' = $most_recent_64_bit_java_already_exists.UninstallString + 'Custom_Uninstall_String' = $custom_64_uninstall_string + 'PowerShell_Uninstall_String' = $powershell_64_uninstall_string + + } # New-Object + $obj_64_installed_current.PSObject.TypeNames.Insert(0,"Existing Current Java 64-bit") + + $empty_line | Out-String + Write-Output "Currently (until the next Java version is released) the 64-bit $($obj_64_installed_current.Name) installed on $($obj_64_installed_current.Install_Date) doesn't need any further maintenance or care." + + } Else { + $downloading_java_64_is_required = $true + $downloading_java_is_required = $true + + ForEach ($64_bit_java in $all_64_bit_javas) { + $install_date_64 = $64_bit_java | Select-Object -ExpandProperty "Install Date" + + If ($64_bit_java.Name -match $most_recent_java_version) { + $empty_line | Out-String + Write-Output "Currently (until the next Java version is released) the 64-bit $($64_bit_java.Name) installed on $install_date_64 doesn't need any further maintenance or care." + } Else { + $empty_line | Out-String + Write-Warning "$($64_bit_java.Name) seems to be outdated." + $empty_line | Out-String + Write-Output "The most recent non-beta Java version is $most_recent_java_version. The installed 64-bit Java version $($64_bit_java.Version) needs to be updated." + } # Else + + } # ForEach + } # Else + + + # Java Auto Updater + If ($java_auto_updater_exists) { + $argument_java_auto_updater = "/uninstall $($java_auto_updater_exists.PSChildName) /qn /norestart" + $powershell_java_auto_updater_uninstall_string = [string]"Start-Process -FilePath $msiexec -ArgumentList " + $quote + $argument_java_auto_updater + $unquote + " -Wait" + $empty_line | Out-String + Write-Output "The Java Auto Updater seems to be installed on the system." + } Else { + $continue = $true + } # Else + +} Else { + $continue = $true +} # Else + + + + +If ($java_is_installed -eq $true) { + + + $obj_maintenance += New-Object -TypeName PSCustomObject -Property @{ + 'Open the java_config.txt file' = [string]'Invoke-Item ' + $quote + $path + '\java_config.txt' + $unquote + 'Open the configuration file location' = If ($app_path -ne $null) { [string]'Invoke-Item ' + $quote + $app_path + $unquote } Else { [string]'-' } + 'Uninstall the 32-bit Java' = If ($32_bit_java_is_installed -eq $true) { $original_java_32_bit_powershell_uninstall_string } Else { [string]'[not installed]' } + 'Uninstall the 64-bit Java' = If ($64_bit_java_is_installed -eq $true) { $original_java_64_bit_powershell_uninstall_string } Else { [string]'[not installed]' } + 'Uninstall the Java Auto Updater' = If ($java_auto_updater_exists -ne $null) { $powershell_java_auto_updater_uninstall_string } Else { [string]'[not installed]' } + } # New-Object + $obj_maintenance.PSObject.TypeNames.Insert(0,"Maintenance") + $obj_maintenance_selection = $obj_maintenance | Select-Object 'Open the java_config.txt file','Open the configuration file location','Uninstall the 32-bit Java','Uninstall the 64-bit Java','Uninstall the Java Auto Updater' + + + # Display the Maintenance table in console + $empty_line | Out-String + $header_maintenance = "Maintenance" + $coline_maintenance = "-----------" + Write-Output $header_maintenance + $coline_maintenance | Out-String + Write-Output $obj_maintenance_selection + + + + + $obj_downloading += New-Object -TypeName PSCustomObject -Property @{ + '32-bit Java' = If ($32_bit_java_is_installed -eq $true) { $downloading_java_32_is_required } Else { [string]'-' } + '64-bit Java' = If ($64_bit_java_is_installed -eq $true) { $downloading_java_64_is_required } Else { [string]'-' } + } # New-Object + $obj_downloading.PSObject.TypeNames.Insert(0,"Maintenance Is Required for These Java Versions") + $obj_downloading_selection = $obj_downloading | Select-Object '32-bit Java','64-bit Java' + + + # Display in console which installers for Java need to be downloaded + $empty_line | Out-String + $header_downloading = "Maintenance Is Required for These Java Versions" + $coline_downloading = "-----------------------------------------------" + Write-Output $header_downloading + $coline_downloading | Out-String + Write-Output $obj_downloading_selection + $empty_line | Out-String + +} Else { + $continue = $true +} # Else + + + + +# Step 13 +# Determine if there is a real need to carry on with the rest of the script. +If ($java_is_installed -eq $true) { + If ($downloading_java_is_required -eq $false -and $auto_updater_is_installed -eq $false) { + Return "The installed Java seems to be OK." + } ElseIf ($downloading_java_is_required -eq $false -and $auto_updater_is_installed -eq $true) { + Return "The installed Java seems to be OK. The Java Auto Updater seems to be installed on the system, too." + } Else { + $continue = $true + } # Else +} ElseIf (Check-InstalledSoftware "Java Auto Updater" -ne $null) { + $empty_line | Out-String + Write-Warning "The Java Auto Updater seems to be the only Java installed on the system." + $empty_line | Out-String + Return "This script didn't detect that any 'real' Java would have been installed on the system. The Java Auto Updater, however, does seem to be installed." +} Else { + Write-Warning "No Java seems to be installed on the system." + $empty_line | Out-String + $no_java_text_1 = "This script didn't detect that any Java would have been installed." + $no_java_text_2 = "Please consider installing Java by visiting https://www.java.com/en/download/" + $no_java_text_3 = "For full installation files please, for example, see the page" + $no_java_text_4 = "https://www.java.com/en/download/manual.jsp or" + $no_java_text_5 = "http://www.oracle.com/technetwork/java/javase/downloads/index.html" + $no_java_text_6 = "and for the Java uninstaller tool, please visit" + $no_java_text_7 = "https://www.java.com/en/download/faq/uninstaller_toolfaq.xml" + Write-Output $no_java_text_1 + Write-Output $no_java_text_2 + Write-Output $no_java_text_3 + Write-Output $no_java_text_4 + Write-Output $no_java_text_5 + Write-Output $no_java_text_6 + Write-Output $no_java_text_7 + + # Offer the option to install a specific version of Java, if no Java is detected and the script is run in an elevated window + # Source: Microsoft TechNet: "Adding a Simple Menu to a Windows PowerShell Script": https://technet.microsoft.com/en-us/library/ff730939.aspx + # Credit: lamaar75: "Creating a Menu": http://powershell.com/cs/forums/t/9685.aspx + If ($is_elevated -eq $true) { + $empty_line | Out-String + Write-Verbose "Welcome to the Admin Corner." -verbose + $title_1 = "Install Java" + $message_1 = "Would you like to install the Java for Windows with this script?" + + $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "Yes: downloads a full offline Java installer (either 32- or 64-bit according to the system) and installs Java." + $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "No: exits from this script (similar to Ctrl + C)." + $exit = New-Object System.Management.Automation.Host.ChoiceDescription "&Exit", "Exit: exits from this script (similar to Ctrl + C)." + $abort = New-Object System.Management.Automation.Host.ChoiceDescription "A&bort", "Abort: exits from this script (similar to Ctrl + C)." + $cancel = New-Object System.Management.Automation.Host.ChoiceDescription "&Cancel", "Cancel: exits from this script (similar to Ctrl + C)." + + $options_1 = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no, $exit, $abort, $cancel) + $result_1 = $host.ui.PromptForChoice($title_1, $message_1, $options_1, 1) + + switch ($result_1) + { + 0 { + "Yes. Trying to download a full offline Java installer (either 32- or 64-bit according to the system) and install Java."; + $admin_corner = $true + $java_is_installed = $true + $installed_java_version_text_format = "[Nonexistent]" + $downloading_java_is_required = $true + $continue = $true + } + 1 { + "No. Exiting from Java-Update script."; + Exit + } + 2 { + "Exit. Exiting from Java-Update script."; + Exit + } + 3 { + "Abort. Exiting from Java-Update script."; + Exit + } + 4 { + "Cancel. Exiting from Java-Update script."; + Exit + } # 4 + } # switch + + } Else { + Exit + } # Else (Admin Corner) +} # Else (No Java) + + + + +# Step 14 +# Check if the PowerShell session is elevated (has been run as an administrator) +If ($is_elevated -eq $false) { + Write-Warning "It seems that this script is run in a 'normal' PowerShell window." + $empty_line | Out-String + Write-Verbose "Please consider running this script in an elevated (administrator-level) PowerShell window." -verbose + $empty_line | Out-String + $admin_text = "For performing system altering procedures, such as uninstalling Java or installing Java the elevated rights are mandatory. An elevated PowerShell session can, for example, be initiated by starting PowerShell with the 'run as an administrator' option." + Write-Output $admin_text + $empty_line | Out-String + # Write-Verbose "Even though it could also be possible to write a self elevating PowerShell script (https://blogs.msdn.microsoft.com/virtual_pc_guy/2010/09/23/a-self-elevating-powershell-script/) or run commands elevated in PowerShell (http://powershell.com/cs/blogs/tips/archive/2014/03/19/running-commands-elevated-in-powershell.aspx) with the UAC prompts, the new UAC pop-up window may come as a surprise to the end-user, who isn't neccesarily aware that this script needs the elevated rights to complete the intended actions." + Return "Exiting without updating (at Step 14)." +} Else { + $continue = $true +} # Else + + + + +# Step 15 +# Initiate the update process +$empty_line | Out-String +$timestamp = Get-Date -Format HH:mm:ss +$update_text = "$timestamp - Initiating the Java Update Protocol..." +Write-Output $update_text + +# Determine the current directory # Credit: JaredPar and Matthew Pirocchi "What's the best way to determine the location of the current PowerShell script?" +$script_path = Split-Path -parent $MyInvocation.MyCommand.Definition + +# "Manual" progress bar variables +$activity = "Updating Java" +$status = "Status" +$id = 1 # For using more than one progress bar +$total_steps = 19 # Total number of the steps or tasks, which will increment the progress bar +$task_number = 0.2 # An increasing numerical value, which is set at the beginning of each of the steps that increments the progress bar (and the value should be less or equal to total_steps). In essence, this is the "progress" of the progress bar. +$task = "Setting Initial Variables" # A description of the current operation, which is set at the beginning of each of the steps that increments the progress bar. + +# Start the progress bar +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + # Specify [Esc] and [q] as the Cancel-key # Credit: Jeff: "Powershell show elapsed time" + If ($Host.UI.RawUI.KeyAvailable -and ("q" -eq $Host.UI.RawUI.ReadKey("IncludeKeyUp,NoEcho").Character)) { + Write-Host " ...Stopping the Java Update Protocol..."; + Break; + } ElseIf ($Host.UI.RawUI.KeyAvailable -and (([char]27) -eq $Host.UI.RawUI.ReadKey("IncludeKeyUp,NoEcho").Character)) { + Write-Host " ...Stopping the Java Update Protocol..."; Break; + } Else { + $continue = $true + } # Else + + + + +# Step 16 +# Download the latest installation file for Java for Windows +# Source: http://docs.oracle.com/javacomponents/msi-jre8/install-guide/installing_jre_msi.htm#msi_install_instructions +<# + + # Download URL (clickable) + https://www.java.com/en/download/manual.jsp + http://www.oracle.com/technetwork/java/javase/downloads/index.html + + # 32-bit Java for Windows + Windows x86 Offline (32-bit) + Please see the java_update_chart.csv and open the online XML-file URL. The online XML-file contains one instance of . + Examples ("[" and "]" are omitted): + XML: https://javadl-esd-secure.oracle.com/update/1.8.0/e9e7ea248e2c4826b92b3f075a80e441/au-descriptor-1.8.0_121-b13.xml + Download: http://javadl.oracle.com/webapps/download/GetFile/1.8.0_121-b13/e9e7ea248e2c4826b92b3f075a80e441/windows-i586/jre-[main_version]u[update_number]-windows-i586.exe + Note: In order to download products from Oracle Technology Network you must agree to the OTN license terms. + + + # 64-bit Java for Windows + Windows x64 Offline (64-bit) + Please see the java_update_chart.csv and open the online XML-file URL. The online XML-file contains one instance of . + Examples ("[" and "]" are omitted): + XML: https://javadl-esd-secure.oracle.com/update/1.8.0/e9e7ea248e2c4826b92b3f075a80e441/au-descriptor-1.8.0_121-b13.xml + Download: http://javadl.oracle.com/webapps/download/GetFile/1.8.0_121-b13/e9e7ea248e2c4826b92b3f075a80e441/windows-i586/jre-[main_version]u[update_number]-windows-x64.exe + Note: In order to download products from Oracle Technology Network you must agree to the OTN license terms. + +#> +<# + + The file name of the installer has one of the following formats: + + 32-bit systems: jre-[version]-windows-i586.msi + 64-bit systems: jre-[version]-windows-x64.msi + + Substitute the appropriate version number for [version] in a format such as [main_version]u[update_number] + For example, the installer for update 1.8.0_40 would be jre-8u40-windows-i586.msi. + +#> +<# + + # Download Old Java + + # 32-bit: + # http://download.oracle.com/otn/java/jdk/6u45-b06/jre-6u45-windows-i586.exe + # http://javadl.sun.com/webapps/download/GetFile/1.6.0_45-b06/windows-i586/jre-6u45-windows-i586-iftw.exe + # http://javadl.sun.com/webapps/download/GetFile/1.6.0_45-b06/windows-i586/jre-6u45-windows-i586.exe + # http://javadl.sun.com/webapps/download/GetFile/1.7.0_21-b11/windows-i586/jre-7u21-windows-i586.exe + # http://javadl.sun.com/webapps/download/GetFile/1.8.0_91-b15/windows-i586/jre-8u91-windows-i586.exe + # http://javadl.sun.com/webapps/download/GetFile/1.8.0_111-b14/windows-i586/jre-8u111-windows-i586.exe + # http://javadl.oracle.com/webapps/download/GetFile/1.8.0_121-b13/e9e7ea248e2c4826b92b3f075a80e441/windows-i586/jre-8u121-windows-i586.exe + + # 64-bit: + # http://download.oracle.com/otn/java/jdk/7u80-b15/jre-7u80-windows-x64.exe + # http://javadl.sun.com/webapps/download/GetFile/1.8.0_91-b15/windows-i586/jre-8u91-windows-x64.exe + # http://javadl.sun.com/webapps/download/GetFile/1.8.0_111-b14/windows-i586/jre-8u111-windows-x64.exe + # http://javadl.oracle.com/webapps/download/GetFile/1.8.0_121-b13/e9e7ea248e2c4826b92b3f075a80e441/windows-i586/jre-8u121-windows-x64.exe + +#> + +If (($java_is_installed -eq $true) -and ($downloading_java_is_required -eq $true)) { + + $task_number = 2 + $task = "Downloading a full offline Java installer..." + Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + If ($bit_number -eq "32") { + $actual_download_url = $full_32_download_url + } ElseIf ($bit_number -eq "64") { + $actual_download_url = $full_64_download_url + } Else { + $continue = $true + } # Else + + $download_file = $actual_download_url.split("/")[-1] + $java_save_location = "$path\$download_file" + $java_is_downloaded = $false + + # Purge existing old Java installation files + If ((Test-Path $java_save_location) -eq $true) { + Write-Verbose "Deleting $java_save_location" + Remove-Item -Path "$java_save_location" + } Else { + $continue = $true + } # Else + + try + { + $download_java = New-Object System.Net.WebClient + $download_java.DownloadFile($actual_download_url, $java_save_location) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $actual_download_url" + $empty_line | Out-String + Return "Exiting without installing a new Java version (at Step 16)." + } + + Start-Sleep -s 2 + + If ((Test-Path $java_save_location) -eq $true) { + $java_is_downloaded = $true + } Else { + $java_is_downloaded = $false + } # Else + +} Else { + $continue = $true +} # Else + + + + +# Step 17 +# Download the Java Uninstaller Tool +$task_number = 5 +$task = "Downloading the Java Uninstaller Tool from Oracle/Sun..." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + +$uninstaller_file = $uninstaller_tool_url.split("/")[-1] +$uninstaller_save_location = "$path\$uninstaller_file" +$uninstaller_is_downloaded = $false + +# Purge existing old uninstaller files +If ((Test-Path $uninstaller_save_location) -eq $true) { + Write-Verbose "Deleting $uninstaller_save_location" + Remove-Item -Path "$uninstaller_save_location" +} Else { + $continue = $true +} # Else + + try + { + $download_uninstaller = New-Object System.Net.WebClient + $download_uninstaller.DownloadFile($uninstaller_tool_url, $uninstaller_save_location) + } + catch [System.Net.WebException] + { + Write-Warning "Failed to access $uninstaller_tool_url" + $empty_line | Out-String + Return "Exiting at Step 17 without updating Java." + } + +Start-Sleep -s 2 + +If ((Test-Path $uninstaller_save_location) -eq $true) { + $uninstaller_is_downloaded = $true +} Else { + $uninstaller_is_downloaded = $false +} # Else + + + + +# Step 18 +# Exit all browsers and other programs that use Java +<# + If (Get-Process iexplore -ErrorAction SilentlyContinue) { + $empty_line | Out-String + Write-Warning "It seems that Internet Explorer is running." + $empty_line | Out-String + Return "Please close the Internet Explorer and run this script again. Exiting without updating..." + } Else { + $continue = $true + } # Else +#> +$task_number = 6 +$task = "Stopping Java-related processes..." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + +Stop-Process -ProcessName '*messenger*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'FlashPlayer*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'plugin-container*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'chrome*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'opera*' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'firefox' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'palemoon' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'iexplore' -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName 'iexplorer' -ErrorAction SilentlyContinue -Force + +Stop-Process -ProcessName Java -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName javaw -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName javaws -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName JP2Launcher -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName jqs -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName jucheck -ErrorAction SilentlyContinue -Force +Stop-Process -ProcessName jusched -ErrorAction SilentlyContinue -Force + +If (($admin_corner -eq $true) -or ($java_home_path_reg -eq $null)) { + $continue = $true +} Else { + Get-WmiObject Win32_Process | Where-Object { $_.ExecutablePath -like "*$java_home_path_reg*" } | Select-Object @{ Label='Name'; Expression={ $_.Name.Split('.')[0] }} | Stop-Process -ErrorAction SilentlyContinue -Force +} + +Start-Sleep -s 5 + + + + +# Step 19 +# Uninstall Java completely +# Note: It seems that Windows PowerShell has to be run in an elevated state (Run as an Administrator) for this script to actually be able to uninstall Java. +# Source: https://www.java.com/en/download/faq/uninstaller_toolfaq.xml +# Source: http://docs.oracle.com/javacomponents/msi-jre8/install-guide/installing_jre_msi.htm#msi_system_requirements +# Java Uninstall Tool URL: https://javadl-esd-secure.oracle.com/update/jut/JavaUninstallTool.exe + + # Unistall Java with the Java Uninstall tool + + <# + Versions of Java detected will be presented to the user for removal. + The user can choose to remove all or select specific versions of Java to remove. + Detects and allows removal of Java versions 1.4.2 and higher. + Only Java versions installed using the Java installer are detected. If Java is bundled with any application that uses its own installer, that version of Java will not be offered for removal. + The tool does not remove installations of the Java Development Kit (JDK). + The tool must be run online. The tool requires an internet connection because it checks for the latest version of the tool. + + # cd $path + # .\$uninstaller_file | Out-Null + # cd $script_path + + # Start-Process -FilePath $uninstaller_save_location -ArgumentList /qn /norestart -Wait + + #> + <# + Uninstalling the JRE with the Command Line + + 32-bit JRE: msiexec /x {26A24AE4-039D-4CA4-87B4-2F83218025F0} + 64-bit JRE: msiexec /x {26A24AE4-039D-4CA4-87B4-2F86418025F0} + + The value in curly braces is the MSI product code for the JRE about to be uninstalled. The latter part, 18025, correlates to the JRE version 1.8.0_25. + #> + +If (($java_is_installed -eq $true) -and ($downloading_java_is_required -eq $true) -and ($admin_corner -ne $true)) { + + $task_number = 7 + $task = "Uninstalling outdated Java..." + Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + # Win32_Product Class + # $javases = Get-WmiObject -Class Win32_Product | Where-Object { ($_.Name -like "*Java*" -or $_.Name -like "*J2SE Runtime*") -and ($_.Vendor -like "Oracle*" -or $_.Vendor -like "Sun*" )} + # ForEach ($old_java in $javases) { + # $uninstall = $old_java.Uninstall() + # } # ForEach ($old_java) + + # Uninstall the "Java Auto Updater" + $old_java_auto_updater_exists = Check-InstalledSoftware "Java Auto Updater" + + If ($old_java_auto_updater_exists) { + + $uninstalled_old_javas += $obj_auto_updater = New-Object -TypeName PSCustomObject -Property @{ + 'Computer' = $computer + # 'Computer' = $old_java_auto_updater_exists.PSComputerName + # 'Computer' = $old_java_auto_updater_exists.__SERVER + 'Name' = $old_java_auto_updater_exists.DisplayName.replace("(TM)","") + 'Version' = $old_java_auto_updater_exists.DisplayVersion + 'IdentifyingNumber' = $old_java_auto_updater_exists.PSChildName + 'ProgramId' = '-' + 'MsiPackageCode' = '-' + } # New-Object + $uninstalled_old_javas.PSObject.TypeNames.Insert(0,"Uninstalled Old Java Versions") + + $argument_old_java_auto_updater = "/uninstall $($old_java_auto_updater_exists.PSChildName) /qn /norestart" + Start-Process -FilePath $msiexec -ArgumentList "$argument_old_java_auto_updater" -Wait + Start-Process -FilePath $msiexec -ArgumentList "/uninstall {4A03706F-666A-4037-7777-5F2748764D10} /qn /norestart" -Wait + + } Else { + $continue = $true + } # Else + + $javases = Get-WmiObject -Class Win32_InstalledWin32Program | Where-Object { ($_.Name -like "*Java*" -or $_.Name -like "*J2SE Runtime*") -and ($_.Vendor -like "Oracle*" -or $_.Vendor -like "Sun*" )} + + If ($javases -ne $null) { + + ForEach ($old_java in $javases) { + + # Uninstall all instances of Java, apart from the "Java Auto Updater" + $argument_old_java = "/uninstall $($old_java.MsiProductCode) /qn /norestart" + + $uninstalled_old_javas += $obj_old_java = New-Object -TypeName PSCustomObject -Property @{ + 'Computer' = $computer + # 'Computer' = $old_java.PSComputerName + # 'Computer' = $old_java.__SERVER + 'Name' = $old_java.Name.replace("(TM)","") + 'Version' = $old_java.Version + 'IdentifyingNumber' = $old_java.MsiProductCode + 'ProgramId' = $old_java.ProgramId + 'MsiPackageCode' = $old_java.MsiPackageCode + } # New-Object + + try + { + $uninstall = Start-Process -FilePath $msiexec -ArgumentList "$argument_old_java" -Wait + $uninstall + } + catch [System.Exception] + { + $uninstall.ReturnValue + } + + Start-Sleep -s 4 + + } # ForEach ($old_java) + +<# + # Delete Java Registry Keys + # Remove-Item -Recurse 'HKLM:\SOFTWARE\JavaSoft\Java Update' -Force + # Remove-Item -Recurse 'HKLM:\SOFTWARE\Wow6432Node\JavaSoft\Java Update' -Force + Remove-Item -Recurse 'HKLM:\SOFTWARE\JavaSoft' -Force + Remove-Item -Recurse 'HKLM:\SOFTWARE\JreMetrics' -Force + Remove-Item -Recurse 'HKLM:\SOFTWARE\Wow6432Node\JavaSoft' -Force + Remove-Item -Recurse 'HKLM:\SOFTWARE\Wow6432Node\JreMetrics' -Force + + # Remove Java Directories + Remove-Item -Recurse -Path "C:\Program Files\Java\jre6" -Force + Remove-Item -Recurse -Path "C:\Program Files (x86)\Java\jre6" -Force + Remove-Item -Recurse -Path "C:\Program Files\Java\jre7" -Force + Remove-Item -Recurse -Path "C:\Program Files (x86)\Java\jre7" -Force +#> + + # Display the uninstalled Java versions in console + $uninstalled_old_javas.PSObject.TypeNames.Insert(0,"Uninstalled Old Java Versions") + $uninstalled_old_javas_selection = $uninstalled_old_javas | Select-Object 'Name','Version','Computer' + $empty_line | Out-String + $header_old_java_uninstall = "Uninstalled Old Java Versions" + $coline_old_java_uninstall = "-----------------------------" + Write-Output $header_old_java_uninstall + $coline_old_java_uninstall | Out-String + Write-Output $uninstalled_old_javas_selection + + } Else { + $continue = $true + } # Else [If ($javases)] + +} Else { + $continue = $true +} # Else (Step 19) + + + + +# Step 20 +# Install the downloaded Java with using the created Java Install Configuration File +# Note: Please see the Step 5 for generating the Java Install Configuration File (java_config.txt) +# Note: Please see the Steps 4.1 and 4.2 above for Java deployment properties (the "deployment.properties" -file) +# Source: http://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html#installing_with_config_file +# Source: http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html +# Source: http://docs.oracle.com/javacomponents/msi-jre8/install-guide/installing_jre_msi.htm#msi_install_command_line +# Source: http://stackoverflow.com/questions/28043588/installing-jdk-8-and-jre-8-silently-on-a-windows-machine-through-command-line +# Source: https://java.com/en/download/help/silent_install.xml + +<# + jre [INSTALLCFG=configuration_file_path] [options] + jre INSTALLCFG=configuration_file_path + + jre is the installer base file name, for example, jre-8u05-windows-i586.exe. jre refers to the JRE Windows Offline Installer base file name + + configuration_file_path is the path to the configuration file. Specifies the path of the installer configuration file. + + options are options with specified values separated by spaces. Use the same options as listed in Table 20-1, "Configuration File Options". In addition, you may use the option /s for the JRE Windows Offline Installer to perform a silent installation. You may substitute the value Enable for 1 and the value Disable for 0. + + # Silent install removing old Java and creating a logfile example: + jre1.8.0_60.exe /s /L C:\pathsetup.log REMOVEOUTOFDATEJRES=1 + + # Using a configuration file and creating a logfile example: + jre-8u31-windows-x64.exe INSTALLCFG="%ProgramData%\Java8Configuration\Java8u31config.txt" /L C:\Temp\Java8u31x64itRuntime_install.log + jre-8-windows-i586.exe INSTALLCFG=jre-install-options.txt /s /L C:\TMP\jre-install.log + + # cmd.exe Command Prompt with Administrative rights + msiexec.exe /i jre1.8.0_31_64bit.msi /L*v C:\Temp\Java8u31x64it_verb_Runtime_install.log INSTALL_SILENT="Enable" AUTO_UPDATE="Disable" WEB_JAVA="Enable" WEB_ANALYTICS="Disable" EULA="Disable" NOSTARTMENU="Enable" /qb + msiexec.exe /i %~dp0jre-8u45-windows-i586.msi INSTALLCFG=%~dp0custom.cfg /qn /L c:\log\jre-8u45-windows-i586.log + + # Basic UI mode: + msiexec.exe /i installer.msi [INSTALLCFG=configuration_file_path] [options] /qb + + # Silent or unattended mode: + msiexec.exe /i installer.msi [INSTALLCFG=configuration_file_path] [options] /qn +#> + +If ($java_is_downloaded -eq $true) { + + $task_number = 12 + $task = "Installing Java..." + Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + $install_arguments = [string]"INSTALLCFG=" + "$path\java_config.txt" + " /L " + "$path\java_install.log" + Start-Process -FilePath $java_save_location -ArgumentList "$install_arguments" -Wait + + Start-Sleep -s 7 + +} Else { + $continue = $true +} # Else + + + + +# Step 21 +# Enumerate the Javas after the update +$registry_paths_after_the_update = Get-ItemProperty $registry_paths -ErrorAction SilentlyContinue | Where-Object { ($_.DisplayName -like "*Java*" -or $_.DisplayName -like "*J2SE Runtime*") -and ($_.Publisher -like "Oracle*" -or $_.Publisher -like "Sun*" )} + + ForEach ($new_java in $registry_paths_after_the_update) { + + # Custom Uninstall Strings + $new_arguments = "/uninstall $($new_java.PSChildName) /qn /norestart" + $new_uninstall_string = "$msiexec /uninstall $($new_java.PSChildName) /qn" + $new_powershell_uninstall_string = [string]"Start-Process -FilePath $msiexec -ArgumentList " + $quote + $new_arguments + $unquote + " -Wait" + + + $new_javases += $obj_new = New-Object -TypeName PSCustomObject -Property @{ + 'Name' = $new_java.DisplayName.replace("(TM)","") + 'Version' = $new_java.DisplayVersion + 'Install Date' = $new_java.InstallDate + 'Install Location' = $new_java.InstallLocation + 'Publisher' = $new_java.Publisher + 'Computer' = $computer + 'Identifying Number' = $new_java.PSChildName + 'Standard Uninstall String' = $new_java.UninstallString + 'Custom Uninstall String' = $new_uninstall_string + 'PowerShell Uninstall String' = $new_powershell_uninstall_string + } # New-Object + + } # ForEach ($item) + + + # Display the Java Version Enumeration in console + If ($new_javases -ne $null) { + $new_javases.PSObject.TypeNames.Insert(0,"New Java Versions") + $new_javases_selection = $new_javases | Select-Object 'Name','Version','Install Date','Install Location','Publisher','Computer','Identifying Number','PowerShell Uninstall String' + $empty_line | Out-String + $header_new_java = "New Java Versions" + $coline_new_java = "-----------------" + Write-Output $header_new_java + $coline_new_java | Out-String + Write-Output $new_javases_selection + + } Else { + $continue = $true + } # Else + + + + +# Step 22 +# Delete the downloaded files and close the progress bar + +<# + Start-Sleep -s 7 + + If ($uninstaller_is_downloaded -eq $true) { + + $task_number = 15 + $task = "Deleting the downloaded files..." + Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + Remove-Item -Path "$uninstaller_save_location" + } Else { + $continue = $true + } # Else + + If ($java_is_downloaded -eq $true) { + + $task_number = 16 + $task = "Deleting the downloaded files..." + Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) + + Remove-Item -Path "$java_save_location" + } Else { + $continue = $true + } # Else +#> + +# Close the progress bar +$task_number = 19 +$task = "Finished updating Java." +Write-Progress -Id $id -Activity $activity -Status $status -CurrentOperation $task -PercentComplete (($task_number / $total_steps) * 100) -Completed + + + + +# Step 23 +# Uninstall Java Auto Updater (Post-Installation) + +$new_java_auto_updater_exists = Check-InstalledSoftware "Java Auto Updater" + + If ($new_java_auto_updater_exists) { + + $argument_new_java_auto_updater = "/uninstall $($new_java_auto_updater_exists.PSChildName) /qn /norestart" + Start-Process -FilePath $msiexec -ArgumentList "$argument_new_java_auto_updater" -Wait + Start-Process -FilePath $msiexec -ArgumentList "/uninstall {4A03706F-666A-4037-7777-5F2748764D10} /qn /norestart" -Wait + + If ((Check-InstalledSoftware "Java Auto Updater").DisplayName -eq $null) { + $new_uninstall_text = "$($new_java_auto_updater_exists.DisplayName) is uninstalled." + $empty_line | Out-String + Write-Output $new_uninstall_text + } Else { + $continue = $true + } # Else If (Check-InstalledSoftware) + + } Else { + $continue = $true + } # Else + + + + +# Step 24 +# Delete plugins registered with Mozilla applications after installing Java +Remove-Item -Recurse HKLM:\SOFTWARE\MozillaPlugins\@java* +Remove-Item -Recurse HKLM:\SOFTWARE\Wow6432Node\MozillaPlugins\@java* + + + + +# Step 25 +# Find out how long the script took to complete +$end_time = Get-Date +$runtime = ($end_time) - ($start_time) + + If ($runtime.Days -ge 2) { + $runtime_result = [string]$runtime.Days + ' days ' + $runtime.Hours + ' h ' + $runtime.Minutes + ' min' + } ElseIf ($runtime.Days -gt 0) { + $runtime_result = [string]$runtime.Days + ' day ' + $runtime.Hours + ' h ' + $runtime.Minutes + ' min' + } ElseIf ($runtime.Hours -gt 0) { + $runtime_result = [string]$runtime.Hours + ' h ' + $runtime.Minutes + ' min' + } ElseIf ($runtime.Minutes -gt 0) { + $runtime_result = [string]$runtime.Minutes + ' min ' + $runtime.Seconds + ' sec' + } ElseIf ($runtime.Seconds -gt 0) { + $runtime_result = [string]$runtime.Seconds + ' sec' + } ElseIf ($runtime.Milliseconds -gt 1) { + $runtime_result = [string]$runtime.Milliseconds + ' milliseconds' + } ElseIf ($runtime.Milliseconds -eq 1) { + $runtime_result = [string]$runtime.Milliseconds + ' millisecond' + } ElseIf (($runtime.Milliseconds -gt 0) -and ($runtime.Milliseconds -lt 1)) { + $runtime_result = [string]$runtime.Milliseconds + ' milliseconds' + } Else { + $runtime_result = [string]'' + } # Else (if) + + If ($runtime_result.Contains(" 0 h")) { + $runtime_result = $runtime_result.Replace(" 0 h"," ") + } If ($runtime_result.Contains(" 0 min")) { + $runtime_result = $runtime_result.Replace(" 0 min"," ") + } If ($runtime_result.Contains(" 0 sec")) { + $runtime_result = $runtime_result.Replace(" 0 sec"," ") + } # if ($runtime_result: first) + +# Display the runtime in console +$empty_line | Out-String +$timestamp_end = Get-Date -Format HH:mm:ss +$end_text = "$timestamp_end - Java Update Protocol completed." +Write-Output $end_text +$empty_line | Out-String +$runtime_text = "The update took $runtime_result." +Write-Output $runtime_text +$empty_line | Out-String + + + + +# [End of Line] + + +<# + + _____ + / ____| + | (___ ___ _ _ _ __ ___ ___ + \___ \ / _ \| | | | '__/ __/ _ \ + ____) | (_) | |_| | | | (_| __/ + |_____/ \___/ \__,_|_| \___\___| + + +http://powershell.com/cs/blogs/tips/archive/2011/05/04/test-internet-connection.aspx # ps1: "Test Internet connection" +http://powershell.com/cs/PowerTips_Monthly_Volume_8.pdf#IDERA-1702_PS-PowerShellMonthlyTipsVol8-jan2014 # Tobias Weltner: "PowerTips Monthly vol 8 January 2014" +http://stackoverflow.com/questions/29266622/how-to-run-exe-with-without-elevated-privileges-from-powershell?rq=1 # alejandro5042: "How to run exe with/without elevated privileges from PowerShell" +http://stackoverflow.com/questions/5466329/whats-the-best-way-to-determine-the-location-of-the-current-powershell-script?noredirect=1&lq=1 # JaredPar and Matthew Pirocchi "What's the best way to determine the location of the current PowerShell script?" +https://technet.microsoft.com/en-us/library/ff730939.aspx # Microsoft TechNet: "Adding a Simple Menu to a Windows PowerShell Script" +http://powershell.com/cs/forums/t/9685.aspx # lamaar75: "Creating a Menu" +http://stackoverflow.com/questions/10941756/powershell-show-elapsed-time # Jeff: "Powershell show elapsed time" + + + + _ _ _ + | | | | | | + | |__| | ___| |_ __ + | __ |/ _ \ | '_ \ + | | | | __/ | |_) | + |_| |_|\___|_| .__/ + | | + |_| + +#> + +<# + +.SYNOPSIS +Retrieves the latest Java version numbers from the Interwebs, and looks for the +installed Java versions on the system. If any outdated Java versions are found, +tries to update the Java. ** Partially obsolete ** + +.DESCRIPTION +This is a partially obsolete script, please see +https://github.com/auberginehill/java-update/issues/1 for further details. +Java-Update.ps1 doesn't seem to work with JRE Family Version 9 or later versions +of Java. JRE Family Version 8 is deemed to be "the latest" by this script, which +only seems to be factually true concerning the 32-bit Java versions. + +Java-Update downloads a list of the most recent Java version numbers against which +it compares the Java version numbers found on the system and displays, whether a +Java update is needed or not. The actual update process naturally needs elevated +rights, and if a working Internet connection is not found, Java-Update will exit +at Step 8. Java-Update detects the installed Javas by querying the Windows +registry for installed programs. The keys from +HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ and +HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\ are read on 64-bit +computers, and on 32-bit computers only the latter path is accessed. + +Java-Update tries to write several Java-related configuration files at an early +stage, the "deployment.properties" -file in Step 4 and an Install Configuration +File in Step 5 (java_config.txt). In Step 6, if enough rights are granted (run +as an administrator) Java-Update tries to remove the excessive duplicate Java +versions, so that only those Java versions, which are deemed to be the latest, +would remain. Usually only one instance of Java will remain, but if both the +32-bit and 64-bit Javas have the same latest version number, both of the Java +versions (32-bit and 64-bit) will be preserved. At this stage the Java Auto +Updater will also be uninstalled. In Step 6 the msiexec.exe is called to +uninstall old Javas, so the process runs at a normal pace. + +If Java-Update is run without elevated rights (but with a working Internet +connection) in a machine with old Java versions, it will be shown that a Java +update is needed, but Java-Update will exit at Step 13 before actually +downloading any files. To perform an update with Java-Update, PowerShell has to +be run in an elevated window (run as an administrator). + +If Java-Update is run in an elevated PowerShell window and no Java is detected, +the script offers the option to install Java in the "Admin Corner", where, in +contrary to the main autonomous nature of Java-Update, an end-user input +is required. + +If Java-Update is run with elevated rights (with a working Internet connection) +in a machine with old Java versions, Java-Update tries first to remove the +excessive duplicate Java versions (at Step 6), and in the update procedure +(if the most recent non-beta Java version is not detected and Java-Update is run +with administrative rights) Java-Update downloads the Java uninstaller from +Oracle/Sun (a file which is not used with this script) and a full Java offline +installer from Sun (the 64-bit Java for a 64-bit machine and the 32-bit Java for +a 32-bit machine). After stopping several Java-related processes Java-Update +uninstalls the outdated Java versions in two phases (Java Auto Updater first +and then the other Javas as listed by +Get-WmiObject -Class Win32_InstalledWin32Program command) with the +msiexec.exe /uninstall command and installs the downloaded Java version. + +.OUTPUTS +Displays Java related information in console. Tries to remove excessive (duplicate) +Java versions and update the one remaining instance of Java to the latest non-beta +version (the 64-bit Java for a 64-bit machine and the 32-bit Java for a 32-bit +machine), if old Java(s) is/are found, if Java-Update is run in an elevated +Powershell window and if a working Internet connection is detected. +In addition to that... + +The Java Deployment Configuration File (deployment.properties) is altered with new parameters, +if it is found in one of its default Windows locations, and the following backups are made. To +see the actual values that are being written, please see the Step 4 above (altering the +duplicated values below won't affect the script in any meaningful way): + + + Java Deployment Configuration File in Step 4 (deployment.properties): + + Windows path 1: %USER_HOME_DIRECTORY%\AppData\LocalLow\Sun\Java\Deployment\deployment.properties + Windows path 2: %USER_HOME_DIRECTORY%\AppData\Roaming\Sun\Java\Deployment\deployment.properties + + + 'Original' file, which is created when the script is run for the first time: + + Windows path 1: %USER_HOME_DIRECTORY%\AppData\LocalLow\Sun\Java\Deployment\deployment.properties_original + Windows path 2: %USER_HOME_DIRECTORY%\AppData\Roaming\Sun\Java\Deployment\deployment.properties_original + + + 'Backup' file, which is created when the script is run for the second time + and which gets overwritten in each successive time the script is run: + + Windows path 1: %USER_HOME_DIRECTORY%\AppData\LocalLow\Sun\Java\Deployment\deployment.properties.old + Windows path 2: %USER_HOME_DIRECTORY%\AppData\Roaming\Sun\Java\Deployment\deployment.properties.old + + + An auxiliary 'New' file, which contains the newest settings: + + Windows path 1: %USER_HOME_DIRECTORY%\AppData\LocalLow\Sun\Java\Deployment\deployment.properties.new + Windows path 2: %USER_HOME_DIRECTORY%\AppData\Roaming\Sun\Java\Deployment\deployment.properties.new + + + The %USER_HOME_DIRECTORY% location represents the Home directory of an user, such as + C:\Users\ and may be displayed in PowerShell with the [Environment]::GetFolderPath("User") command. + + The "Store user settings in the roaming profile" Java setting in the Java Control Panel (Advanced Tab) + determines, whether the Windows path 1 or 2 is used. The default option is Windows path 1 (i.e. "Store user + settings in the roaming profile" = false) i.e. %USER_HOME_DIRECTORY%\AppData\LocalLow\Sun\Java\Deployment\ + is used by default. + + + deployment.webjava.enabled=false Security Tab: Enable Java content in the browser + Set to true to run applets or Java Web Start (JWS) applications. + Set to false to block applets and JWS applications from running. + install.disable.sponsor.offers=true Advanced Tab: Suppress sponsor offers when installing or updating Java + + +For a comprehensive list of available settings in the deployment.properties file, +please see the "Deployment Configuration File and Properties" page at +http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/properties.html + + +An Install Configuration File is created in Step 5. To see the actual values that +are being written, please see the Step 5 above (altering the duplicated values +below won't affect the script in any meaningful way) + + + Install Configuration File in Step 5 (java_config.txt): + + Windows: %TEMP%\java_config.txt + + + The %TEMP% location represents the current Windows temporary file folder. + In PowerShell, for instance the command $env:temp displays the temp-folder path. + + + INSTALL_SILENT=1 Silent (non-interactive) installation + AUTO_UPDATE=0 Disables the auto update feature + WEB_JAVA=0 Disables Java in the browser. + Configures the installation so that downloaded Java + applications are not allowed to run in a web browser + or by Java Web Start. + WEB_JAVA_SECURITY_LEVEL=VH Sets the security level to very high + WEB_ANALYTICS=0 Disallow the installer to send installation-related + statistics to an Oracle server. + EULA=0 If a Java applet or Java Web Start application is + launched, do not prompt the user to accept the end-user + license agreement. + REBOOT=0 The installer will never prompt for restarting the + computer after installing the JRE. + REBOOT=Suppress + REBOOT=ReallySuppress + NOSTARTMENU=1 Specify that the installer installs the JRE without + setting up Java start-up items. + SPONSORS=0 Install Java without being presented with any third + party sponsor offers. + REMOVEOUTOFDATEJRES=1 Enables uninstallation of existing out of date JREs + during JRE install. Using REMOVEOUTOFDATEJRES=1 + removes all out-of-date Java versions from the system. + + +For a comprehensive list of available settings in a Configuration File, +please see the "Installing With a Configuration File" page at +https://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html + + +After the installation the downloaded files (uninstaller and the install file) are +not purged from the $path directory. + + +Additionally two auxiliary csv-files are created at $path and during the actual +update procedure a log-file is also created to the same location. + + + %TEMP%\java_update_chart.csv Gathered from an online XML-file. + %TEMP%\java_baseline.csv Contains the most recent Java version numbers. + %TEMP%\java_install.log A log-file about the installation procedure. + + + The %TEMP% location represents the current Windows temporary file folder. + In PowerShell, for instance the command $env:temp displays the temp-folder path. + + +To open these file locations in a Resource Manager Window, for instance a command + + + Invoke-Item ([string][Environment]::GetFolderPath("LocalApplicationData") + 'Low\Sun\Java\Deployment') + + or + + Invoke-Item ([string][Environment]::GetFolderPath("ApplicationData") + '\Sun\Java\Deployment') + + or + + Invoke-Item ("$env:temp") + + +may be used at the PowerShell prompt window [PS>]. + +.NOTES +Requires a working Internet connection for downloading a list of the most recent +Java version numbers. + +Also requires a working Internet connection for downloading a Java uninstaller +and a complete Java installer from Oracle/Sun (but this procedure is not initiated, +if the system is deemed up-to-date). The download location URLs of the full +installation files seem not to follow any pre-determined format anymore. +The download locations of full installation files for both 32-bit and 64-bit Java +versions are determined at Step 10 and Step 11. + +For performing any actual updates with Java-Update, it's mandatory to +run this script in an elevated PowerShell window (where PowerShell has been started +with the 'run as an administrator' option). The elevated rights are needed for +uninstalling Java(s) and installing Java. + +Please also notice that during the actual update phase Java-Update closes a bunch +of processes without any further notice in Step 18 and may do so also in Step 6. +Please also note that Java-Update alters the system files at least in Steps 4, 5, 19 +and 24, so that for instance, all successive Java installations (even the ones not +initiated by this Java-Update script) will be done "silently" i.e. without any +interactive pages or prompts. + +Please note that when run in an elevated PowerShell window and old Java(s) +is/are detected, Java-Update will automatically try to uninstall them and download +files from the Internet without prompting the end-user beforehand or without asking +any confirmations (in Step 6 and from Step 16 onwards). + +The notoriously slow and possibly harmful Get-WmiObject -Class Win32_Product command +is deliberately not used for listing the installed Javas or for performing +uninstallations despite the powerful Uninstall-method associated with this command, +since the Win32_Product Class has some unpleasant behaviors - namely it uses a +provider DLL that validates the consistency of every installed MSI package on the +computer (msiprov.dll with the mandatorily initiated resiliency check, in which the +installations are verified and possibly also repaired or repair-installed), which +is the main reason behind the slow performance of this command. All in all +Win32_product Class is not query optimized and in Java-Update a combination of +various registry queries, msiexec.exe and +Get-WmiObject -Class Win32_InstalledWin32Program is used instead. + +Please note that the downloaded files are placed in a directory, which is specified +with the $path variable (at line 15). The $env:temp variable points +to the current temp folder. The default value of the $env:temp variable is +C:\Users\\AppData\Local\Temp (i.e. each user account has their own +separate temp folder at path %USERPROFILE%\AppData\Local\Temp). To see the current +temp path, for instance a command + + [System.IO.Path]::GetTempPath() + +may be used at the PowerShell prompt window [PS>]. To change the temp folder for instance +to C:\Temp, please, for example, follow the instructions at +http://www.eightforums.com/tutorials/23500-temporary-files-folder-change-location-windows.html + + Homepage: https://github.com/auberginehill/java-update + Short URL: http://tinyurl.com/hh7krx3 + Version: 1.4 + +.EXAMPLE +./Java-Update +Runs the script. Please notice to insert ./ or .\ before the script name. + +.EXAMPLE +help ./Java-Update -Full +Displays the help file. + +.EXAMPLE +Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine +This command is altering the Windows PowerShell rights to enable script execution +in the default (LocalMachine) scope, and defines the conditions under which Windows +PowerShell loads configuration files and runs scripts in general. In Windows Vista +and later versions of Windows, for running commands that change the execution policy +of the LocalMachine scope, Windows PowerShell has to be run with elevated rights +(Run as Administrator). The default policy of the default (LocalMachine) scope is +"Restricted", and a command "Set-ExecutionPolicy Restricted" will "undo" the changes +made with the original example above (had the policy not been changed before...). +Execution policies for the local computer (LocalMachine) and for the current user +(CurrentUser) are stored in the registry (at for instance the +HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ExecutionPolicy key), and remain +effective until they are changed again. The execution policy for a particular session +(Process) is stored only in memory, and is discarded when the session is closed. + + + Parameters: + + Restricted Does not load configuration files or run scripts, but permits + individual commands. Restricted is the default execution policy. + + AllSigned Scripts can run. Requires that all scripts and configuration + files be signed by a trusted publisher, including the scripts + that have been written on the local computer. Risks running + signed, but malicious, scripts. + + RemoteSigned Requires a digital signature from a trusted publisher on scripts + and configuration files that are downloaded from the Internet + (including e-mail and instant messaging programs). Does not + require digital signatures on scripts that have been written on + the local computer. Permits running unsigned scripts that are + downloaded from the Internet, if the scripts are unblocked by + using the Unblock-File cmdlet. Risks running unsigned scripts + from sources other than the Internet and signed, but malicious, + scripts. + + Unrestricted Loads all configuration files and runs all scripts. + Warns the user before running scripts and configuration files + that are downloaded from the Internet. Not only risks, but + actually permits, eventually, running any unsigned scripts from + any source. Risks running malicious scripts. + + Bypass Nothing is blocked and there are no warnings or prompts. + Not only risks, but actually permits running any unsigned scripts + from any source. Risks running malicious scripts. + + Undefined Removes the currently assigned execution policy from the current + scope. If the execution policy in all scopes is set to Undefined, + the effective execution policy is Restricted, which is the + default execution policy. This parameter will not alter or + remove the ("master") execution policy that is set with a Group + Policy setting. + __________ + Notes: - Please note that the Group Policy setting "Turn on Script Execution" + overrides the execution policies set in Windows PowerShell in all + scopes. To find this ("master") setting, please, for example, open + the Local Group Policy Editor (gpedit.msc) and navigate to + Computer Configuration > Administrative Templates > + Windows Components > Windows PowerShell. + + - The Local Group Policy Editor (gpedit.msc) is not available in any + Home or Starter edition of Windows. + + - Group Policy setting "Turn on Script Execution": + + Not configured : No effect, the default + value of this setting + Disabled : Restricted + Enabled - Allow only signed scripts : AllSigned + Enabled - Allow local scripts and remote signed scripts : RemoteSigned + Enabled - Allow all scripts : Unrestricted + + +For more information, please type "Get-ExecutionPolicy -List", "help Set-ExecutionPolicy -Full", +"help about_Execution_Policies" or visit https://technet.microsoft.com/en-us/library/hh849812.aspx +or http://go.microsoft.com/fwlink/?LinkID=135170. + +.EXAMPLE +New-Item -ItemType File -Path C:\Temp\Java-Update.ps1 +Creates an empty ps1-file to the C:\Temp directory. The New-Item cmdlet has an inherent +-NoClobber mode built into it, so that the procedure will halt, if overwriting (replacing +the contents) of an existing file is about to happen. Overwriting a file with the New-Item +cmdlet requires using the Force. If the path name and/or the filename includes space +characters, please enclose the whole -Path parameter value in quotation marks (single or +double): + + New-Item -ItemType File -Path "C:\Folder Name\Java-Update.ps1" + +For more information, please type "help New-Item -Full". + +.LINK +http://powershell.com/cs/blogs/tips/archive/2011/05/04/test-internet-connection.aspx +http://powershell.com/cs/PowerTips_Monthly_Volume_8.pdf#IDERA-1702_PS-PowerShellMonthlyTipsVol8-jan2014 +http://stackoverflow.com/questions/29266622/how-to-run-exe-with-without-elevated-privileges-from-powershell?rq=1 +http://stackoverflow.com/questions/5466329/whats-the-best-way-to-determine-the-location-of-the-current-powershell-script?noredirect=1&lq=1 +https://technet.microsoft.com/en-us/library/ff730939.aspx +http://powershell.com/cs/forums/t/9685.aspx +http://stackoverflow.com/questions/10941756/powershell-show-elapsed-time +http://docs.oracle.com/javacomponents/msi-jre8/install-guide/installing_jre_msi.htm#msi_install_command_line +http://docs.oracle.com/javacomponents/msi-jre8/install-guide/installing_jre_msi.htm#msi_install_instructions +http://docs.oracle.com/javacomponents/msi-jre8/install-guide/installing_jre_msi.htm#msi_system_requirements +http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/properties.html +http://docs.oracle.com/javase/8/docs/technotes/guides/install/config.html#installing_with_config_file +http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html +http://pastebin.com/73JqpTqv +http://stackoverflow.com/questions/28043588/installing-jdk-8-and-jre-8-silently-on-a-windows-machine-through-command-line +http://stackoverflow.com/questions/27175137/powershellv2-remove-last-x-characters-from-a-string#32608908 +http://superuser.com/questions/443686/silent-java-update-check +https://bugs.openjdk.java.net/browse/JDK-8005362 +https://github.com/bmrf/standalone_scripts/blob/master/java_runtime_nuker.bat +https://www.java.com/en/download/faq/uninstaller_toolfaq.xml + +#> \ No newline at end of file diff --git a/Applications/Notepad++/Force-Update.ps1 b/Applications/Notepad++/Force-Update.ps1 new file mode 100644 index 0000000..642fde9 --- /dev/null +++ b/Applications/Notepad++/Force-Update.ps1 @@ -0,0 +1,24 @@ +# Modern websites require TLS 1.2 +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + +#requires -RunAsAdministrator + +# Let's go directly to the website and see what it lists as the current version +$BaseUri = "https://notepad-plus-plus.org" +$BasePage = Invoke-WebRequest -Uri $BaseUri -UseBasicParsing +$ChildPath = $BasePage.Links | Where-Object { $_.outerHTML -like '*Current Version*' } | Select-Object -ExpandProperty href +# Now let's go to the latest version's page and find the installer +$DownloadPageUri = $BaseUri + $ChildPath +$DownloadPage = Invoke-WebRequest -Uri $DownloadPageUri -UseBasicParsing +# Determine bit-ness of O/S and download accordingly +if ( [System.Environment]::Is64BitOperatingSystem ) { + $DownloadUrl = $DownloadPage.Links | Where-Object { $_.outerHTML -like '*npp.*.Installer.x64.exe"*' } | Select-Object -ExpandProperty href -Unique +} else { + $DownloadUrl = $DownloadPage.Links | Where-Object { $_.outerHTML -like '*npp.*.Installer.exe"*' } | Select-Object -ExpandProperty href -Unique +} + +Write-Host "Downloading the latest Notepad++ to the temp folder" +Invoke-WebRequest -Uri $DownloadUrl -OutFile "$env:TEMP\$( Split-Path -Path $DownloadUrl -Leaf )" | Out-Null + +Write-Host "Installing the latest Notepad++" +Start-Process -FilePath "$env:TEMP\$( Split-Path -Path $DownloadUrl -Leaf )" -ArgumentList "/S" -Wait \ No newline at end of file diff --git a/Applications/Zoom/Force-Remove.ps1 b/Applications/Zoom/Force-Remove.ps1 new file mode 100644 index 0000000..c254fa1 --- /dev/null +++ b/Applications/Zoom/Force-Remove.ps1 @@ -0,0 +1,437 @@ +<# +tes +.SYNOPSIS + Uninstalls all Zoom applications registered with the Windows installer. + Whether they are installed to the local computer or the users profile. + +.DESCRIPTION + Searches registry for applications registered with 'Zoom' as publisher. + If any found, the uninstall string is retrieved and used to uninstall the application. + If applications are found to be installed in the users profile, the users context is invoked and the application is uninstalled coming from SYSTEM context. + +.NOTES + Filename: Uninstall-EverythingZoom.ps1 + Version: 1.0 + Author: Martin Bengtsson + Blog: www.imab.dk + Twitter: @mwbengtsson + +.LINK + https://www.imab.dk/uninstall-all-zoom-applications-in-a-jiffy-using-configuration-manager-and-powershell/ +#> + +function Execute-AsLoggedOnUser($Command,$Hidden=$true) { + <# + .SYNOPSIS + Function that can execute powershell in the context of the logged-in user. + .DESCRIPTION + This function will use advanced API's to get the access token of the currently logged-in user, in order to execute a script in the users context. + This is useful for scripts that are run in the local system users context. + .REQUIREMENTS + This script myst be run from the context of the SYSTEM account. + Designes to be run by Intune or SCCM Agent. + Absolute paths required. + .EXAMPLE + Running a powershell script visible to the user + $userCommand = '-file c:\windows\temp\script.ps1' + executeAsLoggedOnUser -Command $userCommand -Hidden $false + .EXAMPLE + Running a powershell command hidden from the user (hidden is default true) + $userCommand = '-command &{remove-item c:\temp\secretfile.txt}' + executeAsLoggedOnUser -Command $userCommand + .COPYRIGHT + MIT License, feel free to distribute and use as you like, please leave author information. + .AUTHOR + Michael Mardahl - @michael_mardahl on twitter - BLOG: https://www.iphase.dk + C# borrowed from the awesome Justin Myrray (https://github.com/murrayju/CreateProcessAsUser) + .DISCLAIMER + This function is provided AS-IS, with no warranty - Use at own risk! + #> + +$csharpCode = @" + using System; + using System.Runtime.InteropServices; + + namespace murrayju.ProcessExtensions + { + public static class ProcessExtensions + { + #region Win32 Constants + + private const int CREATE_UNICODE_ENVIRONMENT = 0x00000400; + private const int CREATE_NO_WINDOW = 0x08000000; + + private const int CREATE_NEW_CONSOLE = 0x00000010; + + private const uint INVALID_SESSION_ID = 0xFFFFFFFF; + private static readonly IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero; + + #endregion + + #region DllImports + + [DllImport("advapi32.dll", EntryPoint = "CreateProcessAsUser", SetLastError = true, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] + private static extern bool CreateProcessAsUser( + IntPtr hToken, + String lpApplicationName, + String lpCommandLine, + IntPtr lpProcessAttributes, + IntPtr lpThreadAttributes, + bool bInheritHandle, + uint dwCreationFlags, + IntPtr lpEnvironment, + String lpCurrentDirectory, + ref STARTUPINFO lpStartupInfo, + out PROCESS_INFORMATION lpProcessInformation); + + [DllImport("advapi32.dll", EntryPoint = "DuplicateTokenEx")] + private static extern bool DuplicateTokenEx( + IntPtr ExistingTokenHandle, + uint dwDesiredAccess, + IntPtr lpThreadAttributes, + int TokenType, + int ImpersonationLevel, + ref IntPtr DuplicateTokenHandle); + + [DllImport("userenv.dll", SetLastError = true)] + private static extern bool CreateEnvironmentBlock(ref IntPtr lpEnvironment, IntPtr hToken, bool bInherit); + + [DllImport("userenv.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool DestroyEnvironmentBlock(IntPtr lpEnvironment); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool CloseHandle(IntPtr hSnapshot); + + [DllImport("kernel32.dll")] + private static extern uint WTSGetActiveConsoleSessionId(); + + [DllImport("Wtsapi32.dll")] + private static extern uint WTSQueryUserToken(uint SessionId, ref IntPtr phToken); + + [DllImport("wtsapi32.dll", SetLastError = true)] + private static extern int WTSEnumerateSessions( + IntPtr hServer, + int Reserved, + int Version, + ref IntPtr ppSessionInfo, + ref int pCount); + + #endregion + + #region Win32 Structs + + private enum SW + { + SW_HIDE = 0, + SW_SHOWNORMAL = 1, + SW_NORMAL = 1, + SW_SHOWMINIMIZED = 2, + SW_SHOWMAXIMIZED = 3, + SW_MAXIMIZE = 3, + SW_SHOWNOACTIVATE = 4, + SW_SHOW = 5, + SW_MINIMIZE = 6, + SW_SHOWMINNOACTIVE = 7, + SW_SHOWNA = 8, + SW_RESTORE = 9, + SW_SHOWDEFAULT = 10, + SW_MAX = 10 + } + + private enum WTS_CONNECTSTATE_CLASS + { + WTSActive, + WTSConnected, + WTSConnectQuery, + WTSShadow, + WTSDisconnected, + WTSIdle, + WTSListen, + WTSReset, + WTSDown, + WTSInit + } + + [StructLayout(LayoutKind.Sequential)] + private struct PROCESS_INFORMATION + { + public IntPtr hProcess; + public IntPtr hThread; + public uint dwProcessId; + public uint dwThreadId; + } + + private enum SECURITY_IMPERSONATION_LEVEL + { + SecurityAnonymous = 0, + SecurityIdentification = 1, + SecurityImpersonation = 2, + SecurityDelegation = 3, + } + + [StructLayout(LayoutKind.Sequential)] + private struct STARTUPINFO + { + public int cb; + public String lpReserved; + public String lpDesktop; + public String lpTitle; + public uint dwX; + public uint dwY; + public uint dwXSize; + public uint dwYSize; + public uint dwXCountChars; + public uint dwYCountChars; + public uint dwFillAttribute; + public uint dwFlags; + public short wShowWindow; + public short cbReserved2; + public IntPtr lpReserved2; + public IntPtr hStdInput; + public IntPtr hStdOutput; + public IntPtr hStdError; + } + + private enum TOKEN_TYPE + { + TokenPrimary = 1, + TokenImpersonation = 2 + } + + [StructLayout(LayoutKind.Sequential)] + private struct WTS_SESSION_INFO + { + public readonly UInt32 SessionID; + + [MarshalAs(UnmanagedType.LPStr)] + public readonly String pWinStationName; + + public readonly WTS_CONNECTSTATE_CLASS State; + } + + #endregion + + // Gets the user token from the currently active session + private static bool GetSessionUserToken(ref IntPtr phUserToken) + { + var bResult = false; + var hImpersonationToken = IntPtr.Zero; + var activeSessionId = INVALID_SESSION_ID; + var pSessionInfo = IntPtr.Zero; + var sessionCount = 0; + + // Get a handle to the user access token for the current active session. + if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref pSessionInfo, ref sessionCount) != 0) + { + var arrayElementSize = Marshal.SizeOf(typeof(WTS_SESSION_INFO)); + var current = pSessionInfo; + + for (var i = 0; i < sessionCount; i++) + { + var si = (WTS_SESSION_INFO)Marshal.PtrToStructure((IntPtr)current, typeof(WTS_SESSION_INFO)); + current += arrayElementSize; + + if (si.State == WTS_CONNECTSTATE_CLASS.WTSActive) + { + activeSessionId = si.SessionID; + } + } + } + + // If enumerating did not work, fall back to the old method + if (activeSessionId == INVALID_SESSION_ID) + { + activeSessionId = WTSGetActiveConsoleSessionId(); + } + + if (WTSQueryUserToken(activeSessionId, ref hImpersonationToken) != 0) + { + // Convert the impersonation token to a primary token + bResult = DuplicateTokenEx(hImpersonationToken, 0, IntPtr.Zero, + (int)SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, (int)TOKEN_TYPE.TokenPrimary, + ref phUserToken); + + CloseHandle(hImpersonationToken); + } + + return bResult; + } + + public static bool StartProcessAsCurrentUser(string cmdLine, bool visible, string appPath = null, string workDir = null) + { + var hUserToken = IntPtr.Zero; + var startInfo = new STARTUPINFO(); + var procInfo = new PROCESS_INFORMATION(); + var pEnv = IntPtr.Zero; + int iResultOfCreateProcessAsUser; + + startInfo.cb = Marshal.SizeOf(typeof(STARTUPINFO)); + + try + { + if (!GetSessionUserToken(ref hUserToken)) + { + throw new Exception("StartProcessAsCurrentUser: GetSessionUserToken failed."); + } + + uint dwCreationFlags = CREATE_UNICODE_ENVIRONMENT | (uint)(visible ? CREATE_NEW_CONSOLE : CREATE_NO_WINDOW); + startInfo.wShowWindow = (short)(visible ? SW.SW_SHOW : SW.SW_HIDE); + startInfo.lpDesktop = "winsta0\\default"; + + if (!CreateEnvironmentBlock(ref pEnv, hUserToken, false)) + { + throw new Exception("StartProcessAsCurrentUser: CreateEnvironmentBlock failed."); + } + + if (!CreateProcessAsUser(hUserToken, + appPath, // Application Name + cmdLine, // Command Line + IntPtr.Zero, + IntPtr.Zero, + false, + dwCreationFlags, + pEnv, + workDir, // Working directory + ref startInfo, + out procInfo)) + { + throw new Exception("StartProcessAsCurrentUser: CreateProcessAsUser failed.\n"); + } + + iResultOfCreateProcessAsUser = Marshal.GetLastWin32Error(); + } + finally + { + CloseHandle(hUserToken); + if (pEnv != IntPtr.Zero) + { + DestroyEnvironmentBlock(pEnv); + } + CloseHandle(procInfo.hThread); + CloseHandle(procInfo.hProcess); + } + return true; + } + } + } +"@ + # Compiling the source code as csharp + $compilerParams = [System.CodeDom.Compiler.CompilerParameters]::new() + $compilerParams.ReferencedAssemblies.AddRange(('System.Runtime.InteropServices.dll', 'System.dll')) + $compilerParams.CompilerOptions = '/unsafe' + $compilerParams.GenerateInMemory = $True + Add-Type -TypeDefinition $csharpCode -Language CSharp -CompilerParameters $compilerParams + # Adding powershell executeable to the command + $Command = '{0}\System32\WindowsPowerShell\v1.0\powershell.exe -executionPolicy bypass {1}' -f $($env:windir),$Command + # Adding double slashes to the command paths, as this is required. + $Command = $Command.Replace("\","\\") + # Execute a process as the currently logged on user. + # Absolute paths required if running as SYSTEM! + if($Hidden) { #running the command hidden + $runCommand = [murrayju.ProcessExtensions.ProcessExtensions]::StartProcessAsCurrentUser($Command,$false) + }else{ #running the command visible + $runCommand = [murrayju.ProcessExtensions.ProcessExtensions]::StartProcessAsCurrentUser($Command,$true) + } + + if ($runCommand) { + return "Executed `"$Command`" as loggedon user" + } else { + throw "Something went wrong when executing process as currently logged-on user" + } +} + +function Uninstall-ZoomLocalMachine() { + + Write-Verbose -Verbose -Message "Running Uninstall-ZoomLocalMachine function" + $registryPath = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall" + if (Test-Path -Path $registryPath) { + $installedZoomApps = Get-ChildItem -Path $registryPath -Recurse | Get-ItemProperty | Where-Object {$_.Publisher -like "Zoom*" } | Select-Object Displayname,UninstallString + if ($installedZoomApps) { + Write-Verbose -Verbose -Message "Installed Zoom applications found in HKLM" + foreach ($zoomApp in $installedZoomApps) { + if ($zoomApp.UninstallString) { + # Regular expression for format of MSI product code + $msiRegEx = "\w{8}-\w{4}-\w{4}-\w{4}-\w{12}" + # Formatting the productcode in a creative way. + # Needed this separately, as the uninstall string retrieved from registry sometimes wasn't formatted properly + $a = $zoomApp.Uninstallstring.Split("{")[1] + $b = $a.Split("}")[0] + # Only continuing if the uninstall string matches a regular MSI product code + if ($b -match $msiRegEx) { + $productCode = "{" + $b + "}" + if ($productCode) { + try { + Write-Verbose -Verbose -Message "Uninstalling application: $($zoomApp.DisplayName)" + Start-Process "C:\Windows\System32\msiexec.exe" -ArgumentList ("/x" + $productCode + " /passive") -Wait + } + + catch { + Write-Error -Message "Failed to uninstall application: $($zoomApp.DisplayName)" + } + } + } + } + } + } + else { + Write-Verbose -Verbose -Message "No Zoom applications found in HKLM" + } + } + else { + Write-Verbose -Verbose -Message "Registry path not found" + } +} + +function Uninstall-ZoomCurrentUser() { + + Write-Verbose -Verbose -Message "Running Uninstall-ZoomCurrentUser function" + # Getting all user profiles on the computer + $userProfiles = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\*" | Where-Object {$_.PSChildName -match "S-1-5-21-(\d+-?){4}$"} | Select-Object @{Name="SID"; Expression={$_.PSChildName}}, @{Name="UserHive";Expression={"$($_.ProfileImagePath)\NTuser.dat"}} + foreach ($userProfile in $userProfiles) { + # Formatting the username in a separate variable + $userName = $userProfile.UserHive.Split("\")[2] + $registryPath = "Registry::HKEY_USERS\$($UserProfile.SID)\Software\Microsoft\Windows\CurrentVersion\Uninstall" + if (Test-Path -Path $registryPath) { + $installedZoomApps = Get-ChildItem -Path $registryPath -Recurse | Get-ItemProperty | Where-Object {$_.Publisher -like "Zoom*" } | Select-Object Displayname,UninstallString + if ($installedZoomApps) { + Write-Verbose -Verbose -Message "Installed Zoom applications found in HKCU for user: $userName" + foreach ($zoomApp in $installedZoomApps) { + if ($zoomApp.UninstallString) { + $userCommand = '-command &{Start-Process "C:\Users\USERNAME\AppData\Roaming\Zoom\uninstall\Installer.exe" -ArgumentList "/uninstall" -Wait}' + # Replacing the placeholder: USERNAME with the actual username retrieved from the userprofile + # This can probably be done smarter, but I failed to find another method + $userCommand = $userCommand -replace "USERNAME",$userName + try { + Write-Verbose -Verbose -Message "Uninstalling application: $($zoomApp.DisplayName) as the logged on user: $userName" + Execute-AsLoggedOnUser -Command $userCommand + } + catch { + Write-Error -Message "Failed to uninstall application: $($zoomApp.DisplayName) for user: $userName" + } + } + } + } + else { + Write-Verbose -Verbose -Message "No Zoom applications found in HKCU for user: $userName" + } + } + else { + Write-Verbose -Verbose -Message "Registry path not found for user: $userName" + } + } +} + +try { + Write-Verbose -Verbose -Message "Script is running" + Uninstall-ZoomLocalMachine + Uninstall-ZoomCurrentUser +} + +catch { + Write-Verbose -Verbose -Message "Something went wrong during running of the script" +} + +finally { + Write-Verbose -Verbose -Message "Script is done running" +} \ No newline at end of file diff --git a/Azure Active Directory/Get-AadGroups.ps1 b/Azure Active Directory/Get-AadGroups.ps1 new file mode 100644 index 0000000..a7ce457 --- /dev/null +++ b/Azure Active Directory/Get-AadGroups.ps1 @@ -0,0 +1,34 @@ +$creduser = Read-Host "Admin email" +$credpassword = Read-Host "Admin Password" + +[securestring]$secStringPassword = ConvertTo-SecureString $credpassword -AsPlainText -Force +[pscredential]$credObject = New-Object System.Management.Automation.PSCredential ($creduser, $secStringPassword) + +Connect-AzureAD -Credential $credObject + +$Table = New-Object 'System.Collections.Generic.List[System.Object]' + +$Groups = Get-AzureAdGroup -All $True | Where-Object { $_.MailEnabled -eq $false -and $_.SecurityEnabled -eq $true } | Sort-Object DisplayName + +$obj1 = [PSCustomObject]@{ + 'Name' = 'Security Group' + 'Count' = $Groups.count +} + +$obj1 + +Foreach ($Group in $Groups) { + $Users = (Get-AzureADGroupMember -ObjectId $Group.ObjectID | Sort-Object DisplayName | Select-Object -ExpandProperty DisplayName) -join ", " + $GName = $Group.DisplayName + + $hash = New-Object PSObject -property @{ Name = "$GName"; Members = "$Users" } + + $obj = [PSCustomObject]@{ + 'Name' = $GName + 'Members' = $users + } + + $table.add($obj) +} + +$table | Export-Csv -Path "Groupe-SharePoint.csv" -Delimiter ";" -Encoding UTF8 -NoTypeInformation \ No newline at end of file diff --git a/Azure Active Directory/Get-MsolUser.ps1 b/Azure Active Directory/Get-MsolUser.ps1 new file mode 100644 index 0000000..69db792 --- /dev/null +++ b/Azure Active Directory/Get-MsolUser.ps1 @@ -0,0 +1,12 @@ +# Demande un nom d'utilisateur +$User = read-host -Prompt "User Name" + +# Obtenir les infos de l'utilisateur +$user_dn = (get-mailbox $user).distinguishedname + +# Liste des liste de distribution +"User " + $User + " is a member of the following groups:" +foreach ($group in get-distributiongroup -resultsize unlimited) { + if ((get-distributiongroupmember $group.identity | select -expand distinguishedname) -contains $user_dn) { $group.name } + +} \ No newline at end of file diff --git a/Azure Active Directory/Import-MsolUsers.ps1 b/Azure Active Directory/Import-MsolUsers.ps1 new file mode 100644 index 0000000..6ea010e --- /dev/null +++ b/Azure Active Directory/Import-MsolUsers.ps1 @@ -0,0 +1,37 @@ +# Import active directory module for running AD cmdlets +Import-Module MSOnline + +#Store the data from ADUsers.csv in the $ADUsers variable +$AADUsers = Import-csv "Templates\Import-MsolUsers.csv" -Delimiter ";" -Encoding UTF8 + +#Loop through each row containing user details in the CSV file +foreach ($User in $AADUsers) { + + $FullName = "$($User.firstname) $($User.lastname)" + + if ((Get-MsolUser -UserPrincipalName $User.username -ErrorAction SilentlyContinue)) { + Write-Warning "A user account with UPN $($User.username) already exist in Azure Active Directory." + } + elseif (([string]::IsNullOrEmpty($User.password))) { + Write-Warning "The password for $($User.username) is nul or empty." + } + else { + try { + New-MsolUser -DisplayName $FullName ` + -FirstName $User.FirstName ` + -LastName $User.LastName ` + -UserPrincipalName $User.Username ` + -UsageLocation $User.UsageLocation ` + -LicenseAssignment $User.AccountSkuId ` + -Password $user.password ` + -City $User.City ` + -Department $User.Department ` + -PasswordNeverExpires $true ` + -ForceChangePassword $False + Write-Host "The user $($User.firstname) $($User.lastname) ($($User.username)) was created." + } + catch { + Write-Error "The user $($User.firstname) $($User.lastname) ($($User.username)) was not created." + } + } +} \ No newline at end of file diff --git a/Azure Active Directory/MSolLicences.ps1 b/Azure Active Directory/MSolLicences.ps1 new file mode 100644 index 0000000..911835a --- /dev/null +++ b/Azure Active Directory/MSolLicences.ps1 @@ -0,0 +1,29 @@ +$License = 'hitea:STANDARDPACK' +$EnabledPlans = @( + 'TEAMS1' + 'WHITEBOARD_PLAN1' +) +$Exclusions = @( + 'Sync_ADCONNECT1@hitea.onmicrosoft.com' +) +$AllPlans = (Get-MsolAccountSku | Where-Object { $_.AccountSkuId -eq $License } | Select-Object -ExpandProperty ServiceStatus).ServicePlan.ServiceName +$DisabledPlans = $AllPlans | Where-Object { $EnabledPlans -notcontains $_ } +$E1CustomizedLicense = New-MsolLicenseOptions -AccountSkuId $License -DisabledPlans $DisabledPlans +$Users = Get-MsolUser -UnlicensedUsersOnly -All -EnabledFilter EnabledOnly +foreach ($User in $Users) { + if ($User.UsageLocation -ne 'FR') { + Set-MsolUser -UserPrincipalName $User.UserPrincipalName -UsageLocation PL + } + if ($User.IsLicensed -eq $false -and $Exclusions -notcontains $User.UserPrincipalName) { + Set-MsolUserLicense -UserPrincipalName $User.UserPrincipalName -AddLicenses $License -LicenseOptions $E1CustomizedLicense + } +} + + +$LicensePlans = Get-MsolAccountSku | ForEach-Object { + [PSCustomObject] @{ + LicenseName = $_.AccountSkuId + Plans = $_.ServiceStatus.ServicePlan.ServiceName -join ', ' + } +} +$LicensePlans | Format-Table -AutoSize \ No newline at end of file diff --git a/Azure Active Directory/O365HTMLReport.ps1 b/Azure Active Directory/O365HTMLReport.ps1 new file mode 100644 index 0000000..aceb619 --- /dev/null +++ b/Azure Active Directory/O365HTMLReport.ps1 @@ -0,0 +1,1370 @@ +<# + .NOTES + =========================================================================== + Version: 1.0.5 + Updated on: 8/14/2018 + Created by: /u/TheLazyAdministrator + Contributors: /u/ascIVV, /u/jmn_lab, /u/nothingpersonalbro + =========================================================================== + + AzureAD Module is required + Install-Module -Name AzureAD + https://www.powershellgallery.com/packages/azuread/ + ReportHTML Moduile is required + Install-Module -Name ReportHTML + https://www.powershellgallery.com/packages/ReportHTML/ + + UPDATES + 1.0.5 + /u/ascIVV: Added the following: + - Admin Tab + - Privileged Role Administrators + - Exchange Administrators + - User Account Administrators + - Tech Account Restricted Exchange Admin Role + - SharePoint Administrators + - Skype Administrators + - CRM Service Administrators + - Power BI Administrators + - Service Support Administrators + - Billing Administrators + /u/TheLazyAdministrator + - Cleaned up formatting + - Error Handling for $Null obj + - Console status + - Windows Defender ATP SKU + + + .DESCRIPTION + Generate an interactive HTML report on your Office 365 tenant. Report on Users, Tenant information, Groups, Policies, Contacts, Mail Users, Licenses and more! + + .Link + Original: http://thelazyadministrator.com/2018/06/22/create-an-interactive-html-report-for-office-365-with-powershell/ +#> +######################################### +# # +# VARIABLES # +# # +######################################### + +#Company logo that will be displayed on the left, can be URL or UNC +$CompanyLogo = "http://thelazyadministrator.com/wp-content/uploads/2018/06/logo-2-e1529684959389.png" + +#Logo that will be on the right side, UNC or URL +$RightLogo = "http://thelazyadministrator.com/wp-content/uploads/2018/06/amd.png" + +#Location the report will be saved to +$ReportSavePath = "C:\Lab\" + +#Variable to filter licenses out, in current state will only get licenses with a count less than 9,000 this will help filter free/trial licenses +$LicenseFilter = "9000" + +######################################## + +$creduser = Read-Host "Admin email" +$credpassword = Read-Host "Admin Password" + +[securestring]$secStringPassword = ConvertTo-SecureString $credpassword -AsPlainText -Force +[pscredential]$credObject = New-Object System.Management.Automation.PSCredential ($creduser, $secStringPassword) + +Connect-ExchangeOnline -Credential $credObject +Connect-AzureAD -Credential $credObject +Connect-MsolService -Credential $credObject + + +$Table = New-Object 'System.Collections.Generic.List[System.Object]' +$LicenseTable = New-Object 'System.Collections.Generic.List[System.Object]' +$UserTable = New-Object 'System.Collections.Generic.List[System.Object]' +$SharedMailboxTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GroupTypetable = New-Object 'System.Collections.Generic.List[System.Object]' +$IsLicensedUsersTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ContactTable = New-Object 'System.Collections.Generic.List[System.Object]' +$MailUser = New-Object 'System.Collections.Generic.List[System.Object]' +$ContactMailUserTable = New-Object 'System.Collections.Generic.List[System.Object]' +$RoomTable = New-Object 'System.Collections.Generic.List[System.Object]' +$EquipTable = New-Object 'System.Collections.Generic.List[System.Object]' +$GlobalAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ExchangeAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$PrivAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$UserAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$TechExchAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$SharePointAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$SkypeAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$CRMAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$PowerBIAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$ServiceAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$BillingAdminTable = New-Object 'System.Collections.Generic.List[System.Object]' +$StrongPasswordTable = New-Object 'System.Collections.Generic.List[System.Object]' +$CompanyInfoTable = New-Object 'System.Collections.Generic.List[System.Object]' +$DomainTable = New-Object 'System.Collections.Generic.List[System.Object]' + +$Sku = @{ + "O365_BUSINESS_ESSENTIALS" = "Office 365 Business Essentials" + "O365_BUSINESS_PREMIUM" = "Office 365 Business Premium" + "DESKLESSPACK" = "Office 365 (Plan K1)" + "DESKLESSWOFFPACK" = "Office 365 (Plan K2)" + "LITEPACK" = "Office 365 (Plan P1)" + "EXCHANGESTANDARD" = "Office 365 Exchange Online Only" + "STANDARDPACK" = "Enterprise Plan E1" + "STANDARDWOFFPACK" = "Office 365 (Plan E2)" + "ENTERPRISEPACK" = "Enterprise Plan E3" + "ENTERPRISEPACKLRG" = "Enterprise Plan E3" + "ENTERPRISEWITHSCAL" = "Enterprise Plan E4" + "STANDARDPACK_STUDENT" = "Office 365 (Plan A1) for Students" + "STANDARDWOFFPACKPACK_STUDENT" = "Office 365 (Plan A2) for Students" + "ENTERPRISEPACK_STUDENT" = "Office 365 (Plan A3) for Students" + "ENTERPRISEWITHSCAL_STUDENT" = "Office 365 (Plan A4) for Students" + "STANDARDPACK_FACULTY" = "Office 365 (Plan A1) for Faculty" + "STANDARDWOFFPACKPACK_FACULTY" = "Office 365 (Plan A2) for Faculty" + "ENTERPRISEPACK_FACULTY" = "Office 365 (Plan A3) for Faculty" + "ENTERPRISEWITHSCAL_FACULTY" = "Office 365 (Plan A4) for Faculty" + "ENTERPRISEPACK_B_PILOT" = "Office 365 (Enterprise Preview)" + "STANDARD_B_PILOT" = "Office 365 (Small Business Preview)" + "VISIOCLIENT" = "Visio Pro Online" + "POWER_BI_ADDON" = "Office 365 Power BI Addon" + "POWER_BI_INDIVIDUAL_USE" = "Power BI Individual User" + "POWER_BI_STANDALONE" = "Power BI Stand Alone" + "POWER_BI_STANDARD" = "Power-BI Standard" + "PROJECTESSENTIALS" = "Project Lite" + "PROJECTCLIENT" = "Project Professional" + "PROJECTONLINE_PLAN_1" = "Project Online" + "PROJECTONLINE_PLAN_2" = "Project Online and PRO" + "ProjectPremium" = "Project Online Premium" + "ECAL_SERVICES" = "ECAL" + "EMS" = "Enterprise Mobility Suite" + "RIGHTSMANAGEMENT_ADHOC" = "Windows Azure Rights Management" + "MCOMEETADV" = "PSTN conferencing" + "SHAREPOINTSTORAGE" = "SharePoint storage" + "PLANNERSTANDALONE" = "Planner Standalone" + "CRMIUR" = "CMRIUR" + "BI_AZURE_P1" = "Power BI Reporting and Analytics" + "INTUNE_A" = "Windows Intune Plan A" + "PROJECTWORKMANAGEMENT" = "Office 365 Planner Preview" + "ATP_ENTERPRISE" = "Exchange Online Advanced Threat Protection" + "EQUIVIO_ANALYTICS" = "Office 365 Advanced eDiscovery" + "AAD_BASIC" = "Azure Active Directory Basic" + "RMS_S_ENTERPRISE" = "Azure Active Directory Rights Management" + "AAD_PREMIUM" = "Azure Active Directory Premium" + "MFA_PREMIUM" = "Azure Multi-Factor Authentication" + "STANDARDPACK_GOV" = "Microsoft Office 365 (Plan G1) for Government" + "STANDARDWOFFPACK_GOV" = "Microsoft Office 365 (Plan G2) for Government" + "ENTERPRISEPACK_GOV" = "Microsoft Office 365 (Plan G3) for Government" + "ENTERPRISEWITHSCAL_GOV" = "Microsoft Office 365 (Plan G4) for Government" + "DESKLESSPACK_GOV" = "Microsoft Office 365 (Plan K1) for Government" + "ESKLESSWOFFPACK_GOV" = "Microsoft Office 365 (Plan K2) for Government" + "EXCHANGESTANDARD_GOV" = "Microsoft Office 365 Exchange Online (Plan 1) only for Government" + "EXCHANGEENTERPRISE_GOV" = "Microsoft Office 365 Exchange Online (Plan 2) only for Government" + "SHAREPOINTDESKLESS_GOV" = "SharePoint Online Kiosk" + "EXCHANGE_S_DESKLESS_GOV" = "Exchange Kiosk" + "RMS_S_ENTERPRISE_GOV" = "Windows Azure Active Directory Rights Management" + "OFFICESUBSCRIPTION_GOV" = "Office ProPlus" + "MCOSTANDARD_GOV" = "Lync Plan 2G" + "SHAREPOINTWAC_GOV" = "Office Online for Government" + "SHAREPOINTENTERPRISE_GOV" = "SharePoint Plan 2G" + "EXCHANGE_S_ENTERPRISE_GOV" = "Exchange Plan 2G" + "EXCHANGE_S_ARCHIVE_ADDON_GOV" = "Exchange Online Archiving" + "EXCHANGE_S_DESKLESS" = "Exchange Online Kiosk" + "SHAREPOINTDESKLESS" = "SharePoint Online Kiosk" + "SHAREPOINTWAC" = "Office Online" + "YAMMER_ENTERPRISE" = "Yammer for the Starship Enterprise" + "EXCHANGE_L_STANDARD" = "Exchange Online (Plan 1)" + "MCOLITE" = "Lync Online (Plan 1)" + "SHAREPOINTLITE" = "SharePoint Online (Plan 1)" + "OFFICE_PRO_PLUS_SUBSCRIPTION_SMBIZ" = "Office ProPlus" + "EXCHANGE_S_STANDARD_MIDMARKET" = "Exchange Online (Plan 1)" + "MCOSTANDARD_MIDMARKET" = "Lync Online (Plan 1)" + "SHAREPOINTENTERPRISE_MIDMARKET" = "SharePoint Online (Plan 1)" + "OFFICESUBSCRIPTION" = "Office ProPlus" + "YAMMER_MIDSIZE" = "Yammer" + "DYN365_ENTERPRISE_PLAN1" = "Dynamics 365 Customer Engagement Plan Enterprise Edition" + "ENTERPRISEPREMIUM_NOPSTNCONF" = "Enterprise E5 (without Audio Conferencing)" + "ENTERPRISEPREMIUM" = "Enterprise E5 (with Audio Conferencing)" + "MCOSTANDARD" = "Skype for Business Online Standalone Plan 2" + "PROJECT_MADEIRA_PREVIEW_IW_SKU" = "Dynamics 365 for Financials for IWs" + "STANDARDWOFFPACK_IW_STUDENT" = "Office 365 Education for Students" + "STANDARDWOFFPACK_IW_FACULTY" = "Office 365 Education for Faculty" + "EOP_ENTERPRISE_FACULTY" = "Exchange Online Protection for Faculty" + "EXCHANGESTANDARD_STUDENT" = "Exchange Online (Plan 1) for Students" + "OFFICESUBSCRIPTION_STUDENT" = "Office ProPlus Student Benefit" + "STANDARDWOFFPACK_FACULTY" = "Office 365 Education E1 for Faculty" + "STANDARDWOFFPACK_STUDENT" = "Microsoft Office 365 (Plan A2) for Students" + "DYN365_FINANCIALS_BUSINESS_SKU" = "Dynamics 365 for Financials Business Edition" + "DYN365_FINANCIALS_TEAM_MEMBERS_SKU" = "Dynamics 365 for Team Members Business Edition" + "FLOW_FREE" = "Microsoft Flow Free" + "POWER_BI_PRO" = "Power BI Pro" + "O365_BUSINESS" = "Office 365 Business" + "DYN365_ENTERPRISE_SALES" = "Dynamics Office 365 Enterprise Sales" + "RIGHTSMANAGEMENT" = "Rights Management" + "PROJECTPROFESSIONAL" = "Project Professional" + "VISIOONLINE_PLAN1" = "Visio Online Plan 1" + "EXCHANGEENTERPRISE" = "Exchange Online Plan 2" + "DYN365_ENTERPRISE_P1_IW" = "Dynamics 365 P1 Trial for Information Workers" + "DYN365_ENTERPRISE_TEAM_MEMBERS" = "Dynamics 365 For Team Members Enterprise Edition" + "CRMSTANDARD" = "Microsoft Dynamics CRM Online Professional" + "EXCHANGEARCHIVE_ADDON" = "Exchange Online Archiving For Exchange Online" + "EXCHANGEDESKLESS" = "Exchange Online Kiosk" + "SPZA_IW" = "App Connect" + "WINDOWS_STORE" = "Windows Store for Business" + "MCOEV" = "Microsoft Phone System" + "VIDEO_INTEROP" = "Polycom Skype Meeting Video Interop for Skype for Business" + "SPE_E5" = "Microsoft 365 E5" + "SPE_E3" = "Microsoft 365 E3" + "ATA" = "Advanced Threat Analytics" + "MCOPSTN2" = "Domestic and International Calling Plan" + "FLOW_P1" = "Microsoft Flow Plan 1" + "FLOW_P2" = "Microsoft Flow Plan 2" + "WIN_DEF_ATP" = "Windows Defender ATP" +} +# Get all users right away. Instead of doing several lookups, we will use this object to look up all the information needed. +$AllUsers = get-azureaduser -All:$true -ErrorAction SilentlyContinue + +Write-Host "Gathering Company Information..." -ForegroundColor Yellow +#Company Information +$CompanyInfo = Get-AzureADTenantDetail -ErrorAction SilentlyContinue + +$CompanyName = $CompanyInfo.DisplayName +$TechEmail = $CompanyInfo.TechnicalNotificationMails | Out-String +$DirSync = $CompanyInfo.DirSyncEnabled +$LastDirSync = $CompanyInfo.CompanyLastDirSyncTime + + +If ($DirSync -eq $Null) { + $LastDirSync = "Not Available" + $DirSync = "Disabled" +} +If ($PasswordSync -eq $Null) { + $LastPasswordSync = "Not Available" +} + +$obj = [PSCustomObject]@{ + 'Name' = $CompanyName + 'Technical E-mail' = $TechEmail + 'Directory Sync' = $DirSync + 'Last Directory Sync' = $LastDirSync +} + +$CompanyInfoTable.add($obj) + +Write-Host "Gathering Admin Roles and Members..." -ForegroundColor Yellow + +Write-Host "Getting Tenant Global Admins" -ForegroundColor white +#Get Tenant Global Admins +$role = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "Global Administrator" } -ErrorAction SilentlyContinue +If ($null -ne $role) { + $Admins = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -ne "CloudConsoleGrapApi" } + Foreach ($Admin in $Admins) { + + $MFAS = ((Get-MsolUser -objectid $Admin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + + $Name = $Admin.DisplayName + $EmailAddress = $Admin.Mail + if (($admin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $GlobalAdminTable.add($obj) + } +} +If (($GlobalAdminTable).count -eq 0) { + $GlobalAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users were found with Global Administrator found' + } +} + + + +Write-Host "Getting Tenant Exchange Admins" -ForegroundColor white +#Get Tenant Exchange Admins +$exchrole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "Exchange Service Administrator" } -ErrorAction SilentlyContinue +If ($Null -ne $exchrole) { + $ExchAdmins = Get-AzureADDirectoryRoleMember -ObjectId $exchrole.ObjectId -ErrorAction SilentlyContinue + Foreach ($ExchAdmin in $ExchAdmins) { + $MFAS = ((Get-MsolUser -objectid $ExchAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + $Name = $ExchAdmin.DisplayName + $EmailAddress = $ExchAdmin.Mail + if (($Exchadmin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $ExchangeAdminTable.add($obj) + + } +} +If (($ExchangeAdminTable).count -eq 0) { + $ExchangeAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the Exchange Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Tenant Privileged Admins" -ForegroundColor white +#Get Tenant Privileged Admins +$privadminrole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "Privileged Role Administrator" } -ErrorAction SilentlyContinue +If ($Null -ne $privadminrole) { + $PrivAdmins = Get-AzureADDirectoryRoleMember -ObjectId $privadminrole.ObjectId -ErrorAction SilentlyContinue -ErrorVariable SilentlyContinue + Foreach ($PrivAdmin in $PrivAdmins) { + $MFAS = ((Get-MsolUser -objectid $PrivAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + + $Name = $PrivAdmin.DisplayName + $EmailAddress = $PrivAdmin.Mail + if (($admin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $PrivAdminTable.add($obj) + + } +} +If (($PrivAdminTable).count -eq 0) { + $PrivAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the Privileged Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Tenant User Account Admins" -ForegroundColor white +#Get Tenant User Account Admins +$userrole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "User Account Administrator" } -ErrorAction SilentlyContinue +If ($Null -ne $userrole) { + $userAdmins = Get-AzureADDirectoryRoleMember -ObjectId $userrole.ObjectId -ErrorAction SilentlyContinue + Foreach ($userAdmin in $userAdmins) { + $MFAS = ((Get-MsolUser -objectid $userAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + $Name = $userAdmin.DisplayName + $EmailAddress = $userAdmin.Mail + if (($useradmin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $UserAdminTable.add($obj) + + } +} +If (($UserAdminTable).count -eq 0) { + $UserAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the User Account Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Helpdesk Admins" -ForegroundColor white +#Get Tenant Tech Account Exchange Admins +$helprole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "Helpdesk Administrator" } -ErrorAction SilentlyContinue +If ($Null -ne $helprole) { + $HelpAdmins = Get-AzureADDirectoryRoleMember -ObjectId $helprole.ObjectId -ErrorAction SilentlyContinue + Foreach ($helpAdmin in $HelpAdmins) { + $MFAS = ((Get-MsolUser -objectid $helpAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + $Name = $helpAdmin.DisplayName + $EmailAddress = $helpAdmin.Mail + if (($helpAdmin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $TechExchAdminTable.add($obj) + + } +} +If (($TechExchAdminTable).count -eq 0) { + $TechExchAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the Helpdesk Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Tenant SharePoint Admins" -ForegroundColor white +#Get Tenant SharePoint Admins +$sprole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "SharePoint Service Administrator" } -ErrorAction SilentlyContinue +If ($Null -ne $sprole) { + $SPAdmins = Get-AzureADDirectoryRoleMember -ObjectId $sprole.ObjectId -ErrorAction SilentlyContinue + Foreach ($SPAdmin in $SPAdmins) { + $MFAS = ((Get-MsolUser -objectid $SPAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + $Name = $SPAdmin.DisplayName + $EmailAddress = $SPAdmin.Mail + if (($SPadmin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $SharePointAdminTable.add($obj) + + } +} +If (($SharePointAdminTable).count -eq 0) { + $SharePointAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the SharePoint Service Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Tenant Skype Admins" -ForegroundColor white +#Get Tenant Skype Admins +$skyperole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "Lync Service Administrator" } -ErrorAction SilentlyContinue +If ($Null -ne $skyperole) { + $skypeAdmins = Get-AzureADDirectoryRoleMember -ObjectId $skyperole.ObjectId -ErrorAction SilentlyContinue + Foreach ($skypeAdmin in $skypeAdmins) { + $MFAS = ((Get-MsolUser -objectid $skypeAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + $Name = $skypeAdmin.DisplayName + $EmailAddress = $skypeAdmin.Mail + if (($skypeadmin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $SkypeAdminTable.add($obj) + + } +} +If (($skypeAdminTable).count -eq 0) { + $skypeAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the Lync Service Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Tenant CRM Admins" -ForegroundColor white +#Get Tenant CRM Admins +$crmrole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "CRM Service Administrator" } -ErrorAction SilentlyContinue +If ($Null -ne $crmrole) { + $crmAdmins = Get-AzureADDirectoryRoleMember -ObjectId $crmrole.ObjectId -ErrorAction SilentlyContinue + Foreach ($crmAdmin in $crmAdmins) { + $MFAS = ((Get-MsolUser -objectid $crmAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + $Name = $crmAdmin.DisplayName + $EmailAddress = $crmAdmin.Mail + if (($crmadmin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $CRMAdminTable.add($obj) + + } +} +If (($CRMAdminTable).count -eq 0) { + $CRMAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the CRM Service Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Tenant Power BI Admins" -ForegroundColor white +#Get Tenant Power BI Admins +$birole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "Power BI Service Administrator" } -ErrorAction SilentlyContinue +If ($null -ne $birole) { + $biAdmins = Get-AzureADDirectoryRoleMember -ObjectId $birole.ObjectId -ErrorAction SilentlyContinue + + Foreach ($biAdmin in $biAdmins) { + $MFAS = ((Get-MsolUser -objectid $biAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + $Name = $biAdmin.DisplayName + $EmailAddress = $biAdmin.Mail + if (($biadmin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $PowerBIAdminTable.add($obj) + + } +} +If (($PowerBIAdminTable).count -eq 0) { + $PowerBIAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the Power BI Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Tenant Service Support Admins" -ForegroundColor white +#Get Tenant Service Support Admins +$servicerole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "Service Support Administrator" } -ErrorAction SilentlyContinue +If ($Null -ne $servicerole) { + $serviceAdmins = Get-AzureADDirectoryRoleMember -ObjectId $servicerole.ObjectId -ErrorAction SilentlyContinue + Foreach ($serviceAdmin in $serviceAdmins) { + $MFAS = ((Get-MsolUser -objectid $serviceAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + $Name = $serviceAdmin.DisplayName + $EmailAddress = $serviceAdmin.Mail + if (($serviceadmin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $ServiceAdminTable.add($obj) + + } +} +If (($serviceAdminTable).count -eq 0) { + $serviceAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the Service Support Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Tenant Billing Admins" -ForegroundColor white +#Get Tenant Billing Admins +$billingrole = Get-AzureADDirectoryRole | Where-Object { $_.DisplayName -match "Billing Administrator" } -ErrorAction SilentlyContinue +If ($Null -ne $billingrole) { + $billingAdmins = Get-AzureADDirectoryRoleMember -ObjectId $billingrole.ObjectId -ErrorAction SilentlyContinue + Foreach ($billingAdmin in $billingAdmins) { + $MFAS = ((Get-MsolUser -objectid $billingAdmin.ObjectID -ErrorAction SilentlyContinue).StrongAuthenticationRequirements).State + + if ($Null -ne $MFAS) { + $MFASTATUS = "Enabled" + } + else { + $MFASTATUS = "Disabled" + } + $Name = $billingAdmin.DisplayName + $EmailAddress = $billingAdmin.Mail + if (($billingadmin.assignedlicenses.SkuID) -ne $Null) { + $Licensed = $True + } + else { + $Licensed = $False + } + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'MFA Status' = $MFAStatus + 'Is Licensed' = $Licensed + 'E-Mail Address' = $EmailAddress + } + + $BillingAdminTable.add($obj) + + } +} +If (($billingAdminTable).count -eq 0) { + $billingAdminTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users with the Billing Administrator role were found, refer to the Global Administrators list.' + } +} + +Write-Host "Getting Users with Strong Password Disabled..." -ForegroundColor Yellow +#Users with Strong Password Disabled +$LooseUsers = $AllUsers | Where-Object { $_.PasswordPolicies -eq "DisableStrongPassword" } +Foreach ($LooseUser in $LooseUsers) { + $NameLoose = $LooseUser.DisplayName + $UPNLoose = $LooseUser.UserPrincipalName + $StrongPasswordLoose = "False" + if (($LooseUser.assignedlicenses.SkuID) -ne $Null) { + $LicensedLoose = $true + } + else { + $LicensedLoose = $false + } + + $obj = [PSCustomObject]@{ + 'Name' = $NameLoose + 'UserPrincipalName' = $UPNLoose + 'Is Licensed' = $LicensedLoose + 'Strong Password Required' = $StrongPasswordLoose + } + + + $StrongPasswordTable.add($obj) +} +If (($StrongPasswordTable).count -eq 0) { + $StrongPasswordTable = [PSCustomObject]@{ + 'Information' = 'Information: No Users were found with Strong Password Enforcement disabled' + } +} + +Write-Host "Getting Tenant Domains..." -ForegroundColor Yellow +#Tenant Domain +$Domains = Get-AzureAdDomain +foreach ($Domain in $Domains) { + $DomainName = $Domain.Name + $Verified = $Domain.IsVerified + $DefaultStatus = $Domain.IsDefault + + $obj = [PSCustomObject]@{ + 'Domain Name' = $DomainName + 'Verification Status' = $Verified + 'Default' = $DefaultStatus + } + + $DomainTable.add($obj) +} + +Write-Host "Getting Groups..." -ForegroundColor Yellow +#Get groups and sort in alphabetical order +$Groups = Get-AzureAdGroup -All $True | Sort-Object DisplayName +$365GroupCount = ($Groups | Where-Object { $_.MailEnabled -eq $true -and $_.DirSyncEnabled -eq $null -and $_.SecurityEnabled -eq $false }).Count +$obj1 = [PSCustomObject]@{ + 'Name' = 'Office 365 Group' + 'Count' = $365GroupCount +} + +$GroupTypetable.add($obj1) + +Write-Host "Getting Distribution Groups..." -ForegroundColor White +$DistroCount = ($Groups | Where-Object { $_.MailEnabled -eq $true -and $_.SecurityEnabled -eq $false }).Count +$obj1 = [PSCustomObject]@{ + 'Name' = 'Distribution List' + 'Count' = $DistroCount +} + +$GroupTypetable.add($obj1) + +Write-Host "Getting Security Groups..." -ForegroundColor White +$SecurityCount = ($Groups | Where-Object { $_.MailEnabled -eq $false -and $_.SecurityEnabled -eq $true }).Count +$obj1 = [PSCustomObject]@{ + 'Name' = 'Security Group' + 'Count' = $SecurityCount +} + +$GroupTypetable.add($obj1) + +Write-Host "Getting Mail-Enabled Security Groups..." -ForegroundColor White +$SecurityMailEnabledCount = ($Groups | Where-Object { $_.MailEnabled -eq $true -and $_.SecurityEnabled -eq $true }).Count +$obj1 = [PSCustomObject]@{ + 'Name' = 'Mail Enabled Security Group' + 'Count' = $SecurityMailEnabledCount +} + +$GroupTypetable.add($obj1) + +Foreach ($Group in $Groups) { + $Type = New-Object 'System.Collections.Generic.List[System.Object]' + + if ($group.MailEnabled -eq $True -and $group.DirSyncEnabled -eq $null -and $group.SecurityEnabled -eq $False) { + $Type = "Office 365 Group" + } + if ($group.MailEnabled -eq $True -and $group.SecurityEnabled -eq $False) { + $Type = "Distribution List" + } + if ($group.MailEnabled -eq $False -and $group.SecurityEnabled -eq $True) { + $Type = "Security Group" + } + if ($group.MailEnabled -eq $True -and $group.SecurityEnabled -eq $True) { + $Type = "Mail Enabled Security Group" + } + + $Users = (Get-AzureADGroupMember -ObjectId $Group.ObjectID | Sort-Object DisplayName | Select-Object -ExpandProperty DisplayName) -join ", " + $GName = $Group.DisplayName + + $hash = New-Object PSObject -property @{ Name = "$GName"; Type = "$Type"; Members = "$Users" } + $GEmail = $Group.Mail + + + $obj = [PSCustomObject]@{ + 'Name' = $GName + 'Type' = $Type + 'Members' = $users + 'E-mail Address' = $GEmail + } + + $table.add($obj) +} +If (($table).count -eq 0) { + $table = [PSCustomObject]@{ + 'Information' = 'Information: No Groups were found in the tenant' + } +} + + +Write-Host "Getting Licenses..." -ForegroundColor Yellow +#Get all licenses +$Licenses = Get-AzureADSubscribedSku +#Split licenses at colon +Foreach ($License in $Licenses) { + $TextLic = $null + + $ASku = ($License).SkuPartNumber + $TextLic = $Sku.Item("$ASku") + If (!($TextLic)) { + $OLicense = $License.SkuPartNumber + } + Else { + $OLicense = $TextLic + } + + $TotalAmount = $License.PrepaidUnits.enabled + $Assigned = $License.ConsumedUnits + $Unassigned = ($TotalAmount - $Assigned) + + If ($TotalAmount -lt $LicenseFilter) { + $obj = [PSCustomObject]@{ + 'Name' = $Olicense + 'Total Amount' = $TotalAmount + 'Assigned Licenses' = $Assigned + 'Unassigned Licenses' = $Unassigned + } + + $licensetable.add($obj) + } +} +If (($licensetable).count -eq 0) { + $licensetable = [PSCustomObject]@{ + 'Information' = 'Information: No Licenses were found in the tenant' + } +} + + +$IsLicensed = ($AllUsers | Where-Object { $_.assignedlicenses.count -gt 0 }).Count +$objULic = [PSCustomObject]@{ + 'Name' = 'Users Licensed' + 'Count' = $IsLicensed +} + +$IsLicensedUsersTable.add($objULic) + +$ISNotLicensed = ($AllUsers | Where-Object { $_.assignedlicenses.count -eq 0 }).Count +$objULic = [PSCustomObject]@{ + 'Name' = 'Users Not Licensed' + 'Count' = $IsNotLicensed +} + +$IsLicensedUsersTable.add($objULic) +If (($IsLicensedUsersTable).count -eq 0) { + $IsLicensedUsersTable = [PSCustomObject]@{ + 'Information' = 'Information: No Licenses were found in the tenant' + } +} + +#get Users +Write-Host "Getting Users..." -ForegroundColor Yellow +Foreach ($User in $AllUsers) { + $ProxyA = New-Object 'System.Collections.Generic.List[System.Object]' + $NewObject02 = New-Object 'System.Collections.Generic.List[System.Object]' + $NewObject01 = New-Object 'System.Collections.Generic.List[System.Object]' + $UserLicenses = ($user | Select -ExpandProperty AssignedLicenses).SkuID + If (($UserLicenses).count -gt 1) { + $LastLogon = Get-MailboxStatistics $User.DisplayName -ErrorAction SilentlyContinue | Select-Object -ExpandProperty LastLogonTime + Foreach ($UserLicense in $UserLicenses) { + $UserLicense = ($licenses | Where-Object { $_.skuid -match $UserLicense }).SkuPartNumber + $TextLic = $Sku.Item("$UserLicense") + If (!($TextLic)) { + $NewObject01 = [PSCustomObject]@{ + 'Licenses' = $UserLicense + } + $NewObject02.add($NewObject01) + } + Else { + $NewObject01 = [PSCustomObject]@{ + 'Licenses' = $textlic + } + + $NewObject02.add($NewObject01) + } + } + } + Elseif (($UserLicenses).count -eq 1) { + $LastLogon = Get-MailboxStatistics $User.DisplayName -ErrorAction SilentlyContinue | Select-Object -ExpandProperty LastLogonTime + $lic = ($licenses | Where-Object { $_.skuid -match $UserLicenses }).SkuPartNumber + $TextLic = $Sku.Item("$lic") + If (!($TextLic)) { + $NewObject01 = [PSCustomObject]@{ + 'Licenses' = $lic + } + $NewObject02.add($NewObject01) + } + Else { + $NewObject01 = [PSCustomObject]@{ + 'Licenses' = $textlic + } + $NewObject02.add($NewObject01) + } + } + Else { + $LastLogon = $Null + $NewObject01 = [PSCustomObject]@{ + 'Licenses' = $Null + } + $NewObject02.add($NewObject01) + } + + $ProxyAddresses = ($User | Select-Object -ExpandProperty ProxyAddresses) + If ($ProxyAddresses -ne $Null) { + Foreach ($Proxy in $ProxyAddresses) { + $ProxyB = $Proxy -split ":" | Select-Object -Last 1 + $ProxyA.add($ProxyB) + + } + $ProxyC = $ProxyA -join ", " + } + Else { + $ProxyC = $Null + } + + $Name = $User.DisplayName + $UPN = $User.UserPrincipalName + $UserLicenses = ($NewObject02 | Select-Object -ExpandProperty Licenses) -join ", " + $Enabled = $User.AccountEnabled + $ResetPW = Get-User $User.DisplayName | Select-Object -ExpandProperty ResetPasswordOnNextLogon + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'UserPrincipalName' = $UPN + 'Licenses' = $UserLicenses + 'Last Mailbox Logon' = $LastLogon + 'Reset Password at Next Logon' = $ResetPW + 'Enabled' = $Enabled + 'E-mail Addresses' = $ProxyC + } + + $usertable.add($obj) +} +If (($usertable).count -eq 0) { + $usertable = [PSCustomObject]@{ + 'Information' = 'Information: No Users were found in the tenant' + } +} + +Write-Host "Getting Shared Mailboxes..." -ForegroundColor Yellow +#Get all Shared Mailboxes +$SharedMailboxes = Get-Recipient -Resultsize unlimited | Where-Object { $_.RecipientTypeDetails -eq "SharedMailbox" } +Foreach ($SharedMailbox in $SharedMailboxes) { + $ProxyA = New-Object 'System.Collections.Generic.List[System.Object]' + $Name = $SharedMailbox.Name + $PrimEmail = $SharedMailbox.PrimarySmtpAddress + $ProxyAddresses = ($SharedMailbox | Where-Object { $_.EmailAddresses -notlike "*$PrimEmail*" } | Select-Object -ExpandProperty EmailAddresses) + If ($ProxyAddresses -ne $Null) { + Foreach ($ProxyAddress in $ProxyAddresses) { + $ProxyB = $ProxyAddress -split ":" | Select-Object -Last 1 + If ($ProxyB -eq $PrimEmail) { + $ProxyB = $Null + } + $ProxyA.add($ProxyB) + $ProxyC = $ProxyA + } + } + Else { + $ProxyC = $Null + } + + $ProxyF = ($ProxyC -join ", ").TrimEnd(", ") + + $obj = [PSCustomObject]@{ + 'Name' = $Name + 'Primary E-Mail' = $PrimEmail + 'E-mail Addresses' = $ProxyF + } + + + + $SharedMailboxTable.add($obj) + +} +If (($SharedMailboxTable).count -eq 0) { + $SharedMailboxTable = [PSCustomObject]@{ + 'Information' = 'Information: No Shared Mailboxes were found in the tenant' + } +} + +Write-Host "Getting Contacts..." -ForegroundColor Yellow +#Get all Contacts +$Contacts = Get-MailContact +#Split licenses at colon +Foreach ($Contact in $Contacts) { + + $ContactName = $Contact.DisplayName + $ContactPrimEmail = $Contact.PrimarySmtpAddress + + $objContact = [PSCustomObject]@{ + 'Name' = $ContactName + 'E-mail Address' = $ContactPrimEmail + } + + $ContactTable.add($objContact) + +} +If (($ContactTable).count -eq 0) { + $ContactTable = [PSCustomObject]@{ + 'Information' = 'Information: No Contacts were found in the tenant' + } +} + +Write-Host "Getting Mail Users..." -ForegroundColor Yellow +#Get all Mail Users +$MailUsers = Get-MailUser +foreach ($MailUser in $mailUsers) { + $MailArray = New-Object 'System.Collections.Generic.List[System.Object]' + $MailPrimEmail = $MailUser.PrimarySmtpAddress + $MailName = $MailUser.DisplayName + $MailEmailAddresses = ($MailUser.EmailAddresses | Where-Object { $_ -cnotmatch '^SMTP' }) + foreach ($MailEmailAddress in $MailEmailAddresses) { + $MailEmailAddressSplit = $MailEmailAddress -split ":" | Select-Object -Last 1 + $MailArray.add($MailEmailAddressSplit) + + + } + + $UserEmails = $MailArray -join ", " + + $obj = [PSCustomObject]@{ + 'Name' = $MailName + 'Primary E-Mail' = $MailPrimEmail + 'E-mail Addresses' = $UserEmails + } + + $ContactMailUserTable.add($obj) +} +If (($ContactMailUserTable).count -eq 0) { + $ContactMailUserTable = [PSCustomObject]@{ + 'Information' = 'Information: No Mail Users were found in the tenant' + } +} + +Write-Host "Getting Room Mailboxes..." -ForegroundColor Yellow +$Rooms = Get-Mailbox -ResultSize Unlimited -Filter '(RecipientTypeDetails -eq "RoomMailBox")' +Foreach ($Room in $Rooms) { + $RoomArray = New-Object 'System.Collections.Generic.List[System.Object]' + + $RoomName = $Room.DisplayName + $RoomPrimEmail = $Room.PrimarySmtpAddress + $RoomEmails = ($Room.EmailAddresses | Where-Object { $_ -cnotmatch '^SMTP' }) + foreach ($RoomEmail in $RoomEmails) { + $RoomEmailSplit = $RoomEmail -split ":" | Select-Object -Last 1 + $RoomArray.add($RoomEmailSplit) + } + $RoomEMailsF = $RoomArray -join ", " + + + $obj = [PSCustomObject]@{ + 'Name' = $RoomName + 'Primary E-Mail' = $RoomPrimEmail + 'E-mail Addresses' = $RoomEmailsF + } + + $RoomTable.add($obj) +} +If (($RoomTable).count -eq 0) { + $RoomTable = [PSCustomObject]@{ + 'Information' = 'Information: No Room Mailboxes were found in the tenant' + } +} + +Write-Host "Getting Equipment Mailboxes..." -ForegroundColor Yellow +$EquipMailboxes = Get-Mailbox -ResultSize Unlimited -Filter '(RecipientTypeDetails -eq "EquipmentMailBox")' +Foreach ($EquipMailbox in $EquipMailboxes) { + $EquipArray = New-Object 'System.Collections.Generic.List[System.Object]' + + $EquipName = $EquipMailbox.DisplayName + $EquipPrimEmail = $EquipMailbox.PrimarySmtpAddress + $EquipEmails = ($EquipMailbox.EmailAddresses | Where-Object { $_ -cnotmatch '^SMTP' }) + foreach ($EquipEmail in $EquipEmails) { + $EquipEmailSplit = $EquipEmail -split ":" | Select-Object -Last 1 + $EquipArray.add($EquipEmailSplit) + } + $EquipEMailsF = $EquipArray -join ", " + + $obj = [PSCustomObject]@{ + 'Name' = $EquipName + 'Primary E-Mail' = $EquipPrimEmail + 'E-mail Addresses' = $EquipEmailsF + } + + + $EquipTable.add($obj) +} +If (($EquipTable).count -eq 0) { + $EquipTable = [PSCustomObject]@{ + 'Information' = 'Information: No Equipment Mailboxes were found in the tenant' + } +} + +Write-Host "Generating HTML Report..." -ForegroundColor Yellow + +$tabarray = @('Dashboard', 'Admins', 'Users', 'Groups', 'Licenses', 'Shared Mailboxes', 'Contacts', 'Resources') + +#basic Properties +$PieObject2 = Get-HTMLPieChartObject +$PieObject2.Title = "Office 365 Total Licenses" +$PieObject2.Size.Height = 500 +$PieObject2.Size.width = 500 +$PieObject2.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObject2.ChartStyle.ColorSchemeName = "ColorScheme4" +#There are 8 generated schemes, randomly generated at runtime +$PieObject2.ChartStyle.ColorSchemeName = "Generated7" +#you can also ask for a random scheme. Which also happens if you have too many records for the scheme +$PieObject2.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObject2.DataDefinition.DataNameColumnName = 'Name' +$PieObject2.DataDefinition.DataValueColumnName = 'Total Amount' + +#basic Properties +$PieObject3 = Get-HTMLPieChartObject +$PieObject3.Title = "Office 365 Assigned Licenses" +$PieObject3.Size.Height = 500 +$PieObject3.Size.width = 500 +$PieObject3.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObject3.ChartStyle.ColorSchemeName = "ColorScheme4" +#There are 8 generated schemes, randomly generated at runtime +$PieObject3.ChartStyle.ColorSchemeName = "Generated5" +#you can also ask for a random scheme. Which also happens if you have too many records for the scheme +$PieObject3.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObject3.DataDefinition.DataNameColumnName = 'Name' +$PieObject3.DataDefinition.DataValueColumnName = 'Assigned Licenses' + +#basic Properties +$PieObject4 = Get-HTMLPieChartObject +$PieObject4.Title = "Office 365 Unassigned Licenses" +$PieObject4.Size.Height = 250 +$PieObject4.Size.width = 250 +$PieObject4.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObject4.ChartStyle.ColorSchemeName = "ColorScheme4" +#There are 8 generated schemes, randomly generated at runtime +$PieObject4.ChartStyle.ColorSchemeName = "Generated4" +#you can also ask for a random scheme. Which also happens if you have too many records for the scheme +$PieObject4.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObject4.DataDefinition.DataNameColumnName = 'Name' +$PieObject4.DataDefinition.DataValueColumnName = 'Unassigned Licenses' + +#basic Properties +$PieObjectGroupType = Get-HTMLPieChartObject +$PieObjectGroupType.Title = "Office 365 Groups" +$PieObjectGroupType.Size.Height = 250 +$PieObjectGroupType.Size.width = 250 +$PieObjectGroupType.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectGroupType.ChartStyle.ColorSchemeName = "ColorScheme4" +#There are 8 generated schemes, randomly generated at runtime +$PieObjectGroupType.ChartStyle.ColorSchemeName = "Generated8" +#you can also ask for a random scheme. Which also happens if you have too many records for the scheme +$PieObjectGroupType.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectGroupType.DataDefinition.DataNameColumnName = 'Name' +$PieObjectGroupType.DataDefinition.DataValueColumnName = 'Count' + +##--LICENSED AND UNLICENSED USERS PIE CHART--## +#basic Properties +$PieObjectULicense = Get-HTMLPieChartObject +$PieObjectULicense.Title = "License Status" +$PieObjectULicense.Size.Height = 250 +$PieObjectULicense.Size.width = 250 +$PieObjectULicense.ChartStyle.ChartType = 'doughnut' + +#These file exist in the module directoy, There are 4 schemes by default +$PieObjectULicense.ChartStyle.ColorSchemeName = "ColorScheme3" +#There are 8 generated schemes, randomly generated at runtime +$PieObjectULicense.ChartStyle.ColorSchemeName = "Generated3" +#you can also ask for a random scheme. Which also happens if you have too many records for the scheme +$PieObjectULicense.ChartStyle.ColorSchemeName = 'Random' + +#Data defintion you can reference any column from name and value from the dataset. +#Name and Count are the default to work with the Group function. +$PieObjectULicense.DataDefinition.DataNameColumnName = 'Name' +$PieObjectULicense.DataDefinition.DataValueColumnName = 'Count' + +$rpt = New-Object 'System.Collections.Generic.List[System.Object]' +$rpt += get-htmlopenpage -TitleText 'Office 365 Tenant Report' -LeftLogoString $CompanyLogo -RightLogoString $RightLogo + +$rpt += Get-HTMLTabHeader -TabNames $tabarray +$rpt += get-htmltabcontentopen -TabName $tabarray[0] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)) +$rpt += Get-HtmlContentOpen -HeaderText "Office 365 Dashboard" +$rpt += Get-HTMLContentOpen -HeaderText "Company Information" +$rpt += Get-HtmlContentTable $CompanyInfoTable +$rpt += Get-HTMLContentClose + +$rpt += get-HtmlColumn1of2 +$rpt += Get-HtmlContentOpen -BackgroundShade 1 -HeaderText 'Global Administrators' +$rpt += get-htmlcontentdatatable $GlobalAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose +$rpt += get-htmlColumn2of2 +$rpt += Get-HtmlContentOpen -HeaderText 'Users With Strong Password Enforcement Disabled' +$rpt += get-htmlcontentdatatable $StrongPasswordTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose + +$rpt += Get-HTMLContentOpen -HeaderText "Domains" +$rpt += Get-HtmlContentTable $DomainTable +$rpt += Get-HTMLContentClose + +$rpt += Get-HtmlContentClose +$rpt += get-htmltabcontentclose + +$rpt += get-htmltabcontentopen -TabName $tabarray[1] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)) +$rpt += Get-HtmlContentOpen -HeaderText "Role Assignments" + +$rpt += get-HtmlColumn1of2 +$rpt += Get-HtmlContentOpen -BackgroundShade 1 -HeaderText 'Privileged Role Administrators' +$rpt += get-htmlcontentdatatable $PrivAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose +$rpt += get-htmlColumn2of2 +$rpt += Get-HtmlContentOpen -HeaderText 'Exchange Administrators' +$rpt += get-htmlcontentdatatable $ExchangeAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose + +$rpt += get-HtmlColumn1of2 +$rpt += Get-HtmlContentOpen -BackgroundShade 1 -HeaderText 'User Account Administrators' +$rpt += get-htmlcontentdatatable $UserAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose +$rpt += get-htmlColumn2of2 +$rpt += Get-HtmlContentOpen -HeaderText 'Helpdesk Administrators' +$rpt += get-htmlcontentdatatable $TechExchAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose + +$rpt += get-HtmlColumn1of2 +$rpt += Get-HtmlContentOpen -BackgroundShade 1 -HeaderText 'SharePoint Administrators' +$rpt += get-htmlcontentdatatable $SharePointAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose +$rpt += get-htmlColumn2of2 +$rpt += Get-HtmlContentOpen -HeaderText 'Skype Administrators' +$rpt += get-htmlcontentdatatable $SkypeAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose + +$rpt += get-HtmlColumn1of2 +$rpt += Get-HtmlContentOpen -BackgroundShade 1 -HeaderText 'CRM Service Administrators' +$rpt += get-htmlcontentdatatable $CRMAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose +$rpt += get-htmlColumn2of2 +$rpt += Get-HtmlContentOpen -HeaderText 'Power BI Administrators' +$rpt += get-htmlcontentdatatable $PowerBIAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose + +$rpt += get-HtmlColumn1of2 +$rpt += Get-HtmlContentOpen -BackgroundShade 1 -HeaderText 'Service Support Administrators' +$rpt += get-htmlcontentdatatable $ServiceAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose +$rpt += get-htmlColumn2of2 +$rpt += Get-HtmlContentOpen -HeaderText 'Billing Administrators' +$rpt += get-htmlcontentdatatable $BillingAdminTable -HideFooter +$rpt += Get-HtmlContentClose +$rpt += get-htmlColumnClose +$rpt += Get-HtmlContentClose +$rpt += get-htmltabcontentclose + +$rpt += get-htmltabcontentopen -TabName $tabarray[2] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)) +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Users" +$rpt += get-htmlcontentdatatable $UserTable -HideFooter +$rpt += Get-HTMLContentClose +$rpt += Get-HTMLContentOpen -HeaderText "Licensed & Unlicensed Users Chart" +$rpt += Get-HTMLPieChart -ChartObject $PieObjectULicense -DataSet $IsLicensedUsersTable +$rpt += Get-HTMLContentClose +$rpt += get-htmltabcontentclose + +$rpt += get-htmltabcontentopen -TabName $tabarray[3] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)) +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Groups" +$rpt += get-htmlcontentdatatable $Table -HideFooter +$rpt += Get-HTMLContentClose +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Groups Chart" +$rpt += Get-HTMLPieChart -ChartObject $PieObjectGroupType -DataSet $GroupTypetable +$rpt += Get-HTMLContentClose +$rpt += get-htmltabcontentclose + +$rpt += get-htmltabcontentopen -TabName $tabarray[4] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)) +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Licenses" +$rpt += get-htmlcontentdatatable $LicenseTable -HideFooter +$rpt += Get-HTMLContentClose +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Licensing Charts" +$rpt += Get-HTMLColumnOpen -ColumnNumber 1 -ColumnCount 2 +$rpt += Get-HTMLPieChart -ChartObject $PieObject2 -DataSet $licensetable +$rpt += Get-HTMLColumnClose +$rpt += Get-HTMLColumnOpen -ColumnNumber 2 -ColumnCount 2 +$rpt += Get-HTMLPieChart -ChartObject $PieObject3 -DataSet $licensetable +$rpt += Get-HTMLColumnClose +$rpt += Get-HTMLContentclose +$rpt += get-htmltabcontentclose + +$rpt += get-htmltabcontentopen -TabName $tabarray[5] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)) +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Shared Mailboxes" +$rpt += get-htmlcontentdatatable $SharedMailboxTable -HideFooter +$rpt += Get-HTMLContentClose +$rpt += get-htmltabcontentclose + +$rpt += get-htmltabcontentopen -TabName $tabarray[6] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)) +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Contacts" +$rpt += get-htmlcontentdatatable $ContactTable -HideFooter +$rpt += Get-HTMLContentClose +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Mail Users" +$rpt += get-htmlcontentdatatable $ContactMailUserTable -HideFooter +$rpt += Get-HTMLContentClose +$rpt += get-htmltabcontentclose + +$rpt += get-htmltabcontentopen -TabName $tabarray[7] -TabHeading ("Report: " + (Get-Date -Format MM-dd-yyyy)) +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Room Mailboxes" +$rpt += get-htmlcontentdatatable $RoomTable -HideFooter +$rpt += Get-HTMLContentClose +$rpt += Get-HTMLContentOpen -HeaderText "Office 365 Equipment Mailboxes" +$rpt += get-htmlcontentdatatable $EquipTable -HideFooter +$rpt += Get-HTMLContentClose +$rpt += get-htmltabcontentclose + + +$rpt += Get-HTMLClosePage + +$Day = (Get-Date).Day +$Month = (Get-Date).Month +$Year = (Get-Date).Year +$ReportName = ( "$Month" + "-" + "$Day" + "-" + "$Year" + "-" + "O365 Tenant Report") +Save-HTMLReport -ReportContent $rpt -ShowReport -ReportName $ReportName -ReportPath $ReportSavePath diff --git a/Azure Active Directory/README.md b/Azure Active Directory/README.md new file mode 100644 index 0000000..a4a5998 --- /dev/null +++ b/Azure Active Directory/README.md @@ -0,0 +1 @@ +# Azure Active Directory diff --git a/Azure Active Directory/Set-MsolUsersPassword.ps1 b/Azure Active Directory/Set-MsolUsersPassword.ps1 new file mode 100644 index 0000000..45b41e8 --- /dev/null +++ b/Azure Active Directory/Set-MsolUsersPassword.ps1 @@ -0,0 +1,10 @@ +# Import active directory module for running AD cmdlets +Import-Module MSOnline + +#Store the data from ADUsers.csv in the $ADUsers variable +$AADUsers = Import-csv "Templates\Import-MsolUsers.csv" -Delimiter ";" -Encoding UTF8 + +#Loop through each row containing user details in the CSV file +foreach ($User in $AADUsers) { + Set-MsolUserPassword -UserPrincipalName $User.Username -NewPassword $user.password -ForceChangePassword $false +} diff --git a/Azure Active Directory/Set-Upn.ps1 b/Azure Active Directory/Set-Upn.ps1 new file mode 100644 index 0000000..440b441 --- /dev/null +++ b/Azure Active Directory/Set-Upn.ps1 @@ -0,0 +1,17 @@ +$creduser = Read-Host "Admin email" +$credpassword = Read-Host "Admin Password" + +[securestring]$secStringPassword = ConvertTo-SecureString $credpassword -AsPlainText -Force +[pscredential]$credObject = New-Object System.Management.Automation.PSCredential ($creduser, $secStringPassword) + +$Users = Import-Csv -Path "Set-Upn.csv" -Delimiter ";" -Encoding UTF8 + +Connect-MsolService -Credential $credObject + +foreach ($User in $Users) { + + Write-host "Changement de $($User.Upn) pour $($User.NewUpn)" + + Set-MsolUserPrincipalName -UserPrincipalName $($User.Upn) -NewUserPrincipalName $($User.NewUpn) + +} \ No newline at end of file diff --git a/Azure Active Directory/Set-UsersLIcences.ps1 b/Azure Active Directory/Set-UsersLIcences.ps1 new file mode 100644 index 0000000..2bcb1cd --- /dev/null +++ b/Azure Active Directory/Set-UsersLIcences.ps1 @@ -0,0 +1,26 @@ +# Importer le fichier CSV +$users = Import-csv "Templates\Import-MsolUsers.csv" -Delimiter ";" -Encoding UTF8 + +# Get-MsolAccountSku + +# Renseigner le SKU de la licence +$accountSkuId = "reseller-account:O365_BUSINESS_PREMIUM" + +# Renseigner les options déactivées +# Get-MsolAccountSku | select -ExpandProperty ServiceStatus +$BannedList = @("MICROSOFTBOOKINGS", "KAIZALA_O365_P2", "Deskless", "PROJECTWORKMANAGEMENT", "POWERAPPS_O365_P1", "DYN365BC_MS_INVOICING", "O365_SB_Relationship_Management", "STREAM_O365_SMB", "SWAY", "YAMMER_ENTERPRISE") + +$licenseOptions = New-MsolLicenseOptions -AccountSkuId $accountSkuId -DisabledPlans $BannedList + +# Définir les licences pour les utilisateurs +ForEach ($user in $users) { + + $upn = $user.Username + + Set-MsolUserLicense -UserPrincipalName $upn -AddLicenses $accountSkuId + + Start-Sleep -Seconds 2 + + Set-MsolUserLicense -UserPrincipalName $upn -LicenseOptions $licenseOptions + +} \ No newline at end of file diff --git a/Azure Active Directory/Templates/Import-MsolUsers.csv b/Azure Active Directory/Templates/Import-MsolUsers.csv new file mode 100644 index 0000000..0140300 --- /dev/null +++ b/Azure Active Directory/Templates/Import-MsolUsers.csv @@ -0,0 +1,6 @@ +FirstName;LastName;AccountSkuId;UsageLocation;Username;Password;City;Department +Paul;Dupont;reseller-account:O365_BUSINESS_PREMIUM;FR;p.dupont@hitea.fr;Test123Test1;AGEN; +Bernard;Durand;reseller-account:O365_BUSINESS_PREMIUM;FR;b.durand@hitea.fr;Test123Test2;AGEN; +David;Bellier;reseller-account:O365_BUSINESS_PREMIUM;FR;d.bellier@hitea.fr;Test123Test3;AGEN; +Joël;Tartas;reseller-account:O365_BUSINESS_PREMIUM;FR;j.tartas@hitea.fr;Test123Test4;AGEN; +Benoît;Canu;reseller-account:O365_BUSINESS_PREMIUM;FR;b.canu@hitea.fr;Test123Test5;AGEN; diff --git a/Azure Active Directory/Templates/Set-Upn.csv b/Azure Active Directory/Templates/Set-Upn.csv new file mode 100644 index 0000000..2e4f43a --- /dev/null +++ b/Azure Active Directory/Templates/Set-Upn.csv @@ -0,0 +1,4 @@ +Upn;NewUpn +user1@olddomain.com;user1@newdomain.com +user2@olddomain.com;user2@newdomain.com +user3@olddomain.com;user3@newdomain.com diff --git a/Centreon/Generation CLAPI.ps1 b/Centreon/Generation CLAPI.ps1 new file mode 100644 index 0000000..0991cde --- /dev/null +++ b/Centreon/Generation CLAPI.ps1 @@ -0,0 +1,22 @@ + + + +foreach($line in Get-Content "D:\TEMP\Centreon\liste-2.txt") { + if($line -match $regex){ + +$ParamsCLAPI = @" + +cd / + +cd /usr/share/centreon/bin + +./centreon -u admin -p 17-F1ch/0rga-20 -o SERVICE -a add -v "SRV-CLUSTER;CRPCEN : Fichier Libs Authentic;Tomcat_Authentic_:_Fichiers" +./centreon -u admin -p 17-F1ch/0rga-20 -o SERVICE -a setparam -v "SRV-CLUSTER;CRPCEN : Fichier Libs Authentic;check_command_arguments;!D:/Data/Client/NO05026/AppsRedact/WEB-INF/lib!268!1" + + +"@ + + New-Item "D:\TEMP\Centreon\$line-STATES.sh" -type file -force -value $ParamsCLAPI + (Get-Content "D:\TEMP\Centreon\$line-STATES.sh") -replace "CRPCEN","$line" | Set-Content "D:\TEMP\Centreon\$line-STATES.sh" + } +} diff --git a/DNS/Check Server DNS Settings.ps1 b/DNS/Check Server DNS Settings.ps1 new file mode 100644 index 0000000..04729ad --- /dev/null +++ b/DNS/Check Server DNS Settings.ps1 @@ -0,0 +1,104 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +param +( + [alias("i")] + [string]$inputfile = $(read-host -Prompt "Enter the full path to the list of the CSV input file") + +) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +cls + +#Initialized the output file +$TimeStamp1 = $(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")) +$output = "C:\temp\ExportedDNSSetting$TimeStamp1.csv" + +Write-Host "--->Generating the new output file now...... $output " +New-Item -Path $output -ItemType File > $null +Add-Content -Path $output -Value '"Hostname","Adapter Index","IP Address","DNSServerSetting"' + + +#Generate the DNS settings output +Import-Csv $inputfile | foreach { + +$AdapaterSettings = Get-wmiobject -ClassName Win32_NetworkAdapterConfiguration -ComputerName $_.hostname -ErrorAction SilentlyContinue + +if($AdapaterSettings -eq $null) { + + Write-Host "--->Collect the DNS Configuration Failed for server -" $_.hostname -ForegroundColor Red + + $NewLine = "{0},{1},{2},{3}" ` + -f $_.hostname,` + $null,` + $null,` + "This server cannot be connected!!!" + + $NewLine | Add-Content -Path $output + + }else { + + Write-Host "--->Collect the DNS Configuration successfully for server -" $_.hostname -ForegroundColor Green + + Foreach ($ThisAdapaterSetting in $AdapaterSettings) { + + $NewLine = "{0},{1},{2},{3}" ` + -f $_.hostname,` + $ThisAdapaterSetting.Index,` + [string]$ThisAdapaterSetting.IPAddress,` + [string]$ThisAdapaterSetting.DNSServerSearchOrder + + $NewLine | Add-Content -Path $output + + } + } + +} + +Write-Host "--->Data Collection is completed, the result is at $output" \ No newline at end of file diff --git a/Exchange Online/Import-SharedMailbox.ps1 b/Exchange Online/Import-SharedMailbox.ps1 new file mode 100644 index 0000000..c2096fb --- /dev/null +++ b/Exchange Online/Import-SharedMailbox.ps1 @@ -0,0 +1,33 @@ +# Importer le module Exchange Online +Import-Module ExchangeOnlineManagement + +#Store the data from ADUsers.csv in the $ADUsers variable +$Mailboxes = Import-csv "Templates\Import-SharedMailbox.csv" -Delimiter ";" -Encoding UTF8 + +#Loop through each row containing user details in the CSV file +foreach ($Mailbox in $Mailboxes) { + + if ((Get-MsolUser -UserPrincipalName $Mailbox.username -ErrorAction SilentlyContinue)) { + Write-Warning "A Shared Mailbox with UPN $($Mailbox.username) already exist in Azure Active Directory." + } + else { + try { + New-Mailbox -Shared -Name $Mailbox.Name -DisplayName $Mailbox.Name -Alias $Mailbox.Alias -PrimarySmtpAddress $Mailbox.username + Write-Host "The Shared Mailbox $($Mailbox.Name) ($($Mailbox.username)) was created." -ForegroundColor Green + } + catch { + Write-Error "The Shared Mailbox $($Mailbox.Name) ($($Mailbox.username)) was not created." + } + + foreach ($Member in ($Mailbox.Members).split(",")) { + try { + Add-MailboxPermission $Mailbox.username -User $Member -AccessRights FullAccess -InheritanceType all + Write-Host "$($Members) added to the Shared Mailbox $($Mailbox.username)." + } + catch { + Write-Error "$($Members) not added to the Shared Mailbox $($Mailbox.username)." + } + } + + } +} \ No newline at end of file diff --git a/Exchange Online/Init-MailBox.ps1 b/Exchange Online/Init-MailBox.ps1 new file mode 100644 index 0000000..a65997c --- /dev/null +++ b/Exchange Online/Init-MailBox.ps1 @@ -0,0 +1,6 @@ +# Connexion Exchange Online +Connect-ExchangeOnline + +# Définir les options de base comme la langue et le fuseau horaire + +Get-Mailbox -ResultSize unlimited | Set-MailboxRegionalConfiguration -Language fr-FR -TimeZone "Romance Standard Time" -DateFormat "dd/MM/yyyy" -LocalizeDefaultFolderName:$true \ No newline at end of file diff --git a/Exchange Online/Manage-Calendar.ps1 b/Exchange Online/Manage-Calendar.ps1 new file mode 100644 index 0000000..72f3049 --- /dev/null +++ b/Exchange Online/Manage-Calendar.ps1 @@ -0,0 +1,39 @@ +$Compte = Read-Host "Choisir un compte (user@domaine.fr)" +$Action = Read-Host "V pour voir ou M pour voir et modifier" +# $Excluded = Read-Host "Compte Exclus séparé par des virgules" +# Where-Object Identity -notlike "*Meeting4Display*" | Where-Object Identity -notlike "*notification*" +$Excluded = @('*Meeting4Display*', '*notification*') + +$AuditMailboxe = Get-Mailbox -Identity $Compte +$Mailboxes = Get-Mailbox -ResultSize Unlimited | Where-Object RecipientTypeDetails -eq "UserMailbox" | Where-Object { $Excluded -notcontains $_.Identity } + +foreach ($Bal in $Mailboxes) { + + if ($BAL.Languages -like "*FR*") { + $Calendar = Get-MailboxFolderPermission -Identity "$($BAL.PrimarySMTPAddress):\Calendrier" -ErrorAction SilentlyContinue | Select Identity, User, AccessRights + } + else { + $Calendar = Get-MailboxFolderPermission -Identity "$($BAL.PrimarySMTPAddress):\Calendar" -ErrorAction SilentlyContinue | Select Identity, User, AccessRights + } + + if ($Calendar.User.DisplayName -notcontains $AuditMailboxe.Identity) { + Write-Host "$($AuditMailboxe.Identity) n'a pas acces au Calendrier de $($Bal.Identity)" -ForegroundColor Yellow + if ($Action -eq "M") { + + if ($BAL.Languages -like "*FR*") { + + Add-MailboxFolderPermission -Identity ($Bal.Identity + ":\Calendrier") -User $AuditMailboxe.UserPrincipalName -AccessRights Reviewer + + } + else { + + Add-MailboxFolderPermission -Identity ($Bal.Identity + ":\Calendar") -User $AuditMailboxe.UserPrincipalName -AccessRights Reviewer + + } + } + } + else { + Write-Host "$($AuditMailboxe.Identity) a acces au Calendrier de $($Bal.Identity)" -ForegroundColor Green + } + +} \ No newline at end of file diff --git a/Exchange Online/README.md b/Exchange Online/README.md new file mode 100644 index 0000000..3999184 --- /dev/null +++ b/Exchange Online/README.md @@ -0,0 +1 @@ +# Exchange Online diff --git a/Exchange Online/Templates/Import-SharedMailbox.csv b/Exchange Online/Templates/Import-SharedMailbox.csv new file mode 100644 index 0000000..0b8dcff --- /dev/null +++ b/Exchange Online/Templates/Import-SharedMailbox.csv @@ -0,0 +1,4 @@ +Name;alias;username;members +Contact ;contact;contact@hitea.fr;p.dupont@hitea.fr +SAV;sav;sav@hitea.fr;p.dupont@hitea.fr,d.bellier@hitea.fr +Marketing;marketing;marketing@hitea.fr;b.canu@hitea.fr,j.tartas@hitea.fr diff --git a/Exchange Online/Upload-Pst.ps1 b/Exchange Online/Upload-Pst.ps1 new file mode 100644 index 0000000..77ee9c9 --- /dev/null +++ b/Exchange Online/Upload-Pst.ps1 @@ -0,0 +1,16 @@ +#Il faut installer l'outil AZCopy + +#Se rendre dans le repertoire d'AZCopy +cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy" + +#Définir la source des PST +$PSTFile = "\\SRV01\PSTImport" + +#Définir l'URL du blob Azure +$AzureStore = "AZ_BLOB_URL" + +#Définir le chemin du fichier log +$LogFile = "C:\importPST_log.txt" + +#Lancer l'upload vers Azure +& .\AzCopy.exe /Source:$PSTFile /Dest:$AzureStore /V:$LogFile /Y \ No newline at end of file diff --git a/Exchange Online/audit_mail.ps1 b/Exchange Online/audit_mail.ps1 new file mode 100644 index 0000000..867612f --- /dev/null +++ b/Exchange Online/audit_mail.ps1 @@ -0,0 +1,45 @@ +param ([PARAMETER(Mandatory = $TRUE, ValueFromPipeline = $FALSE)] + [string]$Mailbox, + [PARAMETER(Mandatory = $TRUE, ValueFromPipeline = $FALSE)] + [string]$StartDate, + [PARAMETER(Mandatory = $TRUE, ValueFromPipeline = $FALSE)] + [string]$EndDate, + [PARAMETER(Mandatory = $FALSE, ValueFromPipeline = $FALSE)] + [string]$Subject, + [PARAMETER(Mandatory = $False, ValueFromPipeline = $FALSE)] + [switch]$IncludeFolderBind, + [PARAMETER(Mandatory = $False, ValueFromPipeline = $FALSE)] + [switch]$ReturnObject) +BEGIN { + [string[]]$LogParameters = @('Operation', 'LogonUserDisplayName', 'LastAccessed', 'DestFolderPathName', 'FolderPathName', 'ClientInfoString', 'ClientIPAddress', 'ClientMachineName', 'ClientProcessName', 'ClientVersion', 'LogonType', 'MailboxResolvedOwnerName', 'OperationResult') +} +END { + if ($ReturnObject) + { return $SearchResults } + elseif ($SearchResults.count -gt 0) { + $Date = get-date -Format yyMMdd_HHmmss + $OutFileName = "AuditLogResults$Date.csv" + write-host + write-host -fore green "Posting results to file: $OutfileName" + $SearchResults | export-csv $OutFileName -notypeinformation -encoding UTF8 -Delimiter ";" + } +} +PROCESS { + write-host -fore green 'Searching Mailbox Audit Logs...' + $SearchResults = @(search-mailboxAuditLog $Mailbox -StartDate $StartDate -EndDate $EndDate -LogonTypes Owner, Admin, Delegate -ShowDetails -resultsize 50000) + write-host -fore green '$($SearchREsults.Count) Total entries Found' + if (-not $IncludeFolderBind) { + write-host -fore green 'Removing FolderBind operations.' + $SearchResults = @($SearchResults | ? { $_.Operation -notlike 'FolderBind' }) + write-host -fore green 'Filtered to $($SearchREsults.Count) Entries' + } + $SearchResults = @($SearchResults | select ($LogParameters + @{Name = 'Subject'; e = { if (($_.SourceItems.Count -eq 0) -or ($_.SourceItems.Count -eq $null)) { $_.ItemSubject } else { ($_.SourceItems[0].SourceItemSubject).TrimStart(' ') } } }, + @{Name = 'CrossMailboxOp'; e = { if (@('SendAs', 'Create', 'Update') -contains $_.Operation) { 'N/A' } else { $_.CrossMailboxOperation } } })) + $LogParameters = @('Subject') + $LogParameters + @('CrossMailboxOp') + If ($Subject -ne '' -and $Subject -ne $null) { + write-host -fore green 'Searching for Subject: $Subject' + $SearchResults = @($SearchResults | ? { $_.Subject -match $Subject -or $_.Subject -eq $Subject }) + write-host -fore green 'Filtered to $($SearchREsults.Count) Entries' + } + $SearchResults = @($SearchResults | select $LogParameters) +} \ No newline at end of file diff --git a/Exchange Server/Export-Pst.ps1 b/Exchange Server/Export-Pst.ps1 new file mode 100644 index 0000000..f23be2e --- /dev/null +++ b/Exchange Server/Export-Pst.ps1 @@ -0,0 +1,28 @@ +#Tester sur Exchange Server 2010 + +#Atribuer le rôle pour les exports +New-ManagementRoleAssignment –Role “Mailbox Import Export” –User AD\Administrator + +#Exporter toutes les boites +$Export = Get-Mailbox + +#Exporter un liste de BAL +$Export = Get-Content .\Mailbox.txt + +#Lancer les exports vers un dossier partagé +$Export | % { $_ | New-MailboxExportRequest -FilePath "\\\\$($_.alias).pst" } + +#Vérifier l'état des exports en cours +Get-MailboxExportRequest | Get-MailboxExportRequestStatistics + +#Supprimer les export terminés +Get-MailboxExportRequest | where { $_.status -eq "Completed" } | Remove-MailboxExportRequest + +#Augmenter le nombre d'erreurs acceptées +Get-MailboxExportRequest -Status Failed | Set-MailboxExportRequest -BadItemLimit 500 + +#Redémarrer les exports en erreur +Get-MailboxExportRequest -Status Failed | Resume-MailboxExportRequest + +#Créer un rapport d'erreurs détaillé +Get-MailboxExportRequest -Status Failed | Get-MailboxExportRequestStatistics -IncludeReport | FL > C:\FILEPATH\report.txt \ No newline at end of file diff --git a/Exchange Server/README.md b/Exchange Server/README.md new file mode 100644 index 0000000..33add2d --- /dev/null +++ b/Exchange Server/README.md @@ -0,0 +1 @@ +# Exchange Server diff --git a/Exchange Server/Restart-ExchServices.ps1 b/Exchange Server/Restart-ExchServices.ps1 new file mode 100644 index 0000000..bf8ca6f --- /dev/null +++ b/Exchange Server/Restart-ExchServices.ps1 @@ -0,0 +1,9 @@ +# Obtenir la liste des services Exchange qui sont démarrer + +$services = Get-Service | ? { $_.name -like "MSExchange*" -and $_.Status -eq "Running" } + +# Redémarrer les services + +foreach ($service in $services) { + Restart-Service $service.name -Force +} \ No newline at end of file diff --git a/Exchange/ExchangeEnvironmentReport.ps1 b/Exchange/ExchangeEnvironmentReport.ps1 new file mode 100644 index 0000000..daca74a --- /dev/null +++ b/Exchange/ExchangeEnvironmentReport.ps1 @@ -0,0 +1,1133 @@ +<# + .SYNOPSIS + Creates a HTML Report describing the Exchange environment + + Steve Goodman + + THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE + RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER. + + Version 1.6.2 + + .DESCRIPTION + + This script creates a HTML report showing the following information about an Exchange + 2016, 2013, 2010 and to a lesser extent, 2007 and 2003, environment. + + The following is shown: + + * Report Generation Time + * Total Servers per Exchange Version (2003 > 2010 or 2007 > 2016) + * Total Mailboxes per Exchange Version, Office 365 and Organisation + * Total Roles in the environment + + Then, per site: + * Total Mailboxes per site + * Internal, External and CAS Array Hostnames + * Exchange Servers with: + o Exchange Server Version + o Service Pack + o Update Rollup and rollup version + o Roles installed on server and mailbox counts + o OS Version and Service Pack + + Then, per Database availability group (Exchange 2010/2013/2016): + * Total members per DAG + * Member list + * Databases, detailing: + o Mailbox Count and Average Size + o Archive Mailbox Count and Average Size (Only shown if DAG includes Archive Mailboxes) + o Database Size and whitespace + o Database and log disk free + o Last Full Backup (Only shown if one or more DAG database has been backed up) + o Circular Logging Enabled (Only shown if one or more DAG database has Circular Logging enabled) + o Mailbox server hosting active copy + o List of mailbox servers hosting copies and number of copies + + Finally, per Database (Non DAG DBs/Exchange 2007/Exchange 2003) + * Databases, detailing: + o Storage Group (if applicable) and DB name + o Server hosting database + o Mailbox Count and Average Size + o Archive Mailbox Count and Average Size (Only shown if DAG includes Archive Mailboxes) + o Database Size and whitespace + o Database and log disk free + o Last Full Backup (Only shown if one or more DAG database has been backed up) + o Circular Logging Enabled (Only shown if one or more DAG database has Circular Logging enabled) + + This does not detail public folder infrastructure, or examine Exchange 2007/2003 CCR/SCC clusters + (although it attempts to detect Clustered Exchange 2007/2003 servers, signified by ClusMBX). + + IMPORTANT NOTE: The script requires WMI and Remote Registry access to Exchange servers from the server + it is run from to determine OS version, Update Rollup, Exchange 2007/2003 cluster and DB size information. + + .PARAMETER HTMLReport + Filename to write HTML Report to + + .PARAMETER SendMail + Send Mail after completion. Set to $True to enable. If enabled, -MailFrom, -MailTo, -MailServer are mandatory + + .PARAMETER MailFrom + Email address to send from. Passed directly to Send-MailMessage as -From + + .PARAMETER MailTo + Email address to send to. Passed directly to Send-MailMessage as -To + + .PARAMETER MailServer + SMTP Mail server to attempt to send through. Passed directly to Send-MailMessage as -SmtpServer + + .PARAMETER ScheduleAs + Attempt to schedule the command just executed for 10PM nightly. Specify the username here, schtasks (under the hood) will ask for a password later. + + .PARAMETER ViewEntireForest + By default, true. Set the option in Exchange 2007 or 2010 to view all Exchange servers and recipients in the forest. + + .PARAMETER ServerFilter + Use a text based string to filter Exchange Servers by, e.g. NL-* - Note the use of the wildcard (*) character to allow for multiple matches. + + .EXAMPLE + Generate the HTML report + .\ExchangeEnvironmentReport.ps1 -HTMLReport .\report.html -SendMail $True -MailFrom "Rapports@cloud-fichorga.fr" -MailTo "hcornet@fichorga.fr" -MailServer 10.101.10.2 + .\ExchangeEnvironmentReport.ps1 -HTMLReport .\report.html -SendMail $True -MailFrom "Rapports@cloud-fichorga.fr" -MailTo "jmdefossez@fichorga.fr" -MailServer 10.101.10.2 + C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe + -File D:\Informatique\Rapports-MailBox.ps1 + #> +param( + [parameter(Position=0,Mandatory=$true,ValueFromPipeline=$false,HelpMessage='Filename to write HTML report to')][string]$HTMLReport, + [parameter(Position=1,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Send Mail ($True/$False)')][bool]$SendMail=$false, + [parameter(Position=2,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Mail From')][string]$MailFrom, + [parameter(Position=3,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Mail To')]$MailTo, + [parameter(Position=4,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Mail Server')][string]$MailServer, + [parameter(Position=4,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Schedule as user')][string]$ScheduleAs, + [parameter(Position=5,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Change view to entire forest')][bool]$ViewEntireForest=$true, + [parameter(Position=5,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Server Name Filter (eg NL-*)')][string]$ServerFilter="*" + ) + +# Sub-Function to Get Database Information. Shorter than expected.. +function _GetDAG +{ + param($DAG) + @{Name = $DAG.Name.ToUpper() + MemberCount = $DAG.Servers.Count + Members = [array]($DAG.Servers | % { $_.Name }) + Databases = @() + } +} + +# Sub-Function to Get Database Information +function _GetDB +{ + param($Database,$ExchangeEnvironment,$Mailboxes,$ArchiveMailboxes,$E2010) + + # Circular Logging, Last Full Backup + if ($Database.CircularLoggingEnabled) { $CircularLoggingEnabled="Yes" } else { $CircularLoggingEnabled = "No" } + if ($Database.LastFullBackup) { $LastFullBackup=$Database.LastFullBackup.ToString() } else { $LastFullBackup = "Not Available" } + + # Mailbox Average Sizes + $MailboxStatistics = [array]($ExchangeEnvironment.Servers[$Database.Server.Name].MailboxStatistics | Where {$_.Database -eq $Database.Identity}) + if ($MailboxStatistics) + { + [long]$MailboxItemSizeB = 0 + $MailboxStatistics | %{ $MailboxItemSizeB+=$_.TotalItemSizeB } + [long]$MailboxAverageSize = $MailboxItemSizeB / $MailboxStatistics.Count + } else { + $MailboxAverageSize = 0 + } + + # Free Disk Space Percentage + if ($ExchangeEnvironment.Servers[$Database.Server.Name].Disks) + { + foreach ($Disk in $ExchangeEnvironment.Servers[$Database.Server.Name].Disks) + { + if ($Database.EdbFilePath.PathName -like "$($Disk.Name)*") + { + $FreeDatabaseDiskSpace = $Disk.FreeSpace / $Disk.Capacity * 100 + } + if ($Database.ExchangeVersion.ExchangeBuild.Major -ge 14) + { + if ($Database.LogFolderPath.PathName -like "$($Disk.Name)*") + { + $FreeLogDiskSpace = $Disk.FreeSpace / $Disk.Capacity * 100 + } + } else { + $StorageGroupDN = $Database.DistinguishedName.Replace("CN=$($Database.Name),","") + $Adsi=[adsi]"LDAP://$($Database.OriginatingServer)/$($StorageGroupDN)" + if ($Adsi.msExchESEParamLogFilePath -like "$($Disk.Name)*") + { + $FreeLogDiskSpace = $Disk.FreeSpace / $Disk.Capacity * 100 + } + } + } + } else { + $FreeLogDiskSpace=$null + $FreeDatabaseDiskSpace=$null + } + + if ($Database.ExchangeVersion.ExchangeBuild.Major -ge 14 -and $E2010) + { + # Exchange 2010 Database Only + $CopyCount = [int]$Database.Servers.Count + if ($Database.MasterServerOrAvailabilityGroup.Name -ne $Database.Server.Name) + { + $Copies = [array]($Database.Servers | % { $_.Name }) + } else { + $Copies = @() + } + # Archive Info + $ArchiveMailboxCount = [int]([array]($ArchiveMailboxes | Where {$_.ArchiveDatabase -eq $Database.Name})).Count + $ArchiveStatistics = [array]($ArchiveMailboxes | Where {$_.ArchiveDatabase -eq $Database.Name} | Get-MailboxStatistics -Archive ) + if ($ArchiveStatistics) + { + [long]$ArchiveItemSizeB = 0 + $ArchiveStatistics | %{ $ArchiveItemSizeB+=$_.TotalItemSize.Value.ToBytes() } + [long]$ArchiveAverageSize = $ArchiveItemSizeB / $ArchiveStatistics.Count + } else { + $ArchiveAverageSize = 0 + } + # DB Size / Whitespace Info + [long]$Size = $Database.DatabaseSize.ToBytes() + [long]$Whitespace = $Database.AvailableNewMailboxSpace.ToBytes() + $StorageGroup = $null + + } else { + $ArchiveMailboxCount = 0 + $CopyCount = 0 + $Copies = @() + # 2003 & 2007, Use WMI (Based on code by Gary Siepser, http://bit.ly/kWWMb3) + $Size = [long](get-wmiobject cim_datafile -computername $Database.Server.Name -filter ('name=''' + $Database.edbfilepath.pathname.replace("\","\\") + '''')).filesize + if (!$Size) + { + Write-Warning "Cannot detect database size via WMI for $($Database.Server.Name)" + [long]$Size = 0 + [long]$Whitespace = 0 + } else { + [long]$MailboxDeletedItemSizeB = 0 + if ($MailboxStatistics) + { + $MailboxStatistics | %{ $MailboxDeletedItemSizeB+=$_.TotalDeletedItemSizeB } + } + $Whitespace = $Size - $MailboxItemSizeB - $MailboxDeletedItemSizeB + if ($Whitespace -lt 0) { $Whitespace = 0 } + } + $StorageGroup =$Database.DistinguishedName.Split(",")[1].Replace("CN=","") + } + + @{Name = $Database.Name + StorageGroup = $StorageGroup + ActiveOwner = $Database.Server.Name.ToUpper() + MailboxCount = [long]([array]($Mailboxes | Where {$_.Database -eq $Database.Identity})).Count + MailboxAverageSize = $MailboxAverageSize + ArchiveMailboxCount = $ArchiveMailboxCount + ArchiveAverageSize = $ArchiveAverageSize + CircularLoggingEnabled = $CircularLoggingEnabled + LastFullBackup = $LastFullBackup + Size = $Size + Whitespace = $Whitespace + Copies = $Copies + CopyCount = $CopyCount + FreeLogDiskSpace = $FreeLogDiskSpace + FreeDatabaseDiskSpace = $FreeDatabaseDiskSpace + } +} + +# Sub-Function to get mailbox count per server. +# New in 1.5.2 +function _GetExSvrMailboxCount +{ + param($Mailboxes,$ExchangeServer,$Databases) + # The following *should* work, but it doesn't. Apparently, ServerName is not always returned correctly which may be the cause of + # reports of counts being incorrect + #([array]($Mailboxes | Where {$_.ServerName -eq $ExchangeServer.Name})).Count + + # ..So as a workaround, I'm going to check what databases are assigned to each server and then get the mailbox counts on a per- + # database basis and return the resulting total. As we already have this information resident in memory it should be cheap, just + # not as quick. + $MailboxCount = 0 + foreach ($Database in [array]($Databases | Where {$_.Server -eq $ExchangeServer.Name})) + { + $MailboxCount+=([array]($Mailboxes | Where {$_.Database -eq $Database.Identity})).Count + } + $MailboxCount + +} + +# Sub-Function to Get Exchange Server information +function _GetExSvr +{ + param($E2010,$ExchangeServer,$Mailboxes,$Databases,$Hybrids) + + # Set Basic Variables + $MailboxCount = 0 + $RollupLevel = 0 + $RollupVersion = "" + $ExtNames = @() + $IntNames = @() + $CASArrayName = "" + + # Get WMI Information + $tWMI = Get-WmiObject Win32_OperatingSystem -ComputerName $ExchangeServer.Name -ErrorAction SilentlyContinue + if ($tWMI) + { + $OSVersion = $tWMI.Caption.Replace("(R)","").Replace("Microsoft ","").Replace("Enterprise","Ent").Replace("Standard","Std").Replace(" Edition","") + $OSServicePack = $tWMI.CSDVersion + $RealName = $tWMI.CSName.ToUpper() + } else { + Write-Warning "Cannot detect OS information via WMI for $($ExchangeServer.Name)" + $OSVersion = "N/A" + $OSServicePack = "N/A" + $RealName = $ExchangeServer.Name.ToUpper() + } + $tWMI=Get-WmiObject -query "Select * from Win32_Volume" -ComputerName $ExchangeServer.Name -ErrorAction SilentlyContinue + if ($tWMI) + { + $Disks=$tWMI | Select Name,Capacity,FreeSpace | Sort-Object -Property Name + } else { + Write-Warning "Cannot detect OS information via WMI for $($ExchangeServer.Name)" + $Disks=$null + } + + # Get Exchange Version + if ($ExchangeServer.AdminDisplayVersion.Major -eq 6) + { + $ExchangeMajorVersion = "$($ExchangeServer.AdminDisplayVersion.Major).$($ExchangeServer.AdminDisplayVersion.Minor)" + $ExchangeSPLevel = $ExchangeServer.AdminDisplayVersion.FilePatchLevelDescription.Replace("Service Pack ","") + } elseif ($ExchangeServer.AdminDisplayVersion.Major -eq 15 -and $ExchangeServer.AdminDisplayVersion.Minor -eq 1) { + $ExchangeMajorVersion = [double]"$($ExchangeServer.AdminDisplayVersion.Major).$($ExchangeServer.AdminDisplayVersion.Minor)" + $ExchangeSPLevel = 0 + } else { + $ExchangeMajorVersion = $ExchangeServer.AdminDisplayVersion.Major + $ExchangeSPLevel = $ExchangeServer.AdminDisplayVersion.Minor + } + # Exchange 2007+ + if ($ExchangeMajorVersion -ge 8) + { + # Get Roles + $MailboxStatistics=$null + [array]$Roles = $ExchangeServer.ServerRole.ToString().Replace(" ","").Split(","); + # Add Hybrid "Role" for report + if ($Hybrids -contains $ExchangeServer.Name) + { + $Roles+="Hybrid" + } + if ($Roles -contains "Mailbox") + { + $MailboxCount = _GetExSvrMailboxCount -Mailboxes $Mailboxes -ExchangeServer $ExchangeServer -Databases $Databases + if ($ExchangeServer.Name.ToUpper() -ne $RealName) + { + $Roles = [array]($Roles | Where {$_ -ne "Mailbox"}) + $Roles += "ClusteredMailbox" + } + # Get Mailbox Statistics the normal way, return in a consitent format + $MailboxStatistics = Get-MailboxStatistics -Server $ExchangeServer | Select DisplayName,@{Name="TotalItemSizeB";Expression={$_.TotalItemSize.Value.ToBytes()}},@{Name="TotalDeletedItemSizeB";Expression={$_.TotalDeletedItemSize.Value.ToBytes()}},Database + } + # Get HTTPS Names (Exchange 2010 only due to time taken to retrieve data) + if ($Roles -contains "ClientAccess" -and $E2010) + { + + Get-OWAVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + Get-WebServicesVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + Get-OABVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + Get-ActiveSyncVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + if (Get-Command Get-MAPIVirtualDirectory -ErrorAction SilentlyContinue) + { + Get-MAPIVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + } + if (Get-Command Get-ClientAccessService -ErrorAction SilentlyContinue) + { + $IntNames+=(Get-ClientAccessService -Identity $ExchangeServer.Name).AutoDiscoverServiceInternalURI.Host + } else { + $IntNames+=(Get-ClientAccessServer -Identity $ExchangeServer.Name).AutoDiscoverServiceInternalURI.Host + } + + if ($ExchangeMajorVersion -ge 14) + { + Get-ECPVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + } + $IntNames = $IntNames|Sort-Object -Unique + $ExtNames = $ExtNames|Sort-Object -Unique + $CASArray = Get-ClientAccessArray -Site $ExchangeServer.Site.Name + if ($CASArray) + { + $CASArrayName = $CASArray.Fqdn + } + } + + # Rollup Level / Versions (Thanks to Bhargav Shukla http://bit.ly/msxGIJ) + if ($ExchangeMajorVersion -ge 14) { + $RegKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\AE1D439464EB1B8488741FFA028E291C\\Patches" + } else { + $RegKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\461C2B4266EDEF444B864AD6D9E5B613\\Patches" + } + $RemoteRegistry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $ExchangeServer.Name); + if ($RemoteRegistry) + { + $RUKeys = $RemoteRegistry.OpenSubKey($RegKey).GetSubKeyNames() | ForEach {"$RegKey\\$_"} + if ($RUKeys) + { + [array]($RUKeys | %{$RemoteRegistry.OpenSubKey($_).getvalue("DisplayName")}) | %{ + if ($_ -like "Update Rollup *") + { + $tRU = $_.Split(" ")[2] + if ($tRU -like "*-*") { $tRUV=$tRU.Split("-")[1]; $tRU=$tRU.Split("-")[0] } else { $tRUV="" } + if ([int]$tRU -ge [int]$RollupLevel) { $RollupLevel=$tRU; $RollupVersion=$tRUV } + } + } + } + } else { + Write-Warning "Cannot detect Rollup Version via Remote Registry for $($ExchangeServer.Name)" + } + # Exchange 2013 CU or SP Level + if ($ExchangeMajorVersion -ge 15) + { + $RegKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Exchange v15" + $RemoteRegistry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $ExchangeServer.Name); + if ($RemoteRegistry) + { + $ExchangeSPLevel = $RemoteRegistry.OpenSubKey($RegKey).getvalue("DisplayName") + if ($ExchangeSPLevel -like "*Service Pack*" -or $ExchangeSPLevel -like "*Cumulative Update*") + { + $ExchangeSPLevel = $ExchangeSPLevel.Replace("Microsoft Exchange Server 2013 ",""); + $ExchangeSPLevel = $ExchangeSPLevel.Replace("Microsoft Exchange Server 2016 ",""); + $ExchangeSPLevel = $ExchangeSPLevel.Replace("Service Pack ","SP"); + $ExchangeSPLevel = $ExchangeSPLevel.Replace("Cumulative Update ","CU"); + } else { + $ExchangeSPLevel = 0; + } + } else { + Write-Warning "Cannot detect CU/SP via Remote Registry for $($ExchangeServer.Name)" + } + } + + } + # Exchange 2003 + if ($ExchangeMajorVersion -eq 6.5) + { + # Mailbox Count + $MailboxCount = _GetExSvrMailboxCount -Mailboxes $Mailboxes -ExchangeServer $ExchangeServer -Databases $Databases + # Get Role via WMI + $tWMI = Get-WMIObject Exchange_Server -Namespace "root\microsoftexchangev2" -Computername $ExchangeServer.Name -Filter "Name='$($ExchangeServer.Name)'" + if ($tWMI) + { + if ($tWMI.IsFrontEndServer) { $Roles=@("FE") } else { $Roles=@("BE") } + } else { + Write-Warning "Cannot detect Front End/Back End Server information via WMI for $($ExchangeServer.Name)" + $Roles+="Unknown" + } + # Get Mailbox Statistics using WMI, return in a consistent format + $tWMI = Get-WMIObject -class Exchange_Mailbox -Namespace ROOT\MicrosoftExchangev2 -ComputerName $ExchangeServer.Name -Filter ("ServerName='$($ExchangeServer.Name)'") + if ($tWMI) + { + $MailboxStatistics = $tWMI | Select @{Name="DisplayName";Expression={$_.MailboxDisplayName}},@{Name="TotalItemSizeB";Expression={$_.Size}},@{Name="TotalDeletedItemSizeB";Expression={$_.DeletedMessageSizeExtended }},@{Name="Database";Expression={((get-mailboxdatabase -Identity "$($_.ServerName)\$($_.StorageGroupName)\$($_.StoreName)").identity)}} + } else { + Write-Warning "Cannot retrieve Mailbox Statistics via WMI for $($ExchangeServer.Name)" + $MailboxStatistics = $null + } + } + # Exchange 2000 + if ($ExchangeMajorVersion -eq "6.0") + { + # Mailbox Count + $MailboxCount = _GetExSvrMailboxCount -Mailboxes $Mailboxes -ExchangeServer $ExchangeServer -Databases $Databases + # Get Role via ADSI + $tADSI=[ADSI]"LDAP://$($ExchangeServer.OriginatingServer)/$($ExchangeServer.DistinguishedName)" + if ($tADSI) + { + if ($tADSI.ServerRole -eq 1) { $Roles=@("FE") } else { $Roles=@("BE") } + } else { + Write-Warning "Cannot detect Front End/Back End Server information via ADSI for $($ExchangeServer.Name)" + $Roles+="Unknown" + } + $MailboxStatistics = $null + } + + # Return Hashtable + @{Name = $ExchangeServer.Name.ToUpper() + RealName = $RealName + ExchangeMajorVersion = $ExchangeMajorVersion + ExchangeSPLevel = $ExchangeSPLevel + Edition = $ExchangeServer.Edition + Mailboxes = $MailboxCount + OSVersion = $OSVersion; + OSServicePack = $OSServicePack + Roles = $Roles + RollupLevel = $RollupLevel + RollupVersion = $RollupVersion + Site = $ExchangeServer.Site.Name + MailboxStatistics = $MailboxStatistics + Disks = $Disks + IntNames = $IntNames + ExtNames = $ExtNames + CASArrayName = $CASArrayName + } +} + +# Sub Function to Get Totals by Version +function _TotalsByVersion +{ + param($ExchangeEnvironment) + $TotalMailboxesByVersion=@{} + if ($ExchangeEnvironment.Sites) + { + foreach ($Site in $ExchangeEnvironment.Sites.GetEnumerator()) + { + foreach ($Server in $Site.Value) + { + if (!$TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"]) + { + $TotalMailboxesByVersion.Add("$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)",@{ServerCount=1;MailboxCount=$Server.Mailboxes}) + } else { + $TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"].ServerCount++ + $TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"].MailboxCount+=$Server.Mailboxes + } + } + } + } + if ($ExchangeEnvironment.Pre2007) + { + foreach ($FakeSite in $ExchangeEnvironment.Pre2007.GetEnumerator()) + { + foreach ($Server in $FakeSite.Value) + { + if (!$TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"]) + { + $TotalMailboxesByVersion.Add("$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)",@{ServerCount=1;MailboxCount=$Server.Mailboxes}) + } else { + $TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"].ServerCount++ + $TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"].MailboxCount+=$Server.Mailboxes + } + } + } + } + $TotalMailboxesByVersion +} + +# Sub Function to Get Totals by Role +function _TotalsByRole +{ + param($ExchangeEnvironment) + # Add Roles We Always Show + $TotalServersByRole=@{"ClientAccess" = 0 + "HubTransport" = 0 + "UnifiedMessaging" = 0 + "Mailbox" = 0 + "Edge" = 0 + } + if ($ExchangeEnvironment.Sites) + { + foreach ($Site in $ExchangeEnvironment.Sites.GetEnumerator()) + { + foreach ($Server in $Site.Value) + { + foreach ($Role in $Server.Roles) + { + if ($TotalServersByRole[$Role] -eq $null) + { + $TotalServersByRole.Add($Role,1) + } else { + $TotalServersByRole[$Role]++ + } + } + } + } + } + if ($ExchangeEnvironment.Pre2007["Pre 2007 Servers"]) + { + + foreach ($Server in $ExchangeEnvironment.Pre2007["Pre 2007 Servers"]) + { + + foreach ($Role in $Server.Roles) + { + if ($TotalServersByRole[$Role] -eq $null) + { + $TotalServersByRole.Add($Role,1) + } else { + $TotalServersByRole[$Role]++ + } + } + } + } + $TotalServersByRole +} + +# Sub Function to return HTML Table for Sites/Pre 2007 +function _GetOverview +{ + param($Servers,$ExchangeEnvironment,$ExRoleStrings,$Pre2007=$False) + if ($Pre2007) + { + $BGColHeader="#880099" + $BGColSubHeader="#8800CC" + $Prefix="" + $IntNamesText="" + $ExtNamesText="" + $CASArrayText="" + } else { + $BGColHeader="#000099" + $BGColSubHeader="#0000FF" + $Prefix="Site:" + $IntNamesText="" + $ExtNamesText="" + $CASArrayText="" + $IntNames=@() + $ExtNames=@() + $CASArrayName="" + foreach ($Server in $Servers.Value) + { + $IntNames+=$Server.IntNames + $ExtNames+=$Server.ExtNames + $CASArrayName=$Server.CASArrayName + + } + $IntNames = $IntNames|Sort -Unique + $ExtNames = $ExtNames|Sort -Unique + $IntNames = [system.String]::Join(",",$IntNames) + $ExtNames = [system.String]::Join(",",$ExtNames) + if ($IntNames) + { + $IntNamesText="Internal Names: $($IntNames)" + $ExtNamesText="External Names: $($ExtNames)
" + } + if ($CASArrayName) + { + $CASArrayText="CAS Array: $($CASArrayName)" + } + } + $Output=" + + "; + + $ExchangeEnvironment.TotalServersByRole.GetEnumerator()|Sort Name| %{$Output+=""} + $Output+="+ + + " + $TotalMailboxes=0 + $Servers.Value | %{$TotalMailboxes += $_.Mailboxes} + $Output+="" + $ExchangeEnvironment.TotalServersByRole.GetEnumerator()|Sort Name| %{$Output+=""} + $Output+="" + $AlternateRow=0 + + foreach ($Server in $Servers.Value) + { + $Output+=" + + + " + if ($ShowStorageGroups) + { + $Output+="" + } + $Output+=" + + " + if ($ShowArchiveDBs) + { + $Output+="" + } + $Output+="" + if ($ShowFreeDatabaseSpace) + { + $Output+="" + } + if ($ShowFreeLogDiskSpace) + { + $Output+="" + } + if ($ShowLastFullBackup) + { + $Output+="" + } + if ($ShowCircularLogging) + { + $Output+="" + } + if ($ShowCopies) + { + $Output+="" + } + + $Output+="" + $AlternateRow=0; + foreach ($Database in $Databases) + { + $Output+="$($Database.MailboxCount) + " + if ($ShowArchiveDBs) + { + $Output+=" + "; + } + $Output+=" + "; + if ($ShowFreeDatabaseSpace) + { + $Output+="" + } + if ($ShowFreeLogDiskSpace) + { + $Output+="" + } + if ($ShowLastFullBackup) + { + $Output+=""; + } + if ($ShowCircularLogging) + { + $Output+=""; + } + if ($ShowCopies) + { + $Output+="" + } + $Output+=""; + } + $Output+="
$($Prefix) $($Servers.Key)$($ExtNamesText)$($IntNamesText)$($CASArrayText)
Mailboxes: $($TotalMailboxes)" + $Output+="Exchange Version$($ExRoleStrings[$_.Key].Short)OS VersionOS Service Pack
ServerStorage GroupDatabase NameMailboxesAv. Mailbox SizeArchive MBsAv. Archive SizeDB SizeDB WhitespaceDatabase Disk FreeLog Disk FreeLast Full BackupCircular LoggingCopies (n)
$("{0:N2}" -f ($Database.MailboxAverageSize/1MB)) MB$($Database.ArchiveMailboxCount)$("{0:N2}" -f ($Database.ArchiveAverageSize/1MB)) MB$("{0:N2}" -f ($Database.Size/1GB)) GB $("{0:N2}" -f ($Database.Whitespace/1GB)) GB$("{0:N1}" -f $Database.FreeDatabaseDiskSpace)%$("{0:N1}" -f $Database.FreeLogDiskSpace)%$($Database.LastFullBackup)$($Database.CircularLoggingEnabled)$($Database.Copies|%{$_}) ($($Database.CopyCount))

" + + $Output +} + +# Sub Function to neatly update progress +function _UpProg1 +{ + param($PercentComplete,$Status,$Stage) + $TotalStages=5 + Write-Progress -id 1 -activity "Get-ExchangeEnvironmentReport" -status $Status -percentComplete (($PercentComplete/$TotalStages)+(1/$TotalStages*$Stage*100)) +} + +# 1. Initial Startup + +add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 + +# 1.0 Check Powershell Version +if ((Get-Host).Version.Major -eq 1) +{ + throw "Powershell Version 1 not supported"; +} + +# 1.1 Check Exchange Management Shell, attempt to load +if (!(Get-Command Get-ExchangeServer -ErrorAction SilentlyContinue)) +{ + if (Test-Path "C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1") + { + . 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1' + Connect-ExchangeServer -auto + } elseif (Test-Path "C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1") { + Add-PSSnapIn Microsoft.Exchange.Management.PowerShell.Admin + .'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1' + } else { + throw "Exchange Management Shell cannot be loaded" + } +} + +# 1.2 Check if -SendMail parameter set and if so check -MailFrom, -MailTo and -MailServer are set +if ($SendMail) +{ + if (!$MailFrom -or !$MailTo -or !$MailServer) + { + throw "If -SendMail specified, you must also specify -MailFrom, -MailTo and -MailServer" + } +} + +# 1.3 Check Exchange Management Shell Version +if ((Get-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.Admin -ErrorAction SilentlyContinue)) +{ + $E2010 = $false; + if (Get-ExchangeServer | Where {$_.AdminDisplayVersion.Major -gt 14}) + { + Write-Warning "Exchange 2010 or higher detected. You'll get better results if you run this script from the latest management shell" + } +}else{ + + $E2010 = $true + $localserver = get-exchangeserver $Env:computername + $localversion = $localserver.admindisplayversion.major + if ($localversion -eq 15) { $E2013 = $true } + +} + +# 1.4 Check view entire forest if set (by default, true) +if ($E2010) +{ + Set-ADServerSettings -ViewEntireForest:$ViewEntireForest +} else { + $global:AdminSessionADSettings.ViewEntireForest = $ViewEntireForest +} + +# 1.5 Initial Variables + +# 1.5.1 Hashtable to update with environment data +$ExchangeEnvironment = @{Sites = @{} + Pre2007 = @{} + Servers = @{} + DAGs = @() + NonDAGDatabases = @() + } +# 1.5.7 Exchange Major Version String Mapping +$ExMajorVersionStrings = @{"6.0" = @{Long="Exchange 2000";Short="E2000"} + "6.5" = @{Long="Exchange 2003";Short="E2003"} + "8" = @{Long="Exchange 2007";Short="E2007"} + "14" = @{Long="Exchange 2010";Short="E2010"} + "15" = @{Long="Exchange 2013";Short="E2013"} + "15.1" = @{Long="Exchange 2016";Short="E2016"}} +# 1.5.8 Exchange Service Pack String Mapping +$ExSPLevelStrings = @{"0" = "RTM" + "1" = "SP1" + "2" = "SP2" + "3" = "SP3" + "4" = "SP4" + "SP1" = "SP1" + "SP2" = "SP2"} + # Add many CUs + for ($i = 1; $i -le 20; $i++) + { + $ExSPLevelStrings.Add("CU$($i)","CU$($i)"); + } +# 1.5.9 Populate Full Mapping using above info +$ExVersionStrings = @{} +foreach ($Major in $ExMajorVersionStrings.GetEnumerator()) +{ + foreach ($Minor in $ExSPLevelStrings.GetEnumerator()) + { + $ExVersionStrings.Add("$($Major.Key).$($Minor.Key)",@{Long="$($Major.Value.Long) $($Minor.Value)";Short="$($Major.Value.Short)$($Minor.Value)"}) + } +} +# 1.5.10 Exchange Role String Mapping +$ExRoleStrings = @{"ClusteredMailbox" = @{Short="ClusMBX";Long="CCR/SCC Clustered Mailbox"} + "Mailbox" = @{Short="MBX";Long="Mailbox"} + "ClientAccess" = @{Short="CAS";Long="Client Access"} + "HubTransport" = @{Short="HUB";Long="Hub Transport"} + "UnifiedMessaging" = @{Short="UM";Long="Unified Messaging"} + "Edge" = @{Short="EDGE";Long="Edge Transport"} + "FE" = @{Short="FE";Long="Front End"} + "BE" = @{Short="BE";Long="Back End"} + "Hybrid" = @{Short="HYB"; Long="Hybrid"} + "Unknown" = @{Short="Unknown";Long="Unknown"}} + +# 2 Get Relevant Exchange Information Up-Front + +# 2.1 Get Server, Exchange and Mailbox Information +_UpProg1 1 "Getting Exchange Server List" 1 +$ExchangeServers = [array](Get-ExchangeServer $ServerFilter) +if (!$ExchangeServers) +{ + throw "No Exchange Servers matched by -ServerFilter ""$($ServerFilter)""" +} +$HybridServers=@() +if (Get-Command Get-HybridConfiguration -ErrorAction SilentlyContinue) +{ + $HybridConfig = Get-HybridConfiguration + $HybridConfig.ReceivingTransportServers|%{ $HybridServers+=$_.Name } + $HybridConfig.SendingTransportServers|%{ $HybridServers+=$_.Name } + $HybridServers = $HybridServers | Sort-Object -Unique +} + +_UpProg1 10 "Getting Mailboxes" 1 +$Mailboxes = [array](Get-Mailbox -ResultSize Unlimited) | Where {$_.Server -like $ServerFilter} +if ($E2010) +{ + _UpProg1 60 "Getting Archive Mailboxes" 1 + $ArchiveMailboxes = [array](Get-Mailbox -Archive -ResultSize Unlimited) | Where {$_.Server -like $ServerFilter} + _UpProg1 70 "Getting Remote Mailboxes" 1 + $RemoteMailboxes = [array](Get-RemoteMailbox -ResultSize Unlimited) + $ExchangeEnvironment.Add("RemoteMailboxes",$RemoteMailboxes.Count) + _UpProg1 90 "Getting Databases" 1 + if ($E2013) + { + $Databases = [array](Get-MailboxDatabase -IncludePreExchange2013 -Status) | Where {$_.Server -like $ServerFilter} + } + elseif ($E2010) + { + $Databases = [array](Get-MailboxDatabase -IncludePreExchange2010 -Status) | Where {$_.Server -like $ServerFilter} + } + $DAGs = [array](Get-DatabaseAvailabilityGroup) | Where {$_.Servers -like $ServerFilter} +} else { + $ArchiveMailboxes = $null + $ArchiveMailboxStats = $null + $DAGs = $null + _UpProg1 90 "Getting Databases" 1 + $Databases = [array](Get-MailboxDatabase -IncludePreExchange2007 -Status) | Where {$_.Server -like $ServerFilter} + $ExchangeEnvironment.Add("RemoteMailboxes",0) +} + +# 2.3 Populate Information we know +$ExchangeEnvironment.Add("TotalMailboxes",$Mailboxes.Count + $ExchangeEnvironment.RemoteMailboxes); + +# 3 Process High-Level Exchange Information + +# 3.1 Collect Exchange Server Information +for ($i=0; $i -lt $ExchangeServers.Count; $i++) +{ + _UpProg1 ($i/$ExchangeServers.Count*100) "Getting Exchange Server Information" 2 + # Get Exchange Info + $ExSvr = _GetExSvr -E2010 $E2010 -ExchangeServer $ExchangeServers[$i] -Mailboxes $Mailboxes -Databases $Databases -Hybrids $HybridServers + # Add to site or pre-Exchange 2007 list + if ($ExSvr.Site) + { + # Exchange 2007 or higher + if (!$ExchangeEnvironment.Sites[$ExSvr.Site]) + { + $ExchangeEnvironment.Sites.Add($ExSvr.Site,@($ExSvr)) + } else { + $ExchangeEnvironment.Sites[$ExSvr.Site]+=$ExSvr + } + } else { + # Exchange 2003 or lower + if (!$ExchangeEnvironment.Pre2007["Pre 2007 Servers"]) + { + $ExchangeEnvironment.Pre2007.Add("Pre 2007 Servers",@($ExSvr)) + } else { + $ExchangeEnvironment.Pre2007["Pre 2007 Servers"]+=$ExSvr + } + } + # Add to Servers List + $ExchangeEnvironment.Servers.Add($ExSvr.Name,$ExSvr) +} + +# 3.2 Calculate Environment Totals for Version/Role using collected data +_UpProg1 1 "Getting Totals" 3 +$ExchangeEnvironment.Add("TotalMailboxesByVersion",(_TotalsByVersion -ExchangeEnvironment $ExchangeEnvironment)) +$ExchangeEnvironment.Add("TotalServersByRole",(_TotalsByRole -ExchangeEnvironment $ExchangeEnvironment)) + +# 3.4 Populate Environment DAGs +_UpProg1 5 "Getting DAG Info" 3 +if ($DAGs) +{ + foreach($DAG in $DAGs) + { + $ExchangeEnvironment.DAGs+=(_GetDAG -DAG $DAG) + } +} + +# 3.5 Get Database information +_UpProg1 60 "Getting Database Info" 3 +for ($i=0; $i -lt $Databases.Count; $i++) +{ + $Database = _GetDB -Database $Databases[$i] -ExchangeEnvironment $ExchangeEnvironment -Mailboxes $Mailboxes -ArchiveMailboxes $ArchiveMailboxes -E2010 $E2010 + $DAGDB = $false + for ($j=0; $j -lt $ExchangeEnvironment.DAGs.Count; $j++) + { + if ($ExchangeEnvironment.DAGs[$j].Members -contains $Database.ActiveOwner) + { + $DAGDB=$true + $ExchangeEnvironment.DAGs[$j].Databases += $Database + } + } + if (!$DAGDB) + { + $ExchangeEnvironment.NonDAGDatabases += $Database + } + + +} + +# 4 Write Information +_UpProg1 5 "Writing HTML Report Header" 4 +# Header +$Output=" + + +

Exchange Environment Report

+

Generated $((Get-Date).ToString())

+
+ + +" +if ($ExchangeEnvironment.RemoteMailboxes) + { + $Output+="" + } else { + $Output+="" + } +$Output+=" +" +# Show Column Headings based on the Exchange versions we have +$ExchangeEnvironment.TotalMailboxesByVersion.GetEnumerator()|Sort Name| %{$Output+=""} +$ExchangeEnvironment.TotalMailboxesByVersion.GetEnumerator()|Sort Name| %{$Output+=""} +if ($ExchangeEnvironment.RemoteMailboxes) +{ + $Output+="" +} +$Output+="" +$ExchangeEnvironment.TotalServersByRole.GetEnumerator()|Sort Name| %{$Output+=""} +$Output+="" +$Output+="" +$ExchangeEnvironment.TotalMailboxesByVersion.GetEnumerator()|Sort Name| %{$Output+="" } +$ExchangeEnvironment.TotalMailboxesByVersion.GetEnumerator()|Sort Name| %{$Output+="" } +if ($RemoteMailboxes) +{ + $Output+="" +} +$Output+="" +$ExchangeEnvironment.TotalServersByRole.GetEnumerator()|Sort Name| %{$Output+=""} +$Output+="
Total Servers:Total Mailboxes:Total Mailboxes:Total Roles:
$($ExVersionStrings[$_.Key].Short)$($ExVersionStrings[$_.Key].Short)Office 365Org$($ExRoleStrings[$_.Key].Short)
$($_.Value.ServerCount)$($_.Value.MailboxCount)$($ExchangeEnvironment.RemoteMailboxes)$($ExchangeEnvironment.TotalMailboxes)$($_.Value)

" + +$SPLA = (Get-Mailbox -ResultSize Unlimited -Filter {EmailAddresses -like "*.mailnot.fr"} ).Count + +$Output+=" + + + +
Compte SPLAMember Count
*.mailnot.fr $SPLA

" + +# Sites and Servers +_UpProg1 20 "Writing HTML Site Information" 4 +foreach ($Site in $ExchangeEnvironment.Sites.GetEnumerator()) +{ + $Output+=_GetOverview -Servers $Site -ExchangeEnvironment $ExchangeEnvironment -ExRoleStrings $ExRoleStrings +} +_UpProg1 40 "Writing HTML Pre-2007 Information" 4 +foreach ($FakeSite in $ExchangeEnvironment.Pre2007.GetEnumerator()) +{ + $Output+=_GetOverview -Servers $FakeSite -ExchangeEnvironment $ExchangeEnvironment -ExRoleStrings $ExRoleStrings -Pre2007:$true +} + + +_UpProg1 60 "Writing HTML DAG Information" 4 +foreach ($DAG in $ExchangeEnvironment.DAGs) +{ + if ($DAG.MemberCount -gt 0) + { + # Database Availability Group Header + $Output+=" + + + +
Database Availability Group NameMember CountDatabase Availability Group Members
$($DAG.Name) + $($DAG.MemberCount)" + $DAG.Members | % { $Output+="$($_) " } + $Output+="
" + + # Get Table HTML + $Output+=_GetDBTable -Databases $DAG.Databases + } + +} + +if ($ExchangeEnvironment.NonDAGDatabases.Count) +{ + _UpProg1 80 "Writing HTML Non-DAG Database Information" 4 + $Output+=" +
Mailbox Databases (Non-DAG)
" + $Output+=_GetDBTable -Databases $ExchangeEnvironment.NonDAGDatabases +} + + +# End +_UpProg1 90 "Finishing off.." 4 +$Output+=""; +$Output | Out-File $HTMLReport + + +if ($SendMail) +{ + _UpProg1 95 "Sending mail message.." 4 + Send-MailMessage -Attachments $HTMLReport -To $MailTo -From $MailFrom -Subject "Exchange Environment Report" -BodyAsHtml $Output -SmtpServer $MailServer +} \ No newline at end of file diff --git a/Exchange/Get-ExchangeEnvironmentReport.ps1 b/Exchange/Get-ExchangeEnvironmentReport.ps1 new file mode 100644 index 0000000..ebc3030 --- /dev/null +++ b/Exchange/Get-ExchangeEnvironmentReport.ps1 @@ -0,0 +1,1143 @@ +<# + .SYNOPSIS + Creates a HTML Report describing the Exchange environment + + Steve Goodman + + THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE + RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER. + + Version 1.6.2 + + .DESCRIPTION + + This script creates a HTML report showing the following information about an Exchange + 2016, 2013, 2010 and to a lesser extent, 2007 and 2003, environment. + + The following is shown: + + * Report Generation Time + * Total Servers per Exchange Version (2003 > 2010 or 2007 > 2016) + * Total Mailboxes per Exchange Version, Office 365 and Organisation + * Total Roles in the environment + + Then, per site: + * Total Mailboxes per site + * Internal, External and CAS Array Hostnames + * Exchange Servers with: + o Exchange Server Version + o Service Pack + o Update Rollup and rollup version + o Roles installed on server and mailbox counts + o OS Version and Service Pack + + Then, per Database availability group (Exchange 2010/2013/2016): + * Total members per DAG + * Member list + * Databases, detailing: + o Mailbox Count and Average Size + o Archive Mailbox Count and Average Size (Only shown if DAG includes Archive Mailboxes) + o Database Size and whitespace + o Database and log disk free + o Last Full Backup (Only shown if one or more DAG database has been backed up) + o Circular Logging Enabled (Only shown if one or more DAG database has Circular Logging enabled) + o Mailbox server hosting active copy + o List of mailbox servers hosting copies and number of copies + + Finally, per Database (Non DAG DBs/Exchange 2007/Exchange 2003) + * Databases, detailing: + o Storage Group (if applicable) and DB name + o Server hosting database + o Mailbox Count and Average Size + o Archive Mailbox Count and Average Size (Only shown if DAG includes Archive Mailboxes) + o Database Size and whitespace + o Database and log disk free + o Last Full Backup (Only shown if one or more DAG database has been backed up) + o Circular Logging Enabled (Only shown if one or more DAG database has Circular Logging enabled) + + This does not detail public folder infrastructure, or examine Exchange 2007/2003 CCR/SCC clusters + (although it attempts to detect Clustered Exchange 2007/2003 servers, signified by ClusMBX). + + IMPORTANT NOTE: The script requires WMI and Remote Registry access to Exchange servers from the server + it is run from to determine OS version, Update Rollup, Exchange 2007/2003 cluster and DB size information. + + .PARAMETER HTMLReport + Filename to write HTML Report to + + .PARAMETER SendMail + Send Mail after completion. Set to $True to enable. If enabled, -MailFrom, -MailTo, -MailServer are mandatory + + .PARAMETER MailFrom + Email address to send from. Passed directly to Send-MailMessage as -From + + .PARAMETER MailTo + Email address to send to. Passed directly to Send-MailMessage as -To + + .PARAMETER MailServer + SMTP Mail server to attempt to send through. Passed directly to Send-MailMessage as -SmtpServer + + .PARAMETER ScheduleAs + Attempt to schedule the command just executed for 10PM nightly. Specify the username here, schtasks (under the hood) will ask for a password later. + + .PARAMETER ViewEntireForest + By default, true. Set the option in Exchange 2007 or 2010 to view all Exchange servers and recipients in the forest. + + .PARAMETER ServerFilter + Use a text based string to filter Exchange Servers by, e.g. NL-* - Note the use of the wildcard (*) character to allow for multiple matches. + + .EXAMPLE + Generate the HTML report + .\Get-ExchangeEnvironmentReport.ps1 -HTMLReport .\report.html + .\Get-ExchangeEnvironmentReport.ps1 -HTMLReport .\report.html -SendMail $True -MailFrom "Rapports@cloud-fichorga.fr" -MailTo "hcornet@fichorga.fr" -MailServer 10.101.10.2 + + #> +param( + [parameter(Position=0,Mandatory=$true,ValueFromPipeline=$false,HelpMessage='Filename to write HTML report to')][string]$HTMLReport, + [parameter(Position=1,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Send Mail ($True/$False)')][bool]$SendMail=$false, + [parameter(Position=2,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Mail From')][string]$MailFrom, + [parameter(Position=3,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Mail To')]$MailTo, + [parameter(Position=4,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Mail Server')][string]$MailServer, + [parameter(Position=4,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Schedule as user')][string]$ScheduleAs, + [parameter(Position=5,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Change view to entire forest')][bool]$ViewEntireForest=$true, + [parameter(Position=5,Mandatory=$false,ValueFromPipeline=$false,HelpMessage='Server Name Filter (eg NL-*)')][string]$ServerFilter="*" + ) + +# Sub-Function to Get Database Information. Shorter than expected.. +function _GetDAG +{ + param($DAG) + @{Name = $DAG.Name.ToUpper() + MemberCount = $DAG.Servers.Count + Members = [array]($DAG.Servers | % { $_.Name }) + Databases = @() + } +} + +# Sub-Function to Get Database Information +function _GetDB +{ + param($Database,$ExchangeEnvironment,$Mailboxes,$ArchiveMailboxes,$E2010) + + # Circular Logging, Last Full Backup + if ($Database.CircularLoggingEnabled) { $CircularLoggingEnabled="Yes" } else { $CircularLoggingEnabled = "No" } + if ($Database.LastFullBackup) { $LastFullBackup=$Database.LastFullBackup.ToString() } else { $LastFullBackup = "Not Available" } + + # Mailbox Average Sizes + $MailboxStatistics = [array]($ExchangeEnvironment.Servers[$Database.Server.Name].MailboxStatistics | Where {$_.Database -eq $Database.Identity}) + if ($MailboxStatistics) + { + [long]$MailboxItemSizeB = 0 + $MailboxStatistics | %{ $MailboxItemSizeB+=$_.TotalItemSizeB } + [long]$MailboxAverageSize = $MailboxItemSizeB / $MailboxStatistics.Count + } else { + $MailboxAverageSize = 0 + } + + # Free Disk Space Percentage + if ($ExchangeEnvironment.Servers[$Database.Server.Name].Disks) + { + foreach ($Disk in $ExchangeEnvironment.Servers[$Database.Server.Name].Disks) + { + if ($Database.EdbFilePath.PathName -like "$($Disk.Name)*") + { + $FreeDatabaseDiskSpace = $Disk.FreeSpace / $Disk.Capacity * 100 + } + if ($Database.ExchangeVersion.ExchangeBuild.Major -ge 14) + { + if ($Database.LogFolderPath.PathName -like "$($Disk.Name)*") + { + $FreeLogDiskSpace = $Disk.FreeSpace / $Disk.Capacity * 100 + } + } else { + $StorageGroupDN = $Database.DistinguishedName.Replace("CN=$($Database.Name),","") + $Adsi=[adsi]"LDAP://$($Database.OriginatingServer)/$($StorageGroupDN)" + if ($Adsi.msExchESEParamLogFilePath -like "$($Disk.Name)*") + { + $FreeLogDiskSpace = $Disk.FreeSpace / $Disk.Capacity * 100 + } + } + } + } else { + $FreeLogDiskSpace=$null + $FreeDatabaseDiskSpace=$null + } + + if ($Database.ExchangeVersion.ExchangeBuild.Major -ge 14 -and $E2010) + { + # Exchange 2010 Database Only + $CopyCount = [int]$Database.Servers.Count + if ($Database.MasterServerOrAvailabilityGroup.Name -ne $Database.Server.Name) + { + $Copies = [array]($Database.Servers | % { $_.Name }) + } else { + $Copies = @() + } + # Archive Info + $ArchiveMailboxCount = [int]([array]($ArchiveMailboxes | Where {$_.ArchiveDatabase -eq $Database.Name})).Count + $ArchiveStatistics = [array]($ArchiveMailboxes | Where {$_.ArchiveDatabase -eq $Database.Name} | Get-MailboxStatistics -Archive ) + if ($ArchiveStatistics) + { + [long]$ArchiveItemSizeB = 0 + $ArchiveStatistics | %{ $ArchiveItemSizeB+=$_.TotalItemSize.Value.ToBytes() } + [long]$ArchiveAverageSize = $ArchiveItemSizeB / $ArchiveStatistics.Count + } else { + $ArchiveAverageSize = 0 + } + # DB Size / Whitespace Info + [long]$Size = $Database.DatabaseSize.ToBytes() + [long]$Whitespace = $Database.AvailableNewMailboxSpace.ToBytes() + $StorageGroup = $null + + } else { + $ArchiveMailboxCount = 0 + $CopyCount = 0 + $Copies = @() + # 2003 & 2007, Use WMI (Based on code by Gary Siepser, http://bit.ly/kWWMb3) + $Size = [long](get-wmiobject cim_datafile -computername $Database.Server.Name -filter ('name=''' + $Database.edbfilepath.pathname.replace("\","\\") + '''')).filesize + if (!$Size) + { + Write-Warning "Cannot detect database size via WMI for $($Database.Server.Name)" + [long]$Size = 0 + [long]$Whitespace = 0 + } else { + [long]$MailboxDeletedItemSizeB = 0 + if ($MailboxStatistics) + { + $MailboxStatistics | %{ $MailboxDeletedItemSizeB+=$_.TotalDeletedItemSizeB } + } + $Whitespace = $Size - $MailboxItemSizeB - $MailboxDeletedItemSizeB + if ($Whitespace -lt 0) { $Whitespace = 0 } + } + $StorageGroup =$Database.DistinguishedName.Split(",")[1].Replace("CN=","") + } + + @{Name = $Database.Name + StorageGroup = $StorageGroup + ActiveOwner = $Database.Server.Name.ToUpper() + MailboxCount = [long]([array]($Mailboxes | Where {$_.Database -eq $Database.Identity})).Count + MailboxAverageSize = $MailboxAverageSize + ArchiveMailboxCount = $ArchiveMailboxCount + ArchiveAverageSize = $ArchiveAverageSize + CircularLoggingEnabled = $CircularLoggingEnabled + LastFullBackup = $LastFullBackup + Size = $Size + Whitespace = $Whitespace + Copies = $Copies + CopyCount = $CopyCount + FreeLogDiskSpace = $FreeLogDiskSpace + FreeDatabaseDiskSpace = $FreeDatabaseDiskSpace + } +} + +# Sub-Function to get mailbox count per server. +# New in 1.5.2 +function _GetExSvrMailboxCount +{ + param($Mailboxes,$ExchangeServer,$Databases) + # The following *should* work, but it doesn't. Apparently, ServerName is not always returned correctly which may be the cause of + # reports of counts being incorrect + #([array]($Mailboxes | Where {$_.ServerName -eq $ExchangeServer.Name})).Count + + # ..So as a workaround, I'm going to check what databases are assigned to each server and then get the mailbox counts on a per- + # database basis and return the resulting total. As we already have this information resident in memory it should be cheap, just + # not as quick. + $MailboxCount = 0 + foreach ($Database in [array]($Databases | Where {$_.Server -eq $ExchangeServer.Name})) + { + $MailboxCount+=([array]($Mailboxes | Where {$_.Database -eq $Database.Identity})).Count + } + $MailboxCount + +} + +# Sub-Function to Get Exchange Server information +function _GetExSvr +{ + param($E2010,$ExchangeServer,$Mailboxes,$Databases,$Hybrids) + + # Set Basic Variables + $MailboxCount = 0 + $RollupLevel = 0 + $RollupVersion = "" + $ExtNames = @() + $IntNames = @() + $CASArrayName = "" + + # Get WMI Information + $tWMI = Get-WmiObject Win32_OperatingSystem -ComputerName $ExchangeServer.Name -ErrorAction SilentlyContinue + if ($tWMI) + { + $OSVersion = $tWMI.Caption.Replace("(R)","").Replace("Microsoft ","").Replace("Enterprise","Ent").Replace("Standard","Std").Replace(" Edition","") + $OSServicePack = $tWMI.CSDVersion + $RealName = $tWMI.CSName.ToUpper() + } else { + Write-Warning "Cannot detect OS information via WMI for $($ExchangeServer.Name)" + $OSVersion = "N/A" + $OSServicePack = "N/A" + $RealName = $ExchangeServer.Name.ToUpper() + } + $tWMI=Get-WmiObject -query "Select * from Win32_Volume" -ComputerName $ExchangeServer.Name -ErrorAction SilentlyContinue + if ($tWMI) + { + $Disks=$tWMI | Select Name,Capacity,FreeSpace | Sort-Object -Property Name + } else { + Write-Warning "Cannot detect OS information via WMI for $($ExchangeServer.Name)" + $Disks=$null + } + + # Get Exchange Version + if ($ExchangeServer.AdminDisplayVersion.Major -eq 6) + { + $ExchangeMajorVersion = "$($ExchangeServer.AdminDisplayVersion.Major).$($ExchangeServer.AdminDisplayVersion.Minor)" + $ExchangeSPLevel = $ExchangeServer.AdminDisplayVersion.FilePatchLevelDescription.Replace("Service Pack ","") + } elseif ($ExchangeServer.AdminDisplayVersion.Major -eq 15 -and $ExchangeServer.AdminDisplayVersion.Minor -eq 1) { + $ExchangeMajorVersion = [double]"$($ExchangeServer.AdminDisplayVersion.Major).$($ExchangeServer.AdminDisplayVersion.Minor)" + $ExchangeSPLevel = 0 + } else { + $ExchangeMajorVersion = $ExchangeServer.AdminDisplayVersion.Major + $ExchangeSPLevel = $ExchangeServer.AdminDisplayVersion.Minor + } + # Exchange 2007+ + if ($ExchangeMajorVersion -ge 8) + { + # Get Roles + $MailboxStatistics=$null + [array]$Roles = $ExchangeServer.ServerRole.ToString().Replace(" ","").Split(","); + # Add Hybrid "Role" for report + if ($Hybrids -contains $ExchangeServer.Name) + { + $Roles+="Hybrid" + } + if ($Roles -contains "Mailbox") + { + $MailboxCount = _GetExSvrMailboxCount -Mailboxes $Mailboxes -ExchangeServer $ExchangeServer -Databases $Databases + if ($ExchangeServer.Name.ToUpper() -ne $RealName) + { + $Roles = [array]($Roles | Where {$_ -ne "Mailbox"}) + $Roles += "ClusteredMailbox" + } + # Get Mailbox Statistics the normal way, return in a consitent format + $MailboxStatistics = Get-MailboxStatistics -Server $ExchangeServer | Select DisplayName,@{Name="TotalItemSizeB";Expression={$_.TotalItemSize.Value.ToBytes()}},@{Name="TotalDeletedItemSizeB";Expression={$_.TotalDeletedItemSize.Value.ToBytes()}},Database + } + # Get HTTPS Names (Exchange 2010 only due to time taken to retrieve data) + if ($Roles -contains "ClientAccess" -and $E2010) + { + + Get-OWAVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + Get-WebServicesVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + Get-OABVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + Get-ActiveSyncVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + if (Get-Command Get-MAPIVirtualDirectory -ErrorAction SilentlyContinue) + { + Get-MAPIVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + } + if (Get-Command Get-ClientAccessService -ErrorAction SilentlyContinue) + { + $IntNames+=(Get-ClientAccessService -Identity $ExchangeServer.Name).AutoDiscoverServiceInternalURI.Host + } else { + $IntNames+=(Get-ClientAccessServer -Identity $ExchangeServer.Name).AutoDiscoverServiceInternalURI.Host + } + + if ($ExchangeMajorVersion -ge 14) + { + Get-ECPVirtualDirectory -Server $ExchangeServer -ADPropertiesOnly | %{ $ExtNames+=$_.ExternalURL.Host; $IntNames+=$_.InternalURL.Host; } + } + $IntNames = $IntNames|Sort-Object -Unique + $ExtNames = $ExtNames|Sort-Object -Unique + $CASArray = Get-ClientAccessArray -Site $ExchangeServer.Site.Name + if ($CASArray) + { + $CASArrayName = $CASArray.Fqdn + } + } + + # Rollup Level / Versions (Thanks to Bhargav Shukla http://bit.ly/msxGIJ) + if ($ExchangeMajorVersion -ge 14) { + $RegKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\AE1D439464EB1B8488741FFA028E291C\\Patches" + } else { + $RegKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\461C2B4266EDEF444B864AD6D9E5B613\\Patches" + } + $RemoteRegistry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $ExchangeServer.Name); + if ($RemoteRegistry) + { + $RUKeys = $RemoteRegistry.OpenSubKey($RegKey).GetSubKeyNames() | ForEach {"$RegKey\\$_"} + if ($RUKeys) + { + [array]($RUKeys | %{$RemoteRegistry.OpenSubKey($_).getvalue("DisplayName")}) | %{ + if ($_ -like "Update Rollup *") + { + $tRU = $_.Split(" ")[2] + if ($tRU -like "*-*") { $tRUV=$tRU.Split("-")[1]; $tRU=$tRU.Split("-")[0] } else { $tRUV="" } + if ([int]$tRU -ge [int]$RollupLevel) { $RollupLevel=$tRU; $RollupVersion=$tRUV } + } + } + } + } else { + Write-Warning "Cannot detect Rollup Version via Remote Registry for $($ExchangeServer.Name)" + } + # Exchange 2013 CU or SP Level + if ($ExchangeMajorVersion -ge 15) + { + $RegKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Exchange v15" + $RemoteRegistry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $ExchangeServer.Name); + if ($RemoteRegistry) + { + $ExchangeSPLevel = $RemoteRegistry.OpenSubKey($RegKey).getvalue("DisplayName") + if ($ExchangeSPLevel -like "*Service Pack*" -or $ExchangeSPLevel -like "*Cumulative Update*") + { + $ExchangeSPLevel = $ExchangeSPLevel.Replace("Microsoft Exchange Server 2013 ",""); + $ExchangeSPLevel = $ExchangeSPLevel.Replace("Microsoft Exchange Server 2016 ",""); + $ExchangeSPLevel = $ExchangeSPLevel.Replace("Service Pack ","SP"); + $ExchangeSPLevel = $ExchangeSPLevel.Replace("Cumulative Update ","CU"); + } else { + $ExchangeSPLevel = 0; + } + } else { + Write-Warning "Cannot detect CU/SP via Remote Registry for $($ExchangeServer.Name)" + } + } + + } + # Exchange 2003 + if ($ExchangeMajorVersion -eq 6.5) + { + # Mailbox Count + $MailboxCount = _GetExSvrMailboxCount -Mailboxes $Mailboxes -ExchangeServer $ExchangeServer -Databases $Databases + # Get Role via WMI + $tWMI = Get-WMIObject Exchange_Server -Namespace "root\microsoftexchangev2" -Computername $ExchangeServer.Name -Filter "Name='$($ExchangeServer.Name)'" + if ($tWMI) + { + if ($tWMI.IsFrontEndServer) { $Roles=@("FE") } else { $Roles=@("BE") } + } else { + Write-Warning "Cannot detect Front End/Back End Server information via WMI for $($ExchangeServer.Name)" + $Roles+="Unknown" + } + # Get Mailbox Statistics using WMI, return in a consistent format + $tWMI = Get-WMIObject -class Exchange_Mailbox -Namespace ROOT\MicrosoftExchangev2 -ComputerName $ExchangeServer.Name -Filter ("ServerName='$($ExchangeServer.Name)'") + if ($tWMI) + { + $MailboxStatistics = $tWMI | Select @{Name="DisplayName";Expression={$_.MailboxDisplayName}},@{Name="TotalItemSizeB";Expression={$_.Size}},@{Name="TotalDeletedItemSizeB";Expression={$_.DeletedMessageSizeExtended }},@{Name="Database";Expression={((get-mailboxdatabase -Identity "$($_.ServerName)\$($_.StorageGroupName)\$($_.StoreName)").identity)}} + } else { + Write-Warning "Cannot retrieve Mailbox Statistics via WMI for $($ExchangeServer.Name)" + $MailboxStatistics = $null + } + } + # Exchange 2000 + if ($ExchangeMajorVersion -eq "6.0") + { + # Mailbox Count + $MailboxCount = _GetExSvrMailboxCount -Mailboxes $Mailboxes -ExchangeServer $ExchangeServer -Databases $Databases + # Get Role via ADSI + $tADSI=[ADSI]"LDAP://$($ExchangeServer.OriginatingServer)/$($ExchangeServer.DistinguishedName)" + if ($tADSI) + { + if ($tADSI.ServerRole -eq 1) { $Roles=@("FE") } else { $Roles=@("BE") } + } else { + Write-Warning "Cannot detect Front End/Back End Server information via ADSI for $($ExchangeServer.Name)" + $Roles+="Unknown" + } + $MailboxStatistics = $null + } + + # Return Hashtable + @{Name = $ExchangeServer.Name.ToUpper() + RealName = $RealName + ExchangeMajorVersion = $ExchangeMajorVersion + ExchangeSPLevel = $ExchangeSPLevel + Edition = $ExchangeServer.Edition + Mailboxes = $MailboxCount + OSVersion = $OSVersion; + OSServicePack = $OSServicePack + Roles = $Roles + RollupLevel = $RollupLevel + RollupVersion = $RollupVersion + Site = $ExchangeServer.Site.Name + MailboxStatistics = $MailboxStatistics + Disks = $Disks + IntNames = $IntNames + ExtNames = $ExtNames + CASArrayName = $CASArrayName + } +} + +# Sub Function to Get Totals by Version +function _TotalsByVersion +{ + param($ExchangeEnvironment) + $TotalMailboxesByVersion=@{} + if ($ExchangeEnvironment.Sites) + { + foreach ($Site in $ExchangeEnvironment.Sites.GetEnumerator()) + { + foreach ($Server in $Site.Value) + { + if (!$TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"]) + { + $TotalMailboxesByVersion.Add("$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)",@{ServerCount=1;MailboxCount=$Server.Mailboxes}) + } else { + $TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"].ServerCount++ + $TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"].MailboxCount+=$Server.Mailboxes + } + } + } + } + if ($ExchangeEnvironment.Pre2007) + { + foreach ($FakeSite in $ExchangeEnvironment.Pre2007.GetEnumerator()) + { + foreach ($Server in $FakeSite.Value) + { + if (!$TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"]) + { + $TotalMailboxesByVersion.Add("$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)",@{ServerCount=1;MailboxCount=$Server.Mailboxes}) + } else { + $TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"].ServerCount++ + $TotalMailboxesByVersion["$($Server.ExchangeMajorVersion).$($Server.ExchangeSPLevel)"].MailboxCount+=$Server.Mailboxes + } + } + } + } + $TotalMailboxesByVersion +} + +# Sub Function to Get Totals by Role +function _TotalsByRole +{ + param($ExchangeEnvironment) + # Add Roles We Always Show + $TotalServersByRole=@{"ClientAccess" = 0 + "HubTransport" = 0 + "UnifiedMessaging" = 0 + "Mailbox" = 0 + "Edge" = 0 + } + if ($ExchangeEnvironment.Sites) + { + foreach ($Site in $ExchangeEnvironment.Sites.GetEnumerator()) + { + foreach ($Server in $Site.Value) + { + foreach ($Role in $Server.Roles) + { + if ($TotalServersByRole[$Role] -eq $null) + { + $TotalServersByRole.Add($Role,1) + } else { + $TotalServersByRole[$Role]++ + } + } + } + } + } + if ($ExchangeEnvironment.Pre2007["Pre 2007 Servers"]) + { + + foreach ($Server in $ExchangeEnvironment.Pre2007["Pre 2007 Servers"]) + { + + foreach ($Role in $Server.Roles) + { + if ($TotalServersByRole[$Role] -eq $null) + { + $TotalServersByRole.Add($Role,1) + } else { + $TotalServersByRole[$Role]++ + } + } + } + } + $TotalServersByRole +} + +# Sub Function to return HTML Table for Sites/Pre 2007 +function _GetOverview +{ + param($Servers,$ExchangeEnvironment,$ExRoleStrings,$Pre2007=$False) + if ($Pre2007) + { + $BGColHeader="#880099" + $BGColSubHeader="#8800CC" + $Prefix="" + $IntNamesText="" + $ExtNamesText="" + $CASArrayText="" + } else { + $BGColHeader="#000099" + $BGColSubHeader="#0000FF" + $Prefix="Site:" + $IntNamesText="" + $ExtNamesText="" + $CASArrayText="" + $IntNames=@() + $ExtNames=@() + $CASArrayName="" + foreach ($Server in $Servers.Value) + { + $IntNames+=$Server.IntNames + $ExtNames+=$Server.ExtNames + $CASArrayName=$Server.CASArrayName + + } + $IntNames = $IntNames|Sort -Unique + $ExtNames = $ExtNames|Sort -Unique + $IntNames = [system.String]::Join(",",$IntNames) + $ExtNames = [system.String]::Join(",",$ExtNames) + if ($IntNames) + { + $IntNamesText="Internal Names: $($IntNames)" + $ExtNamesText="External Names: $($ExtNames)
" + } + if ($CASArrayName) + { + $CASArrayText="CAS Array: $($CASArrayName)" + } + } + $Output=" + + "; + + $ExchangeEnvironment.TotalServersByRole.GetEnumerator()|Sort Name| %{$Output+=""} + $Output+="+ + + " + $TotalMailboxes=0 + $Servers.Value | %{$TotalMailboxes += $_.Mailboxes} + $Output+="" + $ExchangeEnvironment.TotalServersByRole.GetEnumerator()|Sort Name| %{$Output+=""} + $Output+="" + $AlternateRow=0 + + foreach ($Server in $Servers.Value) + { + $Output+=" + + + " + if ($ShowStorageGroups) + { + $Output+="" + } + $Output+=" + + " + if ($ShowArchiveDBs) + { + $Output+="" + } + $Output+="" + if ($ShowFreeDatabaseSpace) + { + $Output+="" + } + if ($ShowFreeLogDiskSpace) + { + $Output+="" + } + if ($ShowLastFullBackup) + { + $Output+="" + } + if ($ShowCircularLogging) + { + $Output+="" + } + if ($ShowCopies) + { + $Output+="" + } + + $Output+="" + $AlternateRow=0; + foreach ($Database in $Databases) + { + $Output+="$($Database.MailboxCount) + " + if ($ShowArchiveDBs) + { + $Output+=" + "; + } + $Output+=" + "; + if ($ShowFreeDatabaseSpace) + { + $Output+="" + } + if ($ShowFreeLogDiskSpace) + { + $Output+="" + } + if ($ShowLastFullBackup) + { + $Output+=""; + } + if ($ShowCircularLogging) + { + $Output+=""; + } + if ($ShowCopies) + { + $Output+="" + } + $Output+=""; + } + $Output+="
$($Prefix) $($Servers.Key)$($ExtNamesText)$($IntNamesText)$($CASArrayText)
Mailboxes: $($TotalMailboxes)" + $Output+="Exchange Version$($ExRoleStrings[$_.Key].Short)OS VersionOS Service Pack
ServerStorage GroupDatabase NameMailboxesAv. Mailbox SizeArchive MBsAv. Archive SizeDB SizeDB WhitespaceDatabase Disk FreeLog Disk FreeLast Full BackupCircular LoggingCopies (n)
$("{0:N2}" -f ($Database.MailboxAverageSize/1MB)) MB$($Database.ArchiveMailboxCount)$("{0:N2}" -f ($Database.ArchiveAverageSize/1MB)) MB$("{0:N2}" -f ($Database.Size/1GB)) GB $("{0:N2}" -f ($Database.Whitespace/1GB)) GB$("{0:N1}" -f $Database.FreeDatabaseDiskSpace)%$("{0:N1}" -f $Database.FreeLogDiskSpace)%$($Database.LastFullBackup)$($Database.CircularLoggingEnabled)$($Database.Copies|%{$_}) ($($Database.CopyCount))

" + + $Output +} + +# Sub Function to neatly update progress +function _UpProg1 +{ + param($PercentComplete,$Status,$Stage) + $TotalStages=5 + Write-Progress -id 1 -activity "Get-ExchangeEnvironmentReport" -status $Status -percentComplete (($PercentComplete/$TotalStages)+(1/$TotalStages*$Stage*100)) +} + +# 1. Initial Startup + +add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 + +$Date = Get-Date -format 'yyyy-MM-dd HH-mm-ss' +$Fichier = "D:\Informatique\All-Mailbox-$Date.csv" +$emailAttachments = "D:\Informatique\All-Mailbox.csv" + +Get-Mailbox -ResultSize Unlimited | Select-Object Displayname,name,alias,PrimarySmtpAddress,Database,@{Name='TotalItemSize'; Expression={[String]::join(";",((Get-MailboxStatistics -identity $_.identity).TotalItemSize))}},@{Name='ItemCount'; Expression={[String]::join(";",((Get-MailboxStatistics -identity $_.identity).ItemCount))}},IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota | where-object {$_.enabled -eq $True} | export-csv -path $Fichier + +(Get-Content $Fichier) -replace '","','";"' | Set-Content "D:\Informatique\All-Mailbox-temp.csv" +(Get-Content "D:\Informatique\All-Mailbox-temp.csv") -replace ',,,',';;;' | Set-Content $emailAttachments + +Start-Sleep -s 10 + +# 1.0 Check Powershell Version +if ((Get-Host).Version.Major -eq 1) +{ + throw "Powershell Version 1 not supported"; +} + +# 1.1 Check Exchange Management Shell, attempt to load +if (!(Get-Command Get-ExchangeServer -ErrorAction SilentlyContinue)) +{ + if (Test-Path "C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1") + { + . 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1' + Connect-ExchangeServer -auto + } elseif (Test-Path "C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1") { + Add-PSSnapIn Microsoft.Exchange.Management.PowerShell.Admin + .'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1' + } else { + throw "Exchange Management Shell cannot be loaded" + } +} + +# 1.2 Check if -SendMail parameter set and if so check -MailFrom, -MailTo and -MailServer are set +if ($SendMail) +{ + if (!$MailFrom -or !$MailTo -or !$MailServer) + { + throw "If -SendMail specified, you must also specify -MailFrom, -MailTo and -MailServer" + } +} + +# 1.3 Check Exchange Management Shell Version +if ((Get-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.Admin -ErrorAction SilentlyContinue)) +{ + $E2010 = $false; + if (Get-ExchangeServer | Where {$_.AdminDisplayVersion.Major -gt 14}) + { + Write-Warning "Exchange 2010 or higher detected. You'll get better results if you run this script from the latest management shell" + } +}else{ + + $E2010 = $true + $localserver = get-exchangeserver $Env:computername + $localversion = $localserver.admindisplayversion.major + if ($localversion -eq 15) { $E2013 = $true } + +} + +# 1.4 Check view entire forest if set (by default, true) +if ($E2010) +{ + Set-ADServerSettings -ViewEntireForest:$ViewEntireForest +} else { + $global:AdminSessionADSettings.ViewEntireForest = $ViewEntireForest +} + +# 1.5 Initial Variables + +# 1.5.1 Hashtable to update with environment data +$ExchangeEnvironment = @{Sites = @{} + Pre2007 = @{} + Servers = @{} + DAGs = @() + NonDAGDatabases = @() + } +# 1.5.7 Exchange Major Version String Mapping +$ExMajorVersionStrings = @{"6.0" = @{Long="Exchange 2000";Short="E2000"} + "6.5" = @{Long="Exchange 2003";Short="E2003"} + "8" = @{Long="Exchange 2007";Short="E2007"} + "14" = @{Long="Exchange 2010";Short="E2010"} + "15" = @{Long="Exchange 2013";Short="E2013"} + "15.1" = @{Long="Exchange 2016";Short="E2016"}} +# 1.5.8 Exchange Service Pack String Mapping +$ExSPLevelStrings = @{"0" = "RTM" + "1" = "SP1" + "2" = "SP2" + "3" = "SP3" + "4" = "SP4" + "SP1" = "SP1" + "SP2" = "SP2"} + # Add many CUs + for ($i = 1; $i -le 20; $i++) + { + $ExSPLevelStrings.Add("CU$($i)","CU$($i)"); + } +# 1.5.9 Populate Full Mapping using above info +$ExVersionStrings = @{} +foreach ($Major in $ExMajorVersionStrings.GetEnumerator()) +{ + foreach ($Minor in $ExSPLevelStrings.GetEnumerator()) + { + $ExVersionStrings.Add("$($Major.Key).$($Minor.Key)",@{Long="$($Major.Value.Long) $($Minor.Value)";Short="$($Major.Value.Short)$($Minor.Value)"}) + } +} +# 1.5.10 Exchange Role String Mapping +$ExRoleStrings = @{"ClusteredMailbox" = @{Short="ClusMBX";Long="CCR/SCC Clustered Mailbox"} + "Mailbox" = @{Short="MBX";Long="Mailbox"} + "ClientAccess" = @{Short="CAS";Long="Client Access"} + "HubTransport" = @{Short="HUB";Long="Hub Transport"} + "UnifiedMessaging" = @{Short="UM";Long="Unified Messaging"} + "Edge" = @{Short="EDGE";Long="Edge Transport"} + "FE" = @{Short="FE";Long="Front End"} + "BE" = @{Short="BE";Long="Back End"} + "Hybrid" = @{Short="HYB"; Long="Hybrid"} + "Unknown" = @{Short="Unknown";Long="Unknown"}} + +# 2 Get Relevant Exchange Information Up-Front + +# 2.1 Get Server, Exchange and Mailbox Information +_UpProg1 1 "Getting Exchange Server List" 1 +$ExchangeServers = [array](Get-ExchangeServer $ServerFilter) +if (!$ExchangeServers) +{ + throw "No Exchange Servers matched by -ServerFilter ""$($ServerFilter)""" +} +$HybridServers=@() +if (Get-Command Get-HybridConfiguration -ErrorAction SilentlyContinue) +{ + $HybridConfig = Get-HybridConfiguration + $HybridConfig.ReceivingTransportServers|%{ $HybridServers+=$_.Name } + $HybridConfig.SendingTransportServers|%{ $HybridServers+=$_.Name } + $HybridServers = $HybridServers | Sort-Object -Unique +} + +_UpProg1 10 "Getting Mailboxes" 1 +$Mailboxes = [array](Get-Mailbox -ResultSize Unlimited) | Where {$_.Server -like $ServerFilter} +if ($E2010) +{ + _UpProg1 60 "Getting Archive Mailboxes" 1 + $ArchiveMailboxes = [array](Get-Mailbox -Archive -ResultSize Unlimited) | Where {$_.Server -like $ServerFilter} + _UpProg1 70 "Getting Remote Mailboxes" 1 + $RemoteMailboxes = [array](Get-RemoteMailbox -ResultSize Unlimited) + $ExchangeEnvironment.Add("RemoteMailboxes",$RemoteMailboxes.Count) + _UpProg1 90 "Getting Databases" 1 + if ($E2013) + { + $Databases = [array](Get-MailboxDatabase -IncludePreExchange2013 -Status) | Where {$_.Server -like $ServerFilter} + } + elseif ($E2010) + { + $Databases = [array](Get-MailboxDatabase -IncludePreExchange2010 -Status) | Where {$_.Server -like $ServerFilter} + } + $DAGs = [array](Get-DatabaseAvailabilityGroup) | Where {$_.Servers -like $ServerFilter} +} else { + $ArchiveMailboxes = $null + $ArchiveMailboxStats = $null + $DAGs = $null + _UpProg1 90 "Getting Databases" 1 + $Databases = [array](Get-MailboxDatabase -IncludePreExchange2007 -Status) | Where {$_.Server -like $ServerFilter} + $ExchangeEnvironment.Add("RemoteMailboxes",0) +} + +# 2.3 Populate Information we know +$ExchangeEnvironment.Add("TotalMailboxes",$Mailboxes.Count + $ExchangeEnvironment.RemoteMailboxes); + +# 3 Process High-Level Exchange Information + +# 3.1 Collect Exchange Server Information +for ($i=0; $i -lt $ExchangeServers.Count; $i++) +{ + _UpProg1 ($i/$ExchangeServers.Count*100) "Getting Exchange Server Information" 2 + # Get Exchange Info + $ExSvr = _GetExSvr -E2010 $E2010 -ExchangeServer $ExchangeServers[$i] -Mailboxes $Mailboxes -Databases $Databases -Hybrids $HybridServers + # Add to site or pre-Exchange 2007 list + if ($ExSvr.Site) + { + # Exchange 2007 or higher + if (!$ExchangeEnvironment.Sites[$ExSvr.Site]) + { + $ExchangeEnvironment.Sites.Add($ExSvr.Site,@($ExSvr)) + } else { + $ExchangeEnvironment.Sites[$ExSvr.Site]+=$ExSvr + } + } else { + # Exchange 2003 or lower + if (!$ExchangeEnvironment.Pre2007["Pre 2007 Servers"]) + { + $ExchangeEnvironment.Pre2007.Add("Pre 2007 Servers",@($ExSvr)) + } else { + $ExchangeEnvironment.Pre2007["Pre 2007 Servers"]+=$ExSvr + } + } + # Add to Servers List + $ExchangeEnvironment.Servers.Add($ExSvr.Name,$ExSvr) +} + +# 3.2 Calculate Environment Totals for Version/Role using collected data +_UpProg1 1 "Getting Totals" 3 +$ExchangeEnvironment.Add("TotalMailboxesByVersion",(_TotalsByVersion -ExchangeEnvironment $ExchangeEnvironment)) +$ExchangeEnvironment.Add("TotalServersByRole",(_TotalsByRole -ExchangeEnvironment $ExchangeEnvironment)) + +# 3.4 Populate Environment DAGs +_UpProg1 5 "Getting DAG Info" 3 +if ($DAGs) +{ + foreach($DAG in $DAGs) + { + $ExchangeEnvironment.DAGs+=(_GetDAG -DAG $DAG) + } +} + +# 3.5 Get Database information +_UpProg1 60 "Getting Database Info" 3 +for ($i=0; $i -lt $Databases.Count; $i++) +{ + $Database = _GetDB -Database $Databases[$i] -ExchangeEnvironment $ExchangeEnvironment -Mailboxes $Mailboxes -ArchiveMailboxes $ArchiveMailboxes -E2010 $E2010 + $DAGDB = $false + for ($j=0; $j -lt $ExchangeEnvironment.DAGs.Count; $j++) + { + if ($ExchangeEnvironment.DAGs[$j].Members -contains $Database.ActiveOwner) + { + $DAGDB=$true + $ExchangeEnvironment.DAGs[$j].Databases += $Database + } + } + if (!$DAGDB) + { + $ExchangeEnvironment.NonDAGDatabases += $Database + } + + +} + +# 4 Write Information +_UpProg1 5 "Writing HTML Report Header" 4 +# Header +$Output=" + + +

Exchange Environment Report

+

Generated $((Get-Date).ToString())

+
+ + +" +if ($ExchangeEnvironment.RemoteMailboxes) + { + $Output+="" + } else { + $Output+="" + } +$Output+=" +" +# Show Column Headings based on the Exchange versions we have +$ExchangeEnvironment.TotalMailboxesByVersion.GetEnumerator()|Sort Name| %{$Output+=""} +$ExchangeEnvironment.TotalMailboxesByVersion.GetEnumerator()|Sort Name| %{$Output+=""} +if ($ExchangeEnvironment.RemoteMailboxes) +{ + $Output+="" +} +$Output+="" +$ExchangeEnvironment.TotalServersByRole.GetEnumerator()|Sort Name| %{$Output+=""} +$Output+="" +$Output+="" +$ExchangeEnvironment.TotalMailboxesByVersion.GetEnumerator()|Sort Name| %{$Output+="" } +$ExchangeEnvironment.TotalMailboxesByVersion.GetEnumerator()|Sort Name| %{$Output+="" } +if ($RemoteMailboxes) +{ + $Output+="" +} +$Output+="" +$ExchangeEnvironment.TotalServersByRole.GetEnumerator()|Sort Name| %{$Output+=""} +$Output+="
Total Servers:Total Mailboxes:Total Mailboxes:Total Roles:
$($ExVersionStrings[$_.Key].Short)$($ExVersionStrings[$_.Key].Short)Office 365Org$($ExRoleStrings[$_.Key].Short)
$($_.Value.ServerCount)$($_.Value.MailboxCount)$($ExchangeEnvironment.RemoteMailboxes)$($ExchangeEnvironment.TotalMailboxes)$($_.Value)

" + +$SPLA = (Get-Mailbox -ResultSize Unlimited -Filter {EmailAddresses -like "*.mailnot.fr"} ).Count + +$Output+=" + + + +
Compte SPLAMember Count
*.mailnot.fr $SPLA

" + +# Sites and Servers +_UpProg1 20 "Writing HTML Site Information" 4 +foreach ($Site in $ExchangeEnvironment.Sites.GetEnumerator()) +{ + $Output+=_GetOverview -Servers $Site -ExchangeEnvironment $ExchangeEnvironment -ExRoleStrings $ExRoleStrings +} +_UpProg1 40 "Writing HTML Pre-2007 Information" 4 +foreach ($FakeSite in $ExchangeEnvironment.Pre2007.GetEnumerator()) +{ + $Output+=_GetOverview -Servers $FakeSite -ExchangeEnvironment $ExchangeEnvironment -ExRoleStrings $ExRoleStrings -Pre2007:$true +} + + +_UpProg1 60 "Writing HTML DAG Information" 4 +foreach ($DAG in $ExchangeEnvironment.DAGs) +{ + if ($DAG.MemberCount -gt 0) + { + # Database Availability Group Header + $Output+=" + + + +
Database Availability Group NameMember CountDatabase Availability Group Members
$($DAG.Name) + $($DAG.MemberCount)" + $DAG.Members | % { $Output+="$($_) " } + $Output+="
" + + # Get Table HTML + $Output+=_GetDBTable -Databases $DAG.Databases + } + +} + +if ($ExchangeEnvironment.NonDAGDatabases.Count) +{ + _UpProg1 80 "Writing HTML Non-DAG Database Information" 4 + $Output+=" +
Mailbox Databases (Non-DAG)
" + $Output+=_GetDBTable -Databases $ExchangeEnvironment.NonDAGDatabases +} + + +# End +_UpProg1 90 "Finishing off.." 4 +$Output+=""; +$Output | Out-File $HTMLReport + + +if ($SendMail) +{ + _UpProg1 95 "Sending mail message.." 4 + Send-MailMessage -Attachments $HTMLReport -To $MailTo -From $MailFrom -Subject "Exchange Environment Report" -BodyAsHtml $Output -SmtpServer $MailServer +} \ No newline at end of file diff --git a/Exchange/Rapports-MailBox.ps1 b/Exchange/Rapports-MailBox.ps1 new file mode 100644 index 0000000..173fe59 --- /dev/null +++ b/Exchange/Rapports-MailBox.ps1 @@ -0,0 +1,50 @@ +add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 + +$Date = Get-Date -format 'yyyy-MM-dd HH-mm-ss' +$Fichier = "D:\Informatique\All-Mailbox-$Date.csv" +$emailAttachments = "D:\Informatique\All-Mailbox.csv" + +#Get-Mailbox -ResultSize Unlimited | Select-Object Displayname,name,alias,PrimarySmtpAddress,Database,@{Name='TotalItemSize'; Expression={[String]::join(";",((Get-MailboxStatistics -identity $_.identity).TotalItemSize))}},@{Name='ItemCount'; Expression={[String]::join(";",((Get-MailboxStatistics -identity $_.identity).ItemCount))}},IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota | where-object {$_.enabled -eq $True} | export-csv -path $Fichier +Get-Mailbox -ResultSize Unlimited | Select-Object Displayname,name,alias,PrimarySmtpAddress,Database,@{Name='TotalItemSize'; Expression={[String]::join(";",((Get-MailboxStatistics -identity $_.identity).TotalItemSize))}},@{Name='ItemCount'; Expression={[String]::join(";",((Get-MailboxStatistics -identity $_.identity).ItemCount))}},IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota | export-csv -path $Fichier + +$SPLA = (Get-Mailbox -ResultSize Unlimited -Filter {EmailAddresses -like "*.mailnot.fr"} ).Count + +(Get-Content $Fichier) -replace '","','";"' | Set-Content "D:\Informatique\All-Mailbox-temp.csv" +(Get-Content "D:\Informatique\All-Mailbox-temp.csv") -replace ',,,',';;;' | Set-Content $emailAttachments + +Start-Sleep -s 10 + +$emailSmtpServer = "10.101.10.2" +$emailSmtpServerPort = "25" + +$emailFrom = "Rapports@cloud-fichorga.fr" +$emailTo = "hcornet@fichorga.fr, ypereira@fichorga.fr, fdupont@fichorga.fr, cleroux@fichorga.fr, jmdefossez@fichorga.fr, alefevre@pmsjuris.fr, sdemarez@fichorga.fr, mdelplanche@fichorga.fr, eringuet@fichorga.fr" + + +$body = "" +$body += "

" +$body += "Bonjour a tous

" +$body += "Voici l'extraction de l'ensemble des boites mail client a la date du $Date.
" +$body += "

" +$body += "Il y a : $SPLA comptes à déclarer pour le SPLA.
" +$body += "

" +$body += "Bonne lecture.

" +$body += "Merci de ne pas faire repondre a ce message.
" +$body += "Pour ne plus faire partie de la liste Send Mail.
" + +$emailMessage = New-Object System.Net.Mail.MailMessage( $emailFrom , $emailTo ) +$emailMessage.Subject = "Extraction : client CONNECT" +$emailMessage.IsBodyHtml = $True +$emailMessage.Body = $body +$emailMessage.Attachments.add($emailAttachments) + +$SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer, $emailSmtpServerPort ) +$SMTPClient.EnableSsl = $False +$SMTPClient.Send( $emailMessage ) + +Start-Sleep -s 10 + +Remove-Item "D:\Informatique\All-Mailbox-$Date.csv" -recurse +Remove-Item "D:\Informatique\All-Mailbox-temp.csv" -recurse +Remove-Item "D:\Informatique\All-Mailbox.csv" -recurse + diff --git a/Exchange/Test-ExchangeServerHealth.ps1 b/Exchange/Test-ExchangeServerHealth.ps1 new file mode 100644 index 0000000..d99b9e0 --- /dev/null +++ b/Exchange/Test-ExchangeServerHealth.ps1 @@ -0,0 +1,2157 @@ +<# +.SYNOPSIS +Test-ExchangeServerHealth.ps1 - Exchange Server Health Check Script. + +.DESCRIPTION +Performs a series of health checks on Exchange servers and DAGs +and outputs the results to screen, and optionally to log file, HTML report, +and HTML email. + +Use the ignorelist.txt file to specify any servers, DAGs, or databases you +want the script to ignore (eg test/dev servers). + +.OUTPUTS +Results are output to screen, as well as optional log file, HTML report, and HTML email + +.PARAMETER Server +Perform a health check of a single server + +.PARAMETER ReportMode +Set to $true to generate a HTML report. A default file name is used if none is specified. + +.PARAMETER ReportFile +Allows you to specify a different HTML report file name than the default. + +.PARAMETER SendEmail +Sends the HTML report via email using the SMTP configuration within the script. + +.PARAMETER AlertsOnly +Only sends the email report if at least one error or warning was detected. + +.PARAMETER Log +Writes a log file to help with troubleshooting. + +.EXAMPLE +.\Test-ExchangeServerHealth.ps1 +Checks all servers in the organization and outputs the results to the shell window. + +.EXAMPLE +.\Test-ExchangeServerHealth.ps1 -Server HO-EX2010-MB1 +Checks the server HO-EX2010-MB1 and outputs the results to the shell window. + +.EXAMPLE +.\Test-ExchangeServerHealth.ps1 -ReportMode -SendEmail +Checks all servers in the organization, outputs the results to the shell window, a HTML report, and +emails the HTML report to the address configured in the script. + +.LINK +https://practical365.com/exchange-server/powershell-script-exchange-server-health-check-report/ + +.NOTES +Written by: Paul Cunningham + +Find me on: + +* My Blog: http://paulcunningham.me +* Twitter: https://twitter.com/paulcunningham +* LinkedIn: http://au.linkedin.com/in/cunninghamp/ +* Github: https://github.com/cunninghamp + +For more Exchange Server tips, tricks and news +check out Exchange Server Pro. + +* Website: https://practical365.com +* Twitter: https://twitter.com/practical365 + +Additional Credits (code contributions and testing): +- Chris Brown, http://twitter.com/chrisbrownie +- Ingmar Brückner +- John A. Eppright +- Jonas Borelius +- Thomas Helmdach +- Bruce McKay +- Tony Holdgate +- Ryan +- Rob Silver +- andrewcr7, https://github.com/andrewcr7 + +License: + +The MIT License (MIT) + +Copyright (c) 2017 Paul Cunningham + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Change Log +V1.00, 05/07/2012 - Initial version +V1.01, 05/08/2012 - Minor bug fixes and removed Edge Tranport checks +V1.02, 05/05/2013 - A lot of bug fixes, updated SMTP to use Send-MailMessage, added DAG health check. +V1.03, 04/08/2013 - Minor bug fixes +V1.04, 19/08/2013 - Added Exchange 2013 compatibility, added option to output a log file, converted many + sections of code to use pre-defined strings, fixed -AlertsOnly parameter, improved summary + sections of report to be more readable and include DAG summary +V1.05, 23/08/2013 - Added workaround for Test-ServiceHealth error for Exchange 2013 CAS-only servers +V1.06, 28/10/2013 - Added workaround for Test-Mailflow error for Exchange 2013 Mailbox servers. + - Added workaround for Exchange 2013 mail test. + - Added localization strings for service health check errors for non-English systems. + - Fixed an uptime calculation bug for some regional settings. + - Excluded recovery databases from active database calculation. + - Fixed bug where high transport queues would not count as an alert. + - Fixed error thrown when Site attribute can't be found for Exchange 2003 servers. + - Fixed bug causing Exchange 2003 servers to be added to the report twice. +V1.07, 24/11/2013 - Fixed bug where disabled content indexes were counted as failed. +V1.08, 29/06/2014 - Fixed bug with DAG reporting in mixed Exchange 2010/2013 orgs. +V1.09, 06/07/2014 - Fixed bug with DAG member replication health reporting for mixed Exchange 2010/2013 orgs. +V1.10, 19/08/2014 - Fixed bug with E14 replication health not testing correct server. +V1.11, 11/02/2015 - Added queue length to Transport queue result in report. +V1.12, 05/03/2015 - Fixed bug with color-coding in report for Transport Queue length. +V1.13, 07/03/2015 - Fixed bug with incorrect function name used sometimes when trying to call Write-LogFile +V1.14, 21/05/2015 - Fixed bug with color-coding in report for Transport Queue length on CAS-only Exchange 2013 servers. +V1.15, 18/11/2015 - Fixed bug with Exchange 2016 version detection. +V1.16, 13/04/2017 - Fixed bugs with recovery DB detection, invalid variables, shadow redundancy queues, and lagged copy detection. +V1.17, 17/05/2017 - Fixed bug with auto-suspended content index detection +#> + +#requires -version 2 + +[CmdletBinding()] +param ( + [Parameter( Mandatory=$false)] + [string]$Server, + + [Parameter( Mandatory=$false)] + [string]$ServerList, + + [Parameter( Mandatory=$false)] + [string]$ReportFile="exchangeserverhealth.html", + + [Parameter( Mandatory=$false)] + [switch]$ReportMode, + + [Parameter( Mandatory=$false)] + [switch]$SendEmail, + + [Parameter( Mandatory=$false)] + [switch]$AlertsOnly, + + [Parameter( Mandatory=$false)] + [switch]$Log + ) + + +#................................... +# Variables +#................................... + +$now = Get-Date #Used for timestamps +$date = $now.ToShortDateString() #Short date format for email message subject +[array]$exchangeservers = @() #Array for the Exchange server or servers to check +[int]$transportqueuehigh = 100 #Change this to set transport queue high threshold. Must be higher than warning threshold. +[int]$transportqueuewarn = 80 #Change this to set transport queue warning threshold. Must be lower than high threshold. +$mapitimeout = 10 #Timeout for each MAPI connectivity test, in seconds +$pass = "Green" +$warn = "Yellow" +$fail = "Red" +$ip = $null +[array]$serversummary = @() #Summary of issues found during server health checks +[array]$dagsummary = @() #Summary of issues found during DAG health checks +[array]$report = @() +[bool]$alerts = $false +[array]$dags = @() #Array for DAG health check +[array]$dagdatabases = @() #Array for DAG databases +[int]$replqueuewarning = 8 #Threshold to consider a replication queue unhealthy +$dagreportbody = $null + +$myDir = Split-Path -Parent $MyInvocation.MyCommand.Path + +#................................... +# Modify these Variables (optional) +#................................... + +$reportemailsubject = "Exchange Server Health Report" +$ignorelistfile = "$myDir\ignorelist.txt" +$logfile = "$myDir\exchangeserverhealth.log" + +#................................... +# Modify these Email Settings +#................................... + +$smtpsettings = @{ + #To = hcornet@fichorga.fr,jmdefossez@fichorga.fr + From = "Rapports@cloud-fichorga.fr" + Subject = "$reportemailsubject - $now" + SmtpServer = "10.101.10.2" + } + + +#................................... +# Modify these language +# localization strings. +#................................... + +# The server roles must match the role names you see when you run Test-ServiceHealth. +#$casrole = "Client Access Server Role" +$casrole = "Rôle serveur d'accès au client" +#$htrole = "Hub Transport Server Role" +$htrole = "Rôle serveur de transport Hub" +#$mbrole = "Mailbox Server Role" +$mbrole = "Rôle serveur de boîtes aux lettres" +#$umrole = "Unified Messaging Server Role" +$umrole = "Rôle serveur de messagerie unifiée" + +# This should match the word for "Success", or the result of a successful Test-MAPIConnectivity test +$success = "Success" + +#................................... +# Logfile Strings +#................................... + +$logstring0 = "=====================================" +$logstring1 = " Exchange Server Health Check" + +#................................... +# Initialization Strings +#................................... + +$initstring0 = "Initializing..." +$initstring1 = "Loading the Exchange Server PowerShell snapin" +$initstring2 = "The Exchange Server PowerShell snapin did not load." +$initstring3 = "Setting scope to entire forest" + +#................................... +# Error/Warning Strings +#................................... + +$string0 = "Server is not an Exchange server. " +$string1 = "Server is not reachable. " +$string3 = "------ Checking" +$string4 = "Could not test service health. " +$string5 = "required services not running. " +$string6 = "Could not check queue. " +$string7 = "Public Folder database not mounted. " +$string8 = "Skipping Edge Transport server. " +$string9 = "Mailbox databases not mounted. " +$string10 = "MAPI tests failed. " +$string11 = "Mail flow test failed. " +$string12 = "No Exchange Server 2003 checks performed. " +$string13 = "Server not found in DNS. " +$string14 = "Sending email. " +$string15 = "Done." +$string16 = "------ Finishing" +$string17 = "Unable to retrieve uptime. " +$string18 = "Ping failed. " +$string19 = "No alerts found, and AlertsOnly switch was used. No email sent. " +$string20 = "You have specified a single server to check" +$string21 = "Couldn't find the server $server. Script will terminate." +$string22 = "The file $ignorelistfile could not be found. No servers, DAGs or databases will be ignored." +$string23 = "You have specified a filename containing a list of servers to check" +$string24 = "The file $serverlist could not be found. Script will terminate." +$string25 = "Retrieving server list" +$string26 = "Removing servers in ignorelist from server list" +$string27 = "Beginning the server health checks" +$string28 = "Servers, DAGs and databases to ignore:" +$string29 = "Servers to check:" +$string30 = "Checking DNS" +$string31 = "DNS check passed" +$string32 = "Checking ping" +$string33 = "Ping test passed" +$string34 = "Checking uptime" +$string35 = "Checking service health" +$string36 = "Checking Hub Transport Server" +$string37 = "Checking Mailbox Server" +$string38 = "Ignore list contains no server names." +$string39 = "Checking public folder database" +$string40 = "Public folder database status is" +$string41 = "Checking mailbox databases" +$string42 = "Mailbox database status is" +$string43 = "Offline databases: " +$string44 = "Checking MAPI connectivity" +$string45 = "MAPI connectivity status is" +$string46 = "MAPI failed to: " +$string47 = "Checking mail flow" +$string48 = "Mail flow status is" +$string49 = "No active DBs" +$string50 = "Finished checking server" +$string51 = "Skipped" +$string52 = "Using alternative test for Exchange 2013 CAS-only server" +$string60 = "Beginning the DAG health checks" +$string61 = "Could not determine server with active database copy" +$string62 = "mounted on server that is activation preference" +$string63 = "unhealthy database copy count is" +$string64 = "healthy copy/replay queue count is" +$string65 = "(of" +$string66 = ")" +$string67 = "unhealthy content index count is" +$string68 = "DAGs to check:" +$string69 = "DAG databases to check" + + + +#................................... +# Functions +#................................... + +#This function is used to generate HTML for the DAG member health report +Function New-DAGMemberHTMLTableCell() +{ + param( $lineitem ) + + $htmltablecell = $null + + switch ($($line."$lineitem")) + { + $null { $htmltablecell = "n/a" } + "Passed" { $htmltablecell = "$($line."$lineitem")" } + default { $htmltablecell = "$($line."$lineitem")" } + } + + return $htmltablecell +} + +#This function is used to generate HTML for the server health report +Function New-ServerHealthHTMLTableCell() +{ + param( $lineitem ) + + $htmltablecell = $null + + switch ($($reportline."$lineitem")) + { + $success {$htmltablecell = "$($reportline."$lineitem")"} + "Success" {$htmltablecell = "$($reportline."$lineitem")"} + "Pass" {$htmltablecell = "$($reportline."$lineitem")"} + "Warn" {$htmltablecell = "$($reportline."$lineitem")"} + "Access Denied" {$htmltablecell = "$($reportline."$lineitem")"} + "Fail" {$htmltablecell = "$($reportline."$lineitem")"} + "Could not test service health. " {$htmltablecell = "$($reportline."$lineitem")"} + "Unknown" {$htmltablecell = "$($reportline."$lineitem")"} + default {$htmltablecell = "$($reportline."$lineitem")"} + } + + return $htmltablecell +} + +#This function is used to write the log file if -Log is used +Function Write-Logfile() +{ + param( $logentry ) + $timestamp = Get-Date -DisplayHint Time + "$timestamp $logentry" | Out-File $logfile -Append +} + +#This function is used to test service health for Exchange 2013 CAS-only servers +Function Test-E15CASServiceHealth() +{ + param ( $e15cas ) + + $e15casservicehealth = $null + $servicesrunning = @() + $servicesnotrunning = @() + $casservices = @( + "IISAdmin", + "W3Svc", + "WinRM", + "MSExchangeADTopology", + "MSExchangeDiagnostics", + "MSExchangeFrontEndTransport", + #"MSExchangeHM", + "MSExchangeIMAP4", + "MSExchangePOP3", + "MSExchangeServiceHost", + "MSExchangeUMCR" + ) + + try { + $servicestates = @(Get-WmiObject -ComputerName $e15cas -Class Win32_Service -ErrorAction STOP | Where-Object {$casservices -icontains $_.Name} | Select-Object name,state,startmode) + } + catch + { + if ($Log) {Write-LogFile $_.Exception.Message} + Write-Warning $_.Exception.Message + $e15casservicehealth = "Fail" + } + + if (!($e15casservicehealth)) + { + $servicesrunning = @($servicestates | Where-Object {$_.StartMode -eq "Auto" -and $_.State -eq "Running"}) + $servicesnotrunning = @($servicestates | Where-Object {$_.Startmode -eq "Auto" -and $_.State -ne "Running"}) + if ($($servicesnotrunning.Count) -gt 0) + { + Write-Verbose "Service health check failed" + Write-Verbose "Services not running:" + foreach ($service in $servicesnotrunning) + { + Write-Verbose "- $($service.Name)" + } + $e15casservicehealth = "Fail" + } + else + { + Write-Verbose "Service health check passed" + $e15casservicehealth = "Pass" + } + } + return $e15casservicehealth +} + +#This function is used to test mail flow for Exchange 2013 Mailbox servers +Function Test-E15MailFlow() +{ + param ( $e15mailboxserver ) + + $e15mailflowresult = $null + + Write-Verbose "Creating PSSession for $e15mailboxserver" + $url = (Get-PowerShellVirtualDirectory -Server $e15mailboxserver -AdPropertiesOnly | Where-Object {$_.Name -eq "Powershell (Default Web Site)"}).InternalURL.AbsoluteUri + if ($url -eq $null) + { + $url = "http://$e15mailboxserver/powershell" + } + + try + { + $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $url -ErrorAction STOP + } + catch + { + Write-Verbose "Something went wrong" + if ($Log) {Write-LogFile $_.Exception.Message} + Write-Warning $_.Exception.Message + $e15mailflowresult = "Fail" + } + + try + { + Write-Verbose "Running mail flow test on $e15mailboxserver" + $result = Invoke-Command -Session $session {Test-Mailflow} -ErrorAction STOP + $e15mailflowresult = $result.TestMailflowResult + } + catch + { + Write-Verbose "An error occurred" + if ($Log) {Write-LogFile $_.Exception.Message} + Write-Warning $_.Exception.Message + $e15mailflowresult = "Fail" + } + + Write-Verbose "Mail flow test: $e15mailflowresult" + Write-Verbose "Removing PSSession" + Remove-PSSession $session.Id + + return $e15mailflowresult +} + +#This function is used to test replication health for Exchange 2010 DAG members in mixed 2010/2013 organizations +Function Test-E14ReplicationHealth() +{ + param ( $e14mailboxserver ) + + $e14replicationhealth = $null + + #Find an E14 CAS in the same site + $ADSite = (Get-ExchangeServer $e14mailboxserver).Site + $e14cas = (Get-ExchangeServer | Where-Object {$_.IsClientAccessServer -and $_.AdminDisplayVersion -match "Version 14" -and $_.Site -eq $ADSite} | Select-Object -first 1).FQDN + + Write-Verbose "Creating PSSession for $e14cas" + $url = (Get-PowerShellVirtualDirectory -Server $e14cas -AdPropertiesOnly | Where-Object {$_.Name -eq "Powershell (Default Web Site)"}).InternalURL.AbsoluteUri + if ($url -eq $null) + { + $url = "http://$e14cas/powershell" + } + + Write-Verbose "Using URL $url" + + try + { + $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $url -ErrorAction STOP + } + catch + { + Write-Verbose "Something went wrong" + if ($Log) {Write-LogFile $_.Exception.Message} + Write-Warning $_.Exception.Message + #$e14replicationhealth = "Fail" + } + + try + { + Write-Verbose "Running replication health test on $e14mailboxserver" + #$e14replicationhealth = Invoke-Command -Session $session {Test-ReplicationHealth} -ErrorAction STOP + $e14replicationhealth = Invoke-Command -Session $session -Args $e14mailboxserver.Name {Test-ReplicationHealth $args[0]} -ErrorAction STOP + } + catch + { + Write-Verbose "An error occurred" + if ($Log) {Write-LogFile $_.Exception.Message} + Write-Warning $_.Exception.Message + #$e14replicationhealth = "Fail" + } + + #Write-Verbose "Replication health test: $e14replicationhealth" + Write-Verbose "Removing PSSession" + Remove-PSSession $session.Id + + return $e14replicationhealth +} + + +#................................... +# Initialize +#................................... + +#Log file is overwritten each time the script is run to avoid +#very large log files from growing over time +if ($Log) { + $timestamp = Get-Date -DisplayHint Time + "$timestamp $logstring0" | Out-File $logfile + Write-Logfile $logstring1 + Write-Logfile " $now" + Write-Logfile $logstring0 +} + +Write-Host $initstring0 +if ($Log) {Write-Logfile $initstring0} + +#Add Exchange 2010 snapin if not already loaded in the PowerShell session +if (!(Get-PSSnapin | Where-Object {$_.Name -eq "Microsoft.Exchange.Management.PowerShell.E2010"})) +{ + Write-Verbose $initstring1 + if ($Log) {Write-Logfile $initstring1} + try + { + Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction STOP + } + catch + { + #Snapin was not loaded + Write-Verbose $initstring2 + if ($Log) {Write-Logfile $initstring2} + Write-Warning $_.Exception.Message + EXIT + } + . $env:ExchangeInstallPath\bin\RemoteExchange.ps1 + Connect-ExchangeServer -auto -AllowClobber +} + + +#Set scope to include entire forest +Write-Verbose $initstring3 +if ($Log) {Write-Logfile $initstring3} +if (!(Get-ADServerSettings).ViewEntireForest) +{ + Set-ADServerSettings -ViewEntireForest $true -WarningAction SilentlyContinue +} + + +#................................... +# Script +#................................... + +#Check if a single server was specified +if ($server) +{ + #Run for single specified server + [bool]$NoDAG = $true + Write-Verbose $string20 + if ($Log) {Write-Logfile $string20} + try + { + $exchangeservers = Get-ExchangeServer $server -ErrorAction STOP + } + catch + { + #Exit because single server name was specified and couldn't be found in the organization + Write-Verbose $string21 + if ($Log) {Write-Logfile $string21} + Write-Error $_.Exception.Message + EXIT + } +} +elseif ($serverlist) +{ + #Run for a list of servers in a text file + [bool]$NoDAG = $true + Write-Verbose $string23 + if ($Log) {Write-Logfile $string23} + try + { + $tmpservers = @(Get-Content $serverlist -ErrorAction STOP) + $exchangeservers = @($tmpservers | Get-ExchangeServer) + } + catch + { + #Exit because file could not be found + Write-Verbose $string24 + if ($Log) {Write-Logfile $string24} + Write-Error $_.Exception.Message + EXIT + } +} +else +{ + #This is the list of servers, DAGs, and databases to never alert for + try + { + $ignorelist = @(Get-Content $ignorelistfile -ErrorAction STOP) + if ($Log) {Write-Logfile $string28} + if ($Log) { + if ($($ignorelist.count) -gt 0) + { + foreach ($line in $ignorelist) + { + Write-Logfile "- $line" + } + } + else + { + Write-Logfile $string38 + } + } + } + catch + { + Write-Warning $string22 + if ($Log) {Write-Logfile $string22} + } + + #Get all servers + Write-Verbose $string25 + if ($Log) {Write-Logfile $string25} + $GetExchangeServerResults = @(Get-ExchangeServer | Sort-Object site,name) + + #Remove the servers that are ignored from the list of servers to check + Write-Verbose $string26 + if ($Log) {Write-Logfile $string26} + foreach ($tmpserver in $GetExchangeServerResults) + { + if (!($ignorelist -icontains $tmpserver.name)) + { + $exchangeservers = $exchangeservers += $tmpserver.identity + } + } + + if ($Log) {Write-Logfile $string29} + if ($Log) { + foreach ($server in $exchangeservers) + { + Write-Logfile "- $server" + } + } +} + +### Check if any Exchange 2013 servers exist +if ($GetExchangeServerResults | Where-Object {$_.AdminDisplayVersion -like "Version 15.*"}) +{ + [bool]$HasE15 = $true +} + +### Begin the Exchange Server health checks +Write-Verbose $string27 +if ($Log) {Write-Logfile $string27} +foreach ($server in $exchangeservers) +{ + Write-Host -ForegroundColor White "$string3 $server" + if ($Log) {Write-Logfile "$string3 $server"} + + #Find out some details about the server + try + { + $serverinfo = Get-ExchangeServer $server -ErrorAction Stop + } + catch + { + Write-Warning $_.Exception.Message + if ($Log) {Write-Logfile $_.Exception.Message} + $serverinfo = $null + } + + if ($serverinfo -eq $null ) + { + #Server is not an Exchange server + Write-Host -ForegroundColor $warn $string0 + if ($Log) {Write-Logfile $string0} + } + elseif ( $serverinfo.IsEdgeServer ) + { + Write-Host -ForegroundColor White $string8 + if ($Log) {Write-Logfile $string8} + } + else + { + #Server is an Exchange server, continue the health check + + #Custom object properties + $serverObj = New-Object PSObject + $serverObj | Add-Member NoteProperty -Name "Server" -Value $server + + #Skip Site attribute for Exchange 2003 servers + if ($serverinfo.AdminDisplayVersion -like "Version 6.*") + { + $serverObj | Add-Member NoteProperty -Name "Site" -Value "n/a" + } + else + { + $site = ($serverinfo.site.ToString()).Split("/") + $serverObj | Add-Member NoteProperty -Name "Site" -Value $site[-1] + } + + #Null and n/a the rest, will be populated as script progresses + $serverObj | Add-Member NoteProperty -Name "DNS" -Value $null + $serverObj | Add-Member NoteProperty -Name "Ping" -Value $null + $serverObj | Add-Member NoteProperty -Name "Uptime (hrs)" -Value $null + $serverObj | Add-Member NoteProperty -Name "Version" -Value $null + $serverObj | Add-Member NoteProperty -Name "Roles" -Value $null + $serverObj | Add-Member NoteProperty -Name "Client Access Server Role Services" -Value "n/a" + $serverObj | Add-Member NoteProperty -Name "Hub Transport Server Role Services" -Value "n/a" + $serverObj | Add-Member NoteProperty -Name "Mailbox Server Role Services" -Value "n/a" + $serverObj | Add-Member NoteProperty -Name "Unified Messaging Server Role Services" -Value "n/a" + $serverObj | Add-Member NoteProperty -Name "Transport Queue" -Value "n/a" + $serverObj | Add-Member NoteProperty -Name "Queue Length" -Value "n/a" + $serverObj | Add-Member NoteProperty -Name "PF DBs Mounted" -Value "n/a" + $serverObj | Add-Member NoteProperty -Name "MB DBs Mounted" -Value "n/a" + $serverObj | Add-Member NoteProperty -Name "Mail Flow Test" -Value "n/a" + $serverObj | Add-Member NoteProperty -Name "MAPI Test" -Value "n/a" + + #Check server name resolves in DNS + if ($Log) {Write-Logfile $string30} + Write-Host "DNS Check: " -NoNewline; + try + { + $ip = @([System.Net.Dns]::GetHostByName($server).AddressList | Select-Object IPAddressToString -ExpandProperty IPAddressToString) + } + catch + { + Write-Host -ForegroundColor $warn $_.Exception.Message + if ($Log) {Write-Logfile $_.Exception.Message} + $ip = $null + } + + if ( $ip -ne $null ) + { + Write-Host -ForegroundColor $pass "Pass" + if ($Log) {Write-Logfile $string31} + $serverObj | Add-Member NoteProperty -Name "DNS" -Value "Pass" -Force + + #Is server online + if ($Log) {Write-Logfile $string32} + Write-Host "Ping Check: " -NoNewline; + + $ping = $null + try + { + $ping = Test-Connection $server -Quiet -ErrorAction Stop + } + catch + { + Write-Host -ForegroundColor $warn $_.Exception.Message + if ($Log) {Write-Logfile $_.Exception.Message} + } + + switch ($ping) + { + $true { + Write-Host -ForegroundColor $pass "Pass" + $serverObj | Add-Member NoteProperty -Name "Ping" -Value "Pass" -Force + if ($Log) {Write-Logfile $string33} + } + default { + Write-Host -ForegroundColor $fail "Fail" + $serverObj | Add-Member NoteProperty -Name "Ping" -Value "Fail" -Force + $serversummary += "$server - $string18" + if ($Log) {Write-Logfile $string18} + } + } + + #Uptime check, even if ping fails + if ($Log) {Write-Logfile $string34} + [int]$uptime = $null + #$laststart = $null + $OS = $null + + try + { + #$laststart = [System.Management.ManagementDateTimeconverter]::ToDateTime((Get-WmiObject -Class Win32_OperatingSystem -computername $server -ErrorAction Stop).LastBootUpTime) + $OS = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $server -ErrorAction STOP + } + catch + { + Write-Host -ForegroundColor $warn $_.Exception.Message + if ($Log) {Write-Logfile $_.Exception.Message} + } + + Write-Host "Uptime (hrs): " -NoNewline + + if ($OS -eq $null) + { + [string]$uptime = $string17 + if ($Log) {Write-Logfile $string17} + switch ($ping) + { + $true { $serversummary += "$server - $string17" } + default { $serversummary += "$server - $string17" } + } + } + else + { + $timespan = $OS.ConvertToDateTime($OS.LocalDateTime) – $OS.ConvertToDateTime($OS.LastBootUpTime) + [int]$uptime = "{0:00}" -f $timespan.TotalHours + Switch ($uptime -gt 23) { + $true { Write-Host -ForegroundColor $pass $uptime } + $false { Write-Host -ForegroundColor $warn $uptime; $serversummary += "$server - Uptime is less than 24 hours" } + default { Write-Host -ForegroundColor $warn $uptime; $serversummary += "$server - Uptime is less than 24 hours" } + } + } + + if ($Log) {Write-Logfile "Uptime is $uptime hours"} + + $serverObj | Add-Member NoteProperty -Name "Uptime (hrs)" -Value $uptime -Force + + if ($ping -or ($uptime -ne $string17)) + { + #Determine the friendly version number + $ExVer = $serverinfo.AdminDisplayVersion + Write-Host "Server version: " -NoNewline; + + if ($ExVer -like "Version 6.*") + { + $version = "Exchange 2003" + } + + if ($ExVer -like "Version 8.*") + { + $version = "Exchange 2007" + } + + if ($ExVer -like "Version 14.*") + { + $version = "Exchange 2010" + } + + if ($ExVer -like "Version 15.0*") + { + $version = "Exchange 2013" + } + + if ($ExVer -like "Version 15.1*") + { + $version = "Exchange 2016" + } + + Write-Host $version + if ($Log) {Write-Logfile "Server is running $version"} + $serverObj | Add-Member NoteProperty -Name "Version" -Value $version -Force + + if ($version -eq "Exchange 2003") + { + Write-Host $string12 + if ($Log) {Write-Logfile $string12} + } + + #START - Exchange 2013/2010/2007 Health Checks + if ($version -ne "Exchange 2003") + { + Write-Host "Roles:" $serverinfo.ServerRole + if ($Log) {Write-Logfile "Server roles: $($serverinfo.ServerRole)"} + $serverObj | Add-Member NoteProperty -Name "Roles" -Value $serverinfo.ServerRole -Force + + $IsEdge = $serverinfo.IsEdgeServer + $IsHub = $serverinfo.IsHubTransportServer + $IsCAS = $serverinfo.IsClientAccessServer + $IsMB = $serverinfo.IsMailboxServer + + #START - General Server Health Check + #Skipping Edge Transports for the general health check, as firewalls usually get + #in the way. If you want to include them, remove this If. + if ($IsEdge -ne $true) + { + #Service health is an array due to how multi-role servers return Test-ServiceHealth status + if ($Log) {Write-Logfile $string35} + $servicehealth = @() + $e15casservicehealth = @() + try { + $servicehealth = @(Test-ServiceHealth $server -ErrorAction Stop) + } + catch { + #Workaround for Test-ServiceHealth problem with CAS-only Exchange 2013 servers + #More info: http://exchangeserverpro.com/exchange-2013-test-servicehealth-error/ + if ($_.Exception.Message -like "*There are no Microsoft Exchange 2007 server roles installed*") + { + if ($Log) {Write-Logfile $string52} + $e15casservicehealth = Test-E15CASServiceHealth($server) + } + else + { + $serversummary += "$server - $string4" + Write-Host -ForegroundColor $warn $string4 ":" $_.Exception + if ($Log) {Write-Logfile $_.Exception} + $serverObj | Add-Member NoteProperty -Name "Client Access Server Role Services" -Value $string4 -Force + $serverObj | Add-Member NoteProperty -Name "Hub Transport Server Role Services" -Value $string4 -Force + $serverObj | Add-Member NoteProperty -Name "Mailbox Server Role Services" -Value $string4 -Force + $serverObj | Add-Member NoteProperty -Name "Unified Messaging Server Role Services" -Value $string4 -Force + } + } + + if ($servicehealth) + { + foreach($s in $servicehealth) + { + $roleName = $s.Role + Write-Host $roleName "Services: " -NoNewline; + + switch ($s.RequiredServicesRunning) + { + $true { + $svchealth = "Pass" + Write-Host -ForegroundColor $pass "Pass" + } + $false { + $svchealth = "Fail" + Write-Host -ForegroundColor $fail "Fail" + $serversummary += "$server - $rolename $string5" + } + default { + $svchealth = "Warn" + Write-Host -ForegroundColor $warn "Warning" + $serversummary += "$server - $rolename $string5" + } + } + + switch ($s.Role) + { + $casrole { $serverinfoservices = "Client Access Server Role Services" } + $htrole { $serverinfoservices = "Hub Transport Server Role Services" } + $mbrole { $serverinfoservices = "Mailbox Server Role Services" } + $umrole { $serverinfoservices = "Unified Messaging Server Role Services" } + } + if ($Log) {Write-Logfile "$serverinfoservices status is $svchealth"} + $serverObj | Add-Member NoteProperty -Name $serverinfoservices -Value $svchealth -Force + } + } + + if ($e15casservicehealth) + { + $serverinfoservices = "Client Access Server Role Services" + if ($Log) {Write-Logfile "$serverinfoservices status is $e15casservicehealth"} + $serverObj | Add-Member NoteProperty -Name $serverinfoservices -Value $e15casservicehealth -Force + Write-Host $serverinfoservices ": " -NoNewline; + switch ($e15casservicehealth) + { + "Pass" { Write-Host -ForegroundColor $pass "Pass" } + "Fail" { Write-Host -ForegroundColor $fail "Fail" } + } + } + } + #END - General Server Health Check + + #START - Hub Transport Server Check + if ($IsHub) + { + $q = $null + if ($Log) {Write-Logfile $string36} + Write-Host "Total Queue: " -NoNewline; + try { + $q = Get-Queue -server $server -ErrorAction Stop | Where-Object {$_.DeliveryType -ne "ShadowRedundancy"} + } + catch { + $serversummary += "$server - $string6" + Write-Host -ForegroundColor $warn $string6 + Write-Warning $_.Exception.Message + if ($Log) {Write-Logfile $string6} + if ($Log) {Write-Logfile $_.Exception.Message} + } + + if ($q) + { + $qcount = $q | Measure-Object MessageCount -Sum + [int]$qlength = $qcount.sum + $serverObj | Add-Member NoteProperty -Name "Queue Length" -Value $qlength -Force + if ($Log) {Write-Logfile "Queue length is $qlength"} + if ($qlength -le $transportqueuewarn) + { + Write-Host -ForegroundColor $pass $qlength + $serverObj | Add-Member NoteProperty -Name "Transport Queue" -Value "Pass ($qlength)" -Force + } + elseif ($qlength -gt $transportqueuewarn -and $qlength -lt $transportqueuehigh) + { + Write-Host -ForegroundColor $warn $qlength + $serversummary += "$server - Transport queue is above warning threshold" + $serverObj | Add-Member NoteProperty -Name "Transport Queue" -Value "Warn ($qlength)" -Force + } + else + { + Write-Host -ForegroundColor $fail $qlength + $serversummary += "$server - Transport queue is above high threshold" + $serverObj | Add-Member NoteProperty -Name "Transport Queue" -Value "Fail ($qlength)" -Force + } + } + else + { + $serverObj | Add-Member NoteProperty -Name "Transport Queue" -Value "Unknown" -Force + } + } + #END - Hub Transport Server Check + + #START - Mailbox Server Check + if ($IsMB) + { + if ($Log) {Write-Logfile $string37} + + #Get the PF and MB databases + [array]$pfdbs = @(Get-PublicFolderDatabase -server $server -status -WarningAction SilentlyContinue) + [array]$mbdbs = @(Get-MailboxDatabase -server $server -status | Where-Object {$_.Recovery -ne $true}) + + if ($version -ne "Exchange 2007") + { + [array]$activedbs = @(Get-MailboxDatabase -server $server -status | Where-Object {$_.Recovery -ne $true -and $_.MountedOnServer -eq ($serverinfo.fqdn)}) + } + else + { + [array]$activedbs = $mbdbs + } + + #START - Database Mount Check + + #Check public folder databases + if ($pfdbs.count -gt 0) + { + if ($Log) {Write-Logfile $string39} + Write-Host "Public Folder databases mounted: " -NoNewline; + [string]$pfdbstatus = "Pass" + [array]$alertdbs = @() + foreach ($db in $pfdbs) + { + if (($db.mounted) -ne $true) + { + $pfdbstatus = "Fail" + $alertdbs += $db.name + } + } + + $serverObj | Add-Member NoteProperty -Name "PF DBs Mounted" -Value $pfdbstatus -Force + if ($Log) {Write-Logfile "$string40 $pfdbstatus"} + + if ($alertdbs.count -eq 0) + { + Write-Host -ForegroundColor $pass $pfdbstatus + } + else + { + Write-Host -ForegroundColor $fail $pfdbstatus + $serversummary += "$server - $string7" + Write-Host "Offline databases:" + foreach ($al in $alertdbs) + { + Write-Host -ForegroundColor $fail `t$al + } + } + } + + #Check mailbox databases + if ($mbdbs.count -gt 0) + { + if ($Log) {Write-Logfile $string41} + + [string]$mbdbstatus = "Pass" + [array]$alertdbs = @() + + Write-Host "Mailbox databases mounted: " -NoNewline; + foreach ($db in $mbdbs) + { + if (($db.mounted) -ne $true) + { + $mbdbstatus = "Fail" + $alertdbs += $db.name + } + } + + $serverObj | Add-Member NoteProperty -Name "MB DBs Mounted" -Value $mbdbstatus -Force + if ($Log) {Write-Logfile "$string42 $mbdbstatus"} + + if ($alertdbs.count -eq 0) + { + Write-Host -ForegroundColor $pass $mbdbstatus + } + else + { + $serversummary += "$server - $string9" + Write-Host -ForegroundColor $fail $mbdbstatus + Write-Host $string43 + if ($Log) {Write-Logfile $string43} + foreach ($al in $alertdbs) + { + Write-Host -ForegroundColor $fail `t$al + if ($Log) {Write-Logfile "- $al"} + } + } + } + + #END - Database Mount Check + + #START - MAPI Connectivity Test + if ($activedbs.count -gt 0 -or $pfdbs.count -gt 0 -or $version -eq "Exchange 2007") + { + [string]$mapiresult = "Unknown" + [array]$alertdbs = @() + if ($Log) {Write-Logfile $string44} + Write-Host "MAPI connectivity: " -NoNewline; + foreach ($db in $mbdbs) + { + $mapistatus = Test-MapiConnectivity -Database $db.Identity -PerConnectionTimeout $mapitimeout + if ($mapistatus.Result.Value -eq $null) + { + $mapiresult = $mapistatus.Result + } + else + { + $mapiresult = $mapistatus.Result.Value + } + if (($mapiresult) -ne "Success") + { + $mapistatus = "Fail" + $alertdbs += $db.name + } + } + + $serverObj | Add-Member NoteProperty -Name "MAPI Test" -Value $mapiresult -Force + if ($Log) {Write-Logfile "$string45 $mapiresult"} + + if ($alertdbs.count -eq 0) + { + Write-Host -ForegroundColor $pass $mapiresult + } + else + { + $serversummary += "$server - $string10" + Write-Host -ForegroundColor $fail $mapiresult + Write-Host $string46 + if ($Log) {Write-Logfile $string46} + foreach ($al in $alertdbs) + { + Write-Host -ForegroundColor $fail `t$al + if ($Log) {Write-Logfile "- $al"} + } + } + } + #END - MAPI Connectivity Test + + #START - Mail Flow Test + if ($version -eq "Exchange 2007" -and $mbdbs.count -gt 0 -and $HasE15) + { + #Skip Exchange 2007 mail flow tests when run from Exchange 2013 + if ($Log) {Write-Logfile $string47} + Write-Host "Mail flow test: Skipped" + $serverObj | Add-Member NoteProperty -Name "Mail Flow Test" -Value $string51 -Force + if ($Log) {Write-Logfile $string51} + } + elseif ($activedbs.count -gt 0 -and $HasE15) + { + if ($Log) {Write-Logfile $string47} + Write-Host "Mail flow test: " -NoNewline; + $e15mailflowresult = Test-E15MailFlow($Server) + $serverObj | Add-Member NoteProperty -Name "Mail Flow Test" -Value $e15mailflowresult -Force + if ($Log) {Write-Logfile "$string48 $e15mailflowresult"} + + if ($e15mailflowresult -eq $success) + { + Write-Host -ForegroundColor $pass $e15mailflowresult + $serverObj | Add-Member NoteProperty -Name "Mail Flow Test" -Value "Pass" -Force + } + else + { + $serversummary += "$server - $string11" + Write-Host -ForegroundColor $fail $e15mailflowresult + $serverObj | Add-Member NoteProperty -Name "Mail Flow Test" -Value "Fail" -Force + } + } + elseif ($activedbs.count -gt 0 -or ($version -eq "Exchange 2007" -and $mbdbs.count -gt 0)) + { + $flow = $null + $testmailflowresult = $null + + if ($Log) {Write-Logfile $string47} + Write-Host "Mail flow test: " -NoNewline; + try + { + $flow = Test-Mailflow $server -ErrorAction Stop + } + catch + { + $testmailflowresult = $_.Exception.Message + if ($Log) {Write-Logfile $_.Exception.Message} + } + + if ($flow) + { + $testmailflowresult = $flow.testmailflowresult + if ($Log) {Write-Logfile "$string48 $testmailflowresult"} + } + + if ($testmailflowresult -eq "Success" -or $testmailflowresult -eq $success) + { + Write-Host -ForegroundColor $pass $testmailflowresult + $serverObj | Add-Member NoteProperty -Name "Mail Flow Test" -Value "Pass" -Force + } + else + { + $serversummary += "$server - $string11" + Write-Host -ForegroundColor $fail $testmailflowresult + $serverObj | Add-Member NoteProperty -Name "Mail Flow Test" -Value "Fail" -Force + } + } + else + { + Write-Host "Mail flow test: No active mailbox databases" + $serverObj | Add-Member NoteProperty -Name "Mail Flow Test" -Value $string49 -Force + if ($Log) {Write-Logfile $string49} + } + #END - Mail Flow Test + } + #END - Mailbox Server Check + + } + #END - Exchange 2013/2010/2007 Health Checks + if ($Log) {Write-Logfile "$string50 $server"} + $report = $report + $serverObj + } + else + { + #Server is not reachable and uptime could not be retrieved + Write-Host -ForegroundColor $warn $string1 + if ($Log) {Write-Logfile $string1} + $serversummary += "$server - $string1" + $serverObj | Add-Member NoteProperty -Name "Ping" -Value "Fail" -Force + if ($Log) {Write-Logfile "$string50 $server"} + $report = $report + $serverObj + } + } + else + { + Write-Host -ForegroundColor $Fail "Fail" + Write-Host -ForegroundColor $warn $string13 + if ($Log) {Write-Logfile $string13} + $serversummary += "$server - $string13" + $serverObj | Add-Member NoteProperty -Name "DNS" -Value "Fail" -Force + if ($Log) {Write-Logfile "$string50 $server"} + $report = $report + $serverObj + } + } +} +### End the Exchange Server health checks + + +### Begin DAG Health Report + +#Check if -Server or -Serverlist parameter was used, and skip if it was +if (!($NoDAG)) +{ + if ($Log) {Write-Logfile $string60} + Write-Verbose "Retrieving Database Availability Groups" + + #Get all DAGs + $tmpdags = @(Get-DatabaseAvailabilityGroup) + $tmpstring = "$($tmpdags.count) DAGs found" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + #Remove DAGs in ignorelist + foreach ($tmpdag in $tmpdags) + { + if (!($ignorelist -icontains $tmpdag.name)) + { + $dags += $tmpdag + } + } + + $tmpstring = "$($dags.count) DAGs will be checked" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + if ($Log) {Write-Logfile $string68} + if ($Log) { + foreach ($dag in $dags) + { + Write-Logfile "- $dag" + } + } +} + +if ($($dags.count) -gt 0) +{ + foreach ($dag in $dags) + { + + #Strings for use in the HTML report/email + $dagsummaryintro = "

Database Availability Group $($dag.Name) Health Summary:

" + $dagdetailintro = "

Database Availability Group $($dag.Name) Health Details:

" + $dagmemberintro = "

Database Availability Group $($dag.Name) Member Health:

" + + $dagdbcopyReport = @() #Database copy health report + $dagciReport = @() #Content Index health report + $dagmemberReport = @() #DAG member server health report + $dagdatabaseSummary = @() #Database health summary report + $dagdatabases = @() #Array of databases in the DAG + + $tmpstring = "---- Processing DAG $($dag.Name)" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + $dagmembers = @($dag | Select-Object -ExpandProperty Servers | Sort-Object Name) + $tmpstring = "$($dagmembers.count) DAG members found" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + #Get all databases in the DAG + if ($HasE15) + { + $tmpdatabases = @(Get-MailboxDatabase -Status -IncludePreExchange2013 | Where-Object {$_.Recovery -ne $true -and $_.MasterServerOrAvailabilityGroup -eq $dag.Name} | Sort-Object Name) + } + else + { + $tmpdatabases = @(Get-MailboxDatabase -Status | Where-Object {$_.Recovery -ne $true -and $_.MasterServerOrAvailabilityGroup -eq $dag.Name} | Sort-Object Name) + } + + foreach ($tmpdatabase in $tmpdatabases) + { + if (!($ignorelist -icontains $tmpdatabase.name)) + { + $dagdatabases += $tmpdatabase + } + } + + $tmpstring = "$($dagdatabases.count) DAG databases will be checked" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + if ($Log) {Write-Logfile $string69} + if ($Log) { + foreach ($database in $dagdatabases) + { + Write-Logfile "- $database" + } + } + + foreach ($database in $dagdatabases) + { + $tmpstring = "---- Processing database $database" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + $activationPref = $null + $totalcopies = $null + $healthycopies = $null + $unhealthycopies = $null + $healthyqueues = $null + $unhealthyqueues = $null + $laggedqueues = $null + $healthyindexes = $null + $unhealthyindexes = $null + + #Custom object for Database + $objectHash = @{ + "Database" = $database.Identity + "Mounted on" = "Unknown" + "Preference" = $null + "Total Copies" = $null + "Healthy Copies" = $null + "Unhealthy Copies" = $null + "Healthy Queues" = $null + "Unhealthy Queues" = $null + "Lagged Queues" = $null + "Healthy Indexes" = $null + "Unhealthy Indexes" = $null + } + $databaseObj = New-Object PSObject -Property $objectHash + + $dbcopystatus = @($database | Get-MailboxDatabaseCopyStatus) + $tmpstring = "$database has $($dbcopystatus.Count) copies" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + foreach ($dbcopy in $dbcopystatus) + { + #Custom object for DB copy + $objectHash = @{ + "Database Copy" = $dbcopy.Identity + "Database Name" = $dbcopy.DatabaseName + "Mailbox Server" = $null + "Activation Preference" = $null + "Status" = $null + "Copy Queue" = $null + "Replay Queue" = $null + "Replay Lagged" = $null + "Truncation Lagged" = $null + "Content Index" = $null + } + $dbcopyObj = New-Object PSObject -Property $objectHash + + $tmpstring = "Database Copy: $($dbcopy.Identity)" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + $mailboxserver = $dbcopy.MailboxServer + $tmpstring = "Server: $mailboxserver" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + $pref = ($database | Select-Object -ExpandProperty ActivationPreference | Where-Object {$_.Key -ieq $mailboxserver}).Value + $tmpstring = "Activation Preference: $pref" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + $copystatus = $dbcopy.Status + $tmpstring = "Status: $copystatus" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + [int]$copyqueuelength = $dbcopy.CopyQueueLength + $tmpstring = "Copy Queue: $copyqueuelength" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + [int]$replayqueuelength = $dbcopy.ReplayQueueLength + $tmpstring = "Replay Queue: $replayqueuelength" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + if ($($dbcopy.ContentIndexErrorMessage -match "is disabled in Active Directory")) + { + $contentindexstate = "Disabled" + } + else + { + $contentindexstate = $dbcopy.ContentIndexState + } + $tmpstring = "Content Index: $contentindexstate" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + #Checking whether this is a replay lagged copy + $replaylagcopies = @($database | Select-Object -ExpandProperty ReplayLagTimes | Where-Object {$_.Value -gt 0}) + if ($($replaylagcopies.count) -gt 0) + { + [bool]$replaylag = $false + foreach ($replaylagcopy in $replaylagcopies) + { + if ($replaylagcopy.Key -ieq $mailboxserver) + { + $tmpstring = "$database is replay lagged on $mailboxserver" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + [bool]$replaylag = $true + } + } + } + else + { + [bool]$replaylag = $false + } + $tmpstring = "Replay lag is $replaylag" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + #Checking for truncation lagged copies + $truncationlagcopies = @($database | Select-Object -ExpandProperty TruncationLagTimes | Where-Object {$_.Value -gt 0}) + if ($($truncationlagcopies.count) -gt 0) + { + [bool]$truncatelag = $false + foreach ($truncationlagcopy in $truncationlagcopies) + { + if ($truncationlagcopy.Key -eq $mailboxserver) + { + $tmpstring = "$database is truncate lagged on $mailboxserver" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + [bool]$truncatelag = $true + } + } + } + else + { + [bool]$truncatelag = $false + } + $tmpstring = "Truncation lag is $truncatelag" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + $dbcopyObj | Add-Member NoteProperty -Name "Mailbox Server" -Value $mailboxserver -Force + $dbcopyObj | Add-Member NoteProperty -Name "Activation Preference" -Value $pref -Force + $dbcopyObj | Add-Member NoteProperty -Name "Status" -Value $copystatus -Force + $dbcopyObj | Add-Member NoteProperty -Name "Copy Queue" -Value $copyqueuelength -Force + $dbcopyObj | Add-Member NoteProperty -Name "Replay Queue" -Value $replayqueuelength -Force + $dbcopyObj | Add-Member NoteProperty -Name "Replay Lagged" -Value $replaylag -Force + $dbcopyObj | Add-Member NoteProperty -Name "Truncation Lagged" -Value $truncatelag -Force + $dbcopyObj | Add-Member NoteProperty -Name "Content Index" -Value $contentindexstate -Force + + $dagdbcopyReport += $dbcopyObj + } + + $copies = @($dagdbcopyReport | Where-Object { ($_."Database Name" -eq $database) }) + + $mountedOn = ($copies | Where-Object { ($_.Status -eq "Mounted") })."Mailbox Server" + if ($mountedOn) + { + $databaseObj | Add-Member NoteProperty -Name "Mounted on" -Value $mountedOn -Force + } + + $activationPref = ($copies | Where-Object { ($_.Status -eq "Mounted") })."Activation Preference" + $databaseObj | Add-Member NoteProperty -Name "Preference" -Value $activationPref -Force + + $totalcopies = $copies.count + $databaseObj | Add-Member NoteProperty -Name "Total Copies" -Value $totalcopies -Force + + $healthycopies = @($copies | Where-Object { (($_.Status -eq "Mounted") -or ($_.Status -eq "Healthy")) }).Count + $databaseObj | Add-Member NoteProperty -Name "Healthy Copies" -Value $healthycopies -Force + + $unhealthycopies = @($copies | Where-Object { (($_.Status -ne "Mounted") -and ($_.Status -ne "Healthy")) }).Count + $databaseObj | Add-Member NoteProperty -Name "Unhealthy Copies" -Value $unhealthycopies -Force + + $healthyqueues = @($copies | Where-Object { (($_."Copy Queue" -lt $replqueuewarning) -and (($_."Replay Queue" -lt $replqueuewarning)) -and ($_."Replay Lagged" -eq $false)) }).Count + $databaseObj | Add-Member NoteProperty -Name "Healthy Queues" -Value $healthyqueues -Force + + $unhealthyqueues = @($copies | Where-Object { (($_."Copy Queue" -ge $replqueuewarning) -or (($_."Replay Queue" -ge $replqueuewarning) -and ($_."Replay Lagged" -eq $false))) }).Count + $databaseObj | Add-Member NoteProperty -Name "Unhealthy Queues" -Value $unhealthyqueues -Force + + $laggedqueues = @($copies | Where-Object { ($_."Replay Lagged" -eq $true) -or ($_."Truncation Lagged" -eq $true) }).Count + $databaseObj | Add-Member NoteProperty -Name "Lagged Queues" -Value $laggedqueues -Force + + $healthyindexes = @($copies | Where-Object { ($_."Content Index" -eq "Healthy" -or $_."Content Index" -eq "Disabled" -or $_."Content Index" -eq "AutoSuspended") }).Count + $databaseObj | Add-Member NoteProperty -Name "Healthy Indexes" -Value $healthyindexes -Force + + $unhealthyindexes = @($copies | Where-Object { ($_."Content Index" -ne "Healthy" -and $_."Content Index" -ne "Disabled" -and $_."Content Index" -ne "AutoSuspended") }).Count + $databaseObj | Add-Member NoteProperty -Name "Unhealthy Indexes" -Value $unhealthyindexes -Force + + $dagdatabaseSummary += $databaseObj + + } + + #Get Test-Replication Health results for each DAG member + foreach ($dagmember in $dagmembers) + { + $replicationhealth = $null + + $replicationhealthitems = @{ + ClusterService = $null + ReplayService = $null + ActiveManager = $null + TasksRpcListener = $null + TcpListener = $null + ServerLocatorService = $null + DagMembersUp = $null + ClusterNetwork = $null + QuorumGroup = $null + FileShareQuorum = $null + DatabaseRedundancy = $null + DatabaseAvailability = $null + DBCopySuspended = $null + DBCopyFailed = $null + DBInitializing = $null + DBDisconnected = $null + DBLogCopyKeepingUp = $null + DBLogReplayKeepingUp = $null + } + + $memberObj = New-Object PSObject -Property $replicationhealthitems + $memberObj | Add-Member NoteProperty -Name "Server" -Value $($dagmember.Name) + + $tmpstring = "---- Checking replication health for $($dagmember.Name)" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + + if ($HasE15) + { + $DagMemberVer = ($GetExchangeServerResults | Where-Object {$_.Name -ieq $dagmember.Name}).AdminDisplayVersion.ToString() + } + + + if ($DagMemberVer -like "Version 14.*") + { + if ($Log) {Write-Logfile "Using E14 replication health test workaround"} + $replicationhealth = Test-E14ReplicationHealth $dagmember + } + else + { + $replicationhealth = Test-ReplicationHealth -Identity $dagmember + } + + foreach ($healthitem in $replicationhealth) + { + if ($($healthitem.Result) -eq $null) + { + $healthitemresult = "n/a" + } + else + { + $healthitemresult = $($healthitem.Result) + } + $tmpstring = "$($healthitem.Check) $healthitemresult" + Write-Verbose $tmpstring + if ($Log) {Write-Logfile $tmpstring} + $memberObj | Add-Member NoteProperty -Name $($healthitem.Check) -Value $healthitemresult -Force + } + $dagmemberReport += $memberObj + } + + + #Generate the HTML from the DAG health checks + if ($SendEmail -or $ReportFile) + { + + ####Begin Summary Table HTML + $dagdatabaseSummaryHtml = $null + #Begin Summary table HTML header + $htmltableheader = "

+ + + + + + + + + + + + + + " + + $dagdatabaseSummaryHtml += $htmltableheader + #End Summary table HTML header + + #Begin Summary table HTML rows + foreach ($line in $dagdatabaseSummary) + { + $htmltablerow = "" + $htmltablerow += "" + + #Warn if mounted server is still unknown + switch ($($line."Mounted on")) + { + "Unknown" { + $htmltablerow += "" + $dagsummary += "$($line.Database) - $string61" + } + default { $htmltablerow += "" } + } + + #Warn if DB is mounted on a server that is not Activation Preference 1 + if ($($line.Preference) -gt 1) + { + $htmltablerow += "" + $dagsummary += "$($line.Database) - $string62 $($line.Preference)" + } + else + { + $htmltablerow += "" + } + + $htmltablerow += "" + + #Show as info if health copies is 1 but total copies also 1, + #Warn if healthy copies is 1, Fail if 0 + switch ($($line."Healthy Copies")) + { + 0 {$htmltablerow += ""} + 1 { + if ($($line."Total Copies") -eq $($line."Healthy Copies")) + { + $htmltablerow += "" + } + else + { + $htmltablerow += "" + } + } + default {$htmltablerow += ""} + } + + #Warn if unhealthy copies is 1, fail if more than 1 + switch ($($line."Unhealthy Copies")) + { + 0 { $htmltablerow += "" } + 1 { + $htmltablerow += "" + $dagsummary += "$($line.Database) - $string63 $($line."Unhealthy Copies") $string65 $($line."Total Copies") $string66" + } + default { + $htmltablerow += "" + $dagsummary += "$($line.Database) - $string63 $($line."Unhealthy Copies") $string65 $($line."Total Copies") $string66" + } + } + + #Warn if healthy queues + lagged queues is less than total copies + #Fail if no healthy queues + if ($($line."Total Copies") -eq ($($line."Healthy Queues") + $($line."Lagged Queues"))) + { + $htmltablerow += "" + } + else + { + $dagsummary += "$($line.Database) - $string64 $($line."Healthy Queues") $string65 $($line."Total Copies") $string66" + switch ($($line."Healthy Queues")) + { + 0 { $htmltablerow += "" } + default { $htmltablerow += "" } + } + } + + #Fail if unhealthy queues = total queues + #Warn if more than one unhealthy queue + if ($($line."Total Queues") -eq $($line."Unhealthy Queues")) + { + $htmltablerow += "" + } + else + { + switch ($($line."Unhealthy Queues")) + { + 0 { $htmltablerow += "" } + default { $htmltablerow += "" } + } + } + + #Info for lagged queues + switch ($($line."Lagged Queues")) + { + 0 { $htmltablerow += "" } + default { $htmltablerow += "" } + } + + #Pass if healthy indexes = total copies + #Warn if healthy indexes less than total copies + #Fail if healthy indexes = 0 + if ($($line."Total Copies") -eq $($line."Healthy Indexes")) + { + $htmltablerow += "" + } + else + { + $dagsummary += "$($line.Database) - $string67 $($line."Unhealthy Indexes") $string65 $($line."Total Copies") $string66" + switch ($($line."Healthy Indexes")) + { + 0 { $htmltablerow += "" } + default { $htmltablerow += "" } + } + } + + #Fail if unhealthy indexes = total copies + #Warn if unhealthy indexes 1 or more + #Pass if unhealthy indexes = 0 + if ($($line."Total Copies") -eq $($line."Unhealthy Indexes")) + { + $htmltablerow += "" + } + else + { + switch ($($line."Unhealthy Indexes")) + { + 0 { $htmltablerow += "" } + default { $htmltablerow += "" } + } + } + + $htmltablerow += "" + $dagdatabaseSummaryHtml += $htmltablerow + } + $dagdatabaseSummaryHtml += "
DatabaseMounted onPreferenceTotal CopiesHealthy CopiesUnhealthy CopiesHealthy QueuesUnhealthy QueuesLagged QueuesHealthy IndexesUnhealthy Indexes
$($line.Database)$($line."Mounted on")$($line."Mounted on")$($line.Preference)$($line.Preference)$($line."Total Copies")$($line."Healthy Copies")$($line."Healthy Copies")$($line."Healthy Copies")$($line."Healthy Copies")$($line."Unhealthy Copies")$($line."Unhealthy Copies")$($line."Unhealthy Copies")$($line."Healthy Queues")$($line."Healthy Queues")$($line."Healthy Queues")$($line."Unhealthy Queues")$($line."Unhealthy Queues")$($line."Unhealthy Queues")$($line."Lagged Queues")$($line."Lagged Queues")$($line."Healthy Indexes")$($line."Healthy Indexes")$($line."Healthy Indexes")$($line."Unhealthy Indexes")$($line."Unhealthy Indexes")$($line."Unhealthy Indexes")
+

" + #End Summary table HTML rows + ####End Summary Table HTML + + ####Begin Detail Table HTML + $databasedetailsHtml = $null + #Begin Detail table HTML header + $htmltableheader = "

+ + + + + + + + + + + + + " + + $databasedetailsHtml += $htmltableheader + #End Detail table HTML header + + #Begin Detail table HTML rows + foreach ($line in $dagdbcopyReport) + { + $htmltablerow = "" + $htmltablerow += "" + $htmltablerow += "" + $htmltablerow += "" + $htmltablerow += "" + + Switch ($($line."Status")) + { + "Healthy" { $htmltablerow += "" } + "Mounted" { $htmltablerow += "" } + "Failed" { $htmltablerow += "" } + "FailedAndSuspended" { $htmltablerow += "" } + "ServiceDown" { $htmltablerow += "" } + "Dismounted" { $htmltablerow += "" } + default { $htmltablerow += "" } + } + + if ($($line."Copy Queue") -lt $replqueuewarning) + { + $htmltablerow += "" + } + else + { + $htmltablerow += "" + } + + if (($($line."Replay Queue") -lt $replqueuewarning) -or ($($line."Replay Lagged") -eq $true)) + { + $htmltablerow += "" + } + else + { + $htmltablerow += "" + } + + + Switch ($($line."Replay Lagged")) + { + $true { $htmltablerow += "" } + default { $htmltablerow += "" } + } + + Switch ($($line."Truncation Lagged")) + { + $true { $htmltablerow += "" } + default { $htmltablerow += "" } + } + + Switch ($($line."Content Index")) + { + "Healthy" { $htmltablerow += "" } + "Disabled" { $htmltablerow += "" } + default { $htmltablerow += "" } + } + + $htmltablerow += "" + $databasedetailsHtml += $htmltablerow + } + $databasedetailsHtml += "
Database CopyDatabase NameMailbox ServerActivation PreferenceStatusCopy QueueReplay QueueReplay LaggedTruncation LaggedContent Index
$($line."Database Copy")$($line."Database Name")$($line."Mailbox Server")$($line."Activation Preference")$($line."Status")$($line."Status")$($line."Status")$($line."Status")$($line."Status")$($line."Status")$($line."Status")$($line."Copy Queue")$($line."Copy Queue")$($line."Replay Queue")$($line."Replay Queue")$($line."Replay Lagged")$($line."Replay Lagged")$($line."Truncation Lagged")$($line."Truncation Lagged")$($line."Content Index")$($line."Content Index")$($line."Content Index")
+

" + #End Detail table HTML rows + ####End Detail Table HTML + + + ####Begin Member Table HTML + $dagmemberHtml = $null + #Begin Member table HTML header + $htmltableheader = "

+ + + + + + + + + + + + + + + + + + + + + + " + + $dagmemberHtml += $htmltableheader + #End Member table HTML header + + #Begin Member table HTML rows + foreach ($line in $dagmemberReport) + { + $htmltablerow = "" + $htmltablerow += "" + $htmltablerow += (New-DAGMemberHTMLTableCell "ClusterService") + $htmltablerow += (New-DAGMemberHTMLTableCell "ReplayService") + $htmltablerow += (New-DAGMemberHTMLTableCell "ActiveManager") + $htmltablerow += (New-DAGMemberHTMLTableCell "TasksRPCListener") + $htmltablerow += (New-DAGMemberHTMLTableCell "TCPListener") + $htmltablerow += (New-DAGMemberHTMLTableCell "ServerLocatorService") + $htmltablerow += (New-DAGMemberHTMLTableCell "DAGMembersUp") + $htmltablerow += (New-DAGMemberHTMLTableCell "ClusterNetwork") + $htmltablerow += (New-DAGMemberHTMLTableCell "QuorumGroup") + $htmltablerow += (New-DAGMemberHTMLTableCell "FileShareQuorum") + $htmltablerow += (New-DAGMemberHTMLTableCell "DatabaseRedundancy") + $htmltablerow += (New-DAGMemberHTMLTableCell "DatabaseAvailability") + $htmltablerow += (New-DAGMemberHTMLTableCell "DBCopySuspended") + $htmltablerow += (New-DAGMemberHTMLTableCell "DBCopyFailed") + $htmltablerow += (New-DAGMemberHTMLTableCell "DBInitializing") + $htmltablerow += (New-DAGMemberHTMLTableCell "DBDisconnected") + $htmltablerow += (New-DAGMemberHTMLTableCell "DBLogCopyKeepingUp") + $htmltablerow += (New-DAGMemberHTMLTableCell "DBLogReplayKeepingUp") + $htmltablerow += "" + $dagmemberHtml += $htmltablerow + } + $dagmemberHtml += "
ServerCluster ServiceReplay ServiceActive ManagerTasks RPC ListenerTCP ListenerServer Locator ServiceDAG Members UpCluster NetworkQuorum GroupFile Share QuorumDatabase RedundancyDatabase AvailabilityDB Copy SuspendedDB Copy FailedDB InitializingDB DisconnectedDB Log Copy Keeping UpDB Log Replay Keeping Up
$($line."Server")
+

" + } + + #Output the report objects to console, and optionally to email and HTML file + #Forcing table format for console output due to issue with multiple output + #objects that have different layouts + + #Write-Host "---- Database Copy Health Summary ----" + #$dagdatabaseSummary | ft + + #Write-Host "---- Database Copy Health Details ----" + #$dagdbcopyReport | ft + + #Write-Host "`r`n---- Server Test-Replication Report ----`r`n" + #$dagmemberReport | ft + + if ($SendEmail -or $ReportFile) + { + $dagreporthtml = $dagsummaryintro + $dagdatabaseSummaryHtml + $dagdetailintro + $databasedetailsHtml + $dagmemberintro + $dagmemberHtml + $dagreportbody += $dagreporthtml + } + + } +} +else +{ + $tmpstring = "No DAGs found" + if ($Log) {Write-LogFile $tmpstring} + Write-Verbose $tmpstring + $dagreporthtml = "

No database availability groups found.

" +} +### End DAG Health Report + +Write-Host $string16 +### Begin report generation +if ($ReportMode -or $SendEmail) +{ + #Get report generation timestamp + $reportime = Get-Date + + #Create HTML Report + #Common HTML head and styles + $htmlhead=" + + +

Exchange Server Health Check Report

+

Generated: $reportime

" + + #Check if the server summary has 1 or more entries + if ($($serversummary.count) -gt 0) + { + #Set alert flag to true + $alerts = $true + + #Generate the HTML + $serversummaryhtml = "

Exchange Server Health Check Summary

+

The following server errors and warnings were detected.

+

+

    " + foreach ($reportline in $serversummary) + { + $serversummaryhtml +="
  • $reportline
  • " + } + $serversummaryhtml += "

" + $alerts = $true + } + else + { + #Generate the HTML to show no alerts + $serversummaryhtml = "

Exchange Server Health Check Summary

+

No Exchange server health errors or warnings.

" + } + + #Check if the DAG summary has 1 or more entries + if ($($dagsummary.count) -gt 0) + { + #Set alert flag to true + $alerts = $true + + #Generate the HTML + $dagsummaryhtml = "

Database Availability Group Health Check Summary

+

The following DAG errors and warnings were detected.

+

+

    " + foreach ($reportline in $dagsummary) + { + $dagsummaryhtml +="
  • $reportline
  • " + } + $dagsummaryhtml += "

" + $alerts = $true + } + else + { + #Generate the HTML to show no alerts + $dagsummaryhtml = "

Database Availability Group Health Check Summary

+

No Exchange DAG errors or warnings.

" + } + + + #Exchange Server Health Report Table Header + $htmltableheader = "

Exchange Server Health

+

+ + + + + + + + + + + + + + + + + + + " + + #Exchange Server Health Report Table + $serverhealthhtmltable = $serverhealthhtmltable + $htmltableheader + + foreach ($reportline in $report) + { + $htmltablerow = "" + $htmltablerow += "" + $htmltablerow += "" + $htmltablerow += "" + $htmltablerow += "" + $htmltablerow += (New-ServerHealthHTMLTableCell "dns") + $htmltablerow += (New-ServerHealthHTMLTableCell "ping") + + if ($($reportline."uptime (hrs)") -eq "Access Denied") + { + $htmltablerow += "" + } + elseif ($($reportline."uptime (hrs)") -eq $string17) + { + $htmltablerow += "" + } + else + { + $hours = [int]$($reportline."uptime (hrs)") + if ($hours -le 24) + { + $htmltablerow += "" + } + else + { + $htmltablerow += "" + } + } + + $htmltablerow += (New-ServerHealthHTMLTableCell "Client Access Server Role Services") + $htmltablerow += (New-ServerHealthHTMLTableCell "Hub Transport Server Role Services") + $htmltablerow += (New-ServerHealthHTMLTableCell "Mailbox Server Role Services") + $htmltablerow += (New-ServerHealthHTMLTableCell "Unified Messaging Server Role Services") + #$htmltablerow += (New-ServerHealthHTMLTableCell "Transport Queue") + if ($($reportline."Transport Queue") -match "Pass") + { + $htmltablerow += "" + } + elseif ($($reportline."Transport Queue") -match "Warn") + { + $htmltablerow += "" + } + elseif ($($reportline."Transport Queue") -match "Fail") + { + $htmltablerow += "" + } + elseif ($($reportline."Transport Queue") -eq "n/a") + { + $htmltablerow += "" + } + else + { + $htmltablerow += "" + } + $htmltablerow += (New-ServerHealthHTMLTableCell "PF DBs Mounted") + $htmltablerow += (New-ServerHealthHTMLTableCell "MB DBs Mounted") + $htmltablerow += (New-ServerHealthHTMLTableCell "MAPI Test") + $htmltablerow += (New-ServerHealthHTMLTableCell "Mail Flow Test") + $htmltablerow += "" + + $serverhealthhtmltable = $serverhealthhtmltable + $htmltablerow + } + + $serverhealthhtmltable = $serverhealthhtmltable + "
ServerSiteRolesVersionDNSPingUptime (hrs)Client Access Server Role ServicesHub Transport Server Role ServicesMailbox Server Role ServicesUnified Messaging Server Role ServicesTransport QueuePF DBs MountedMB DBs MountedMAPI TestMail Flow Test
$($reportline.server)$($reportline.site)$($reportline.roles)$($reportline.version)Access Denied$string17$hours$hours$($reportline."Transport Queue")$($reportline."Transport Queue")$($reportline."Transport Queue")$($reportline."Transport Queue")$($reportline."Transport Queue")

" + + $htmltail = " + " + + $htmlreport = $htmlhead + $serversummaryhtml + $dagsummaryhtml + $serverhealthhtmltable + $dagreportbody + $htmltail + + if ($ReportMode -or $ReportFile) + { + $htmlreport | Out-File $ReportFile -Encoding UTF8 + } + + if ($SendEmail) + { + if ($alerts -eq $false -and $AlertsOnly -eq $true) + { + #Do not send email message + Write-Host $string19 + if ($Log) {Write-Logfile $string19} + } + else + { + #Send email message + Write-Host $string14 + Send-MailMessage -To hcornet@fichorga.fr, jmdefossez@fichorga.fr, alefevre@pmsjuris.fr @smtpsettings -Body $htmlreport -BodyAsHtml -Encoding ([System.Text.Encoding]::UTF8) + } + } +} +### End report generation + + +Write-Host $string15 +if ($Log) {Write-Logfile $string15} diff --git a/Exchange/purge.ps1 b/Exchange/purge.ps1 new file mode 100644 index 0000000..803d247 --- /dev/null +++ b/Exchange/purge.ps1 @@ -0,0 +1 @@ +Get-ChildItem 'C:\Inetpub\Logs' -Directory | Get-ChildItem -Include '*.log' -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-20) | Remove-Item \ No newline at end of file diff --git a/Exchange/scheduler.ps1 b/Exchange/scheduler.ps1 new file mode 100644 index 0000000..0fb4af4 --- /dev/null +++ b/Exchange/scheduler.ps1 @@ -0,0 +1,4 @@ +.\ExchangeEnvironmentReport.ps1 -HTMLReport .\report.html -SendMail $True -MailFrom "Rapports@cloud-fichorga.fr" -MailTo "hcornet@fichorga.fr" -MailServer 10.101.10.2 +.\ExchangeEnvironmentReport.ps1 -HTMLReport .\report.html -SendMail $True -MailFrom "Rapports@cloud-fichorga.fr" -MailTo "jmdefossez@fichorga.fr" -MailServer 10.101.10.2 +.\ExchangeEnvironmentReport.ps1 -HTMLReport .\report.html -SendMail $True -MailFrom "Rapports@cloud-fichorga.fr" -MailTo "alefevre@pmsjuris.fr" -MailServer 10.101.10.2 +.\Test-ExchangeServerHealth.ps1 -ReportMode -SendEmail \ No newline at end of file diff --git a/Exemples/Affichage-Calendrier.ps1 b/Exemples/Affichage-Calendrier.ps1 new file mode 100644 index 0000000..5d4917c --- /dev/null +++ b/Exemples/Affichage-Calendrier.ps1 @@ -0,0 +1,93 @@ +<# +.SYNOPSIS + + +.NOTES + Version: 1.0 + Author: Hubert CORNET + Creation Date: + Purpose/Change: Initial script development + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +cls + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#-----------------------------------------------------------[]------------------------------------------------------------ +Add-Type -AssemblyName System.Windows.Forms +Add-Type -AssemblyName System.Drawing + +$form = New-Object Windows.Forms.Form -Property @{ + StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen + Size = New-Object Drawing.Size 280, 285 + Text = 'Selection Date' + Topmost = $true + MaximizeBox = $false + MinimumSize = New-Object System.Drawing.Size(280,285) + MaximumSize = New-Object System.Drawing.Size(280,285) + ControlBox = $false +} + +$calendar = New-Object Windows.Forms.MonthCalendar -Property @{ + ShowTodayCircle = $True + MaxSelectionCount = 1 +} +$form.Controls.Add($calendar) + +$okButton = New-Object Windows.Forms.Button -Property @{ + Location = New-Object Drawing.Point 10, 210 + Size = New-Object Drawing.Size 75, 23 + Text = 'OK' + DialogResult = [Windows.Forms.DialogResult]::OK +} +$form.AcceptButton = $okButton +$form.Controls.Add($okButton) + +$cancelButton = New-Object Windows.Forms.Button -Property @{ + Location = New-Object Drawing.Point 180, 210 + Size = New-Object Drawing.Size 75, 23 + Text = 'Cancel' + DialogResult = [Windows.Forms.DialogResult]::Cancel +} +$form.CancelButton = $cancelButton +$form.Controls.Add($cancelButton) + +$result = $form.ShowDialog() + +If ($result -eq [Windows.Forms.DialogResult]::OK) { + $date = $calendar.SelectionStart + Write-Host "Date selected: $($date.ToShortDateString())" +} \ No newline at end of file diff --git a/Exemples/Creation-Multi-Fichier.ps1 b/Exemples/Creation-Multi-Fichier.ps1 new file mode 100644 index 0000000..4e36ea3 --- /dev/null +++ b/Exemples/Creation-Multi-Fichier.ps1 @@ -0,0 +1,55 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : 22/11/2022 + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Creation-Multi-Fichier.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +1..100 | %{ ($_ * (Get-Random -Max ([int]::maxvalue))) > "D:\script\file$_.txt"} + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/Exemples/Dichotomie.ps1 b/Exemples/Dichotomie.ps1 new file mode 100644 index 0000000..3bfc1bb --- /dev/null +++ b/Exemples/Dichotomie.ps1 @@ -0,0 +1,195 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +[CmdletBinding()] +Param( + [Parameter(Position=0,Mandatory=$True)] + [string]$CheminSource, + [Parameter(Position=1,Mandatory=$True)] + [string]$Pattern, + [Parameter(Position=2,Mandatory=$True)] + [int]$Pourcentage + ) + + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Dichotomie.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber + +$Date = Get-Date -Format "yyyyMMdd HHmm" +$FolderBackup = $CheminSource+"\Backup - "+$Date +$FolderLotA = $CheminSource+"\Lot-A" +$FolderLotB = $CheminSource+"\Lot-B" +$FolderLock = $CheminSource+"\Fichier Bloquant - "+$Date +$Compteur = 0 + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +Function Login-RestApi { + [cmdletbinding()] + param( + [string] $ApiUrl, + [string] $OpConUser, + [string] $OpConPassword + ) + + Write-Verbose ("Parameters =") + Write-Verbose ("ApiUrl: " + $ApiUrl) + Write-Verbose ("OpConUser: " + $OpConUser) + Write-Verbose ("OpConPassword: (hidden)") + + $ApiUrl = $ApiUrl.ToLower().TrimEnd("/").TrimEnd("/api") + + Write-Host ("Logging in to OpCon REST API: " + $ApiUrl) + + $Global:OpconRESTApiUrl = $ApiUrl + $Global:OpconRESTApiUser = $OpConUser + $Global:OpConRESTApiPassword = $OpConPassword + $token = Get-OpConApiToken -Url $ApiUrl -User $OpConUser -Password $OpConPassword + $Global:OpconRESTApiToken = $token.id + + $Global:OpconRESTApiAuthHeader = Get-OpConApiAuthHeader -Token $token.id + Write-Host ('Token successfully stored for future calls in session.') +} + +Function Ignore-SelfSignedCerts { + add-type -TypeDefinition @" + using System.Net; + using System.Security.Cryptography.X509Certificates; + public class TrustAllCertsPolicy : ICertificatePolicy { + public bool CheckValidationResult( + ServicePoint srvPoint, X509Certificate certificate, + WebRequest request, int certificateProblem) { + return true; + } + } +"@ + [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy +} + +Function Get-OpConApiToken { + [cmdletbinding()] + param( + [string] $Url, + [string] $User, + [string] $Password + ) + $tokensUri = -join($Url, "/api/tokens") + Write-Host ("Retrieving authorization token...") + Write-Host ("Uri: " + $tokensUri) + Write-Host ("User: " + $User) + $tokenObject = @{ + user = @{ + loginName = $User + password = $Password + } + tokenType = @{ + type = "User" + } + } + try + { + Ignore-SelfSignedCerts + #$token = Invoke-RestMethod -Method Post -Uri $tokensUri -Body (ConvertTo-Json $tokenObject) -ContentType 'application/json; charset=utf-8' -ErrorVariable $RestException -SkipCertificateCheck + $token = Invoke-RestMethod -Method Post -Uri $tokensUri -Body (ConvertTo-Json $tokenObject) -ContentType 'application/json; charset=utf-8' -ErrorVariable $RestException + } + catch + { + ## $error = ConvertFrom-Json $RestException.ErrorDetails.Message + ##Write-Host ("Unable to fetch token for user '" + $user + "'") + ##Write-Host ("Error Code: " + $error.code) + ##Write-Host ("Message: " + $error.message) + Write-Host ("StatusCode: " + $_.Exception.Response.StatusCode.value__) + Write-Host ("StatusDescription: " + $_.Exception.Response.StatusDescription) + Write-Host ("Message: " + $_[0].message) + ##$Global:OpConRESTAPIException = $_ + throw + ##exit $_.Exception.Response.StatusCode.value__ + } + Write-Host ("Token retrieved successfully, Id: " + $token.id + ", Valid Until: " + $token.validUntil) + return $token + } + + Function Get-OpConApiAuthHeader { + Param( + [string] $Token + ) + + $authHeader = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $authHeader.Add("Authorization", ("Token " + $Token)) + + return $authHeader + } + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +Login-RestApi -ApiUrl $ServerUrl -OpConUser $OpConUser -OpConPassword $clearPassword + +#Nombre de fichier présent dans le répertoire +$ListFile = Get-ChildItem -Path $CheminSource"\*" -Include "*.$Pattern" | Select Name,FullName +$FileCount = $ListFile.count + +$PourcentageFichier = (($Pourcentage/100)*$FileCount) +$PourcentageFichier = [math]::floor($PourcentageFichier) + +If (!(Test-Path $FolderBackup)) { + New-Item -Path $FolderBackup -ItemType Directory + New-Item -Path $FolderLotA -ItemType Directory + New-Item -Path $FolderLotB -ItemType Directory + New-Item -Path $FolderLock -ItemType Directory +} + +Foreach ($File in $ListFile) { + Copy-Item $File.FullName -Destination $FolderBackup + + If ($Compteur -le $PourcentageFichier) { + Move-Item $File.FullName -Destination $FolderLotA + } + Else { + Move-Item $File.FullName -Destination $FolderLotB + } + + $Compteur = $Compteur + 1 +} + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/Exemples/Envoie-Mail.ps1 b/Exemples/Envoie-Mail.ps1 new file mode 100644 index 0000000..c1bd3f1 --- /dev/null +++ b/Exemples/Envoie-Mail.ps1 @@ -0,0 +1,14 @@ +$Destinataires = "hubert.cornet-ext@saint-maclou.com","thedjinhn@gmail.com" +[string[]]$To = $Destinataires.Split(',') +$From = "POWERSHELL@saint-maclou.com" +$Subject = "Exemple 3" +$BODY = "Some important plain text!" +$SmtpServer = "RELAISSMTP.FR.DGS.GROUP" +$Port = "25" +$Attachments = "" +$Bcc = "" +$Cc = "" +$Encoding = "" +$Priority = "Normal" + +Send-MailMessage -To $To -From $From -Subject $Subject -Body $BODY -SmtpServer $SmtpServer -Port $Port -BodyAsHtml -Priority $Priority #-Bcc $Bcc -Cc $Cc -Encoding $Encoding -Attachments $Attachments \ No newline at end of file diff --git a/Exemples/Fichier multiple/Liste-import.csv b/Exemples/Fichier multiple/Liste-import.csv new file mode 100644 index 0000000..493276e --- /dev/null +++ b/Exemples/Fichier multiple/Liste-import.csv @@ -0,0 +1,431 @@ +objet;marque;modele;serial;autre +IMPRIMANTE;RICOH;1515F;K2268700985;P.1/2 +IMPRIMANTE;RICOH;1515F;K2268500899;P.1/2 +IMPRIMANTE;RICOH;1515F;K2258801771;P.1/2 +IMPRIMANTE;RICOH;1515F;K2258600994;P.1/2 +IMPRIMANTE;RICOH;1515F;K2259401255;P.1/2 +IMPRIMANTE;RICOH;1515F;K2259600645;P.1/2 +IMPRIMANTE;RICOH;1515F;K2268600239;P.1/2 +IMPRIMANTE;RICOH;1515F;K2259101182;P.1/2 +IMPRIMANTE;RICOH;1515MF;K2169008365;P.1/2 +IMPRIMANTE;RICOH;1515MF;K2168907266;P.1/2 +IMPRIMANTE;RICOH;MP201SPF;W3029500722;P.3 +IMPRIMANTE;RICOH;MP201SPF;W3038800967;P.3 +IMPRIMANTE;RICOH;MP201SPF;W3029502690;P.3 +IMPRIMANTE;RICOH;MP201SPF;W3029502959;P.3 +IMPRIMANTE;RICOH;MP201SPF;W3029303536;P.3 +IMPRIMANTE;RICOH;MP171SPF;V4489601154;P.3 +IMPRIMANTE;RICOH;MP171SPF;V4498501045;P.3 +IMPRIMANTE;RICOH;MP171SPF;V4498500895;P.3 +IMPRIMANTE;RICOH;MPC407SPF;C499P700786;P.5 +IMPRIMANTE;RICOH;MPC407SPF;C499P700804;P.5 +IMPRIMANTE;KONICA MINOLTA;BIZHUB36;A0ED94360;P.6 +IMPRIMANTE;KONICA MINOLTA;BIZHUB36;A0ED94360;P.6 +IMPRIMANTE;KONICA MINOLTA;;A32R022015985;P.3 +UC;DELL;DCNE;9L4JJ3J;P.16 +UC;DELL;DCNE;FL4JJ3J;P.16 +UC;DELL;DCNE;20WJ94J;P.16 +UC;DELL;DCNE;57WJ94J;P.16 +UC;DELL;DCNE;BST434J;P.16 +UC;DELL;DCNE;G25VL4J;P.16 +UC;DELL;DCNE;D4WJ94J;P.16 +UC;DELL;DCNE;DZVJ94J;P.16 +UC;DELL;DCNE;C5WJ94J;P.16 +UC;DELL;DCNE;GYVJ94J;P.16 +UC;DELL;DCNE;25WJ94J;P.16 +UC;DELL;DCNE;CZVJ94J;P.16 +UC;DELL;DCNE;50WJ94J;P.16 +UC;DELL;DCNE;5YVJ94J;P.16 +UC;DELL;DCNE;G3WJ94J;P.16 +UC;DELL;DCNE;J0WJ94J;P.16 +UC;DELL;DCNE;67WJ94J;P.16 +UC;DELL;DCNE;24WJ94J;P.16 +UC;DELL;DCNE;DL4JJ3J;P.16 +UC;DELL;DCNE;72WJ94J;P.16 +UC;DELL;DCNE;G2WJ94J;P.16 +UC;DELL;DCNE;82WJ94J;P.16 +UC;DELL;DCNE;7ZVJ94J;P.16 +UC;DELL;DCNE;94WJ94J;P.16 +UC;DELL;DCNE;31WJ94J;P.16 +UC;DELL;DCNE;70WJ94J;P.16 +UC;DELL;DCNE;41WJ94J;P.16 +UC;DELL;DCNE;G1WJ94J;P.16 +UC;DELL;DCNE;60WJ94J;P.16 +UC;DELL;DCNE;HZVJ94J;P.16 +UC;DELL;DCNE;G0WJ94J;P.16 +UC;DELL;DCNE;84WJ94J;P.16 +UC;DELL;DCNE;J4WJ94J;P.16 +UC;DELL;DCNE;F6WJ94J;P.16 +UC;DELL;DCNE;92WJ94J;P.16 +UC;DELL;DCNE;FYVJ94J;P.16 +UC;DELL;DCNE;37WJ94J;P.16 +UC;DELL;DCNE;60DGX3J;P.16 +UC;DELL;DHS;H32GV1J;P.16 +UC;DELL;DHS;3WNWR0J;P.16 +UC;DELL;DHS;7GBBG1J;P.16 +UC;DELL;DHS;7LXMS1J;P.16 +UC;DELL;DHS;8LM5S0J;P.16 +UC;DELL;DHS;?;P.16 +UC;DELL;DHP;4HCSQ1J;P.16 +UC;DELL;DHP;JPYKF1J;P.16 +UC;DELL;DHP;J569K1J;P.16 +UC;DELL;DCSM;GXVXG4J;P.16 +UC;DELL;DCSM;JXVXG4J;P.16 +UC;DELL;DCSM;3YVXG4J;P.16 +UC;DELL;DCCY;6YKF32J;P.16 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021013846;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021013808;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021019527;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021019525;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021013799;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021013837;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021013794;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021013821;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021019536;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021013743;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021019473;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021019535;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021013839;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021019538;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021013830;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;451433LM12LD3;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;451433LM12LC2;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;451433LM11C1;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;A63P021022185;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 20P;A32P021024680;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 20P;A32P021024664;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 20P;A32P021024678;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 20P;A32P021024682;P.7/8 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 20P;A32P021024676;P.7/8 +IMPRIMANTE;EPSON;AL-M200DN;RVCZ104482;P.7/8 +IMPRIMANTE;EPSON;AL-M200DN;RVCZ104679;P.7/8 +IMPRIMANTE;EPSON;AL-M200DN;RVCZ102517;P.7/8 +IMPRIMANTE;EPSON;AL-M200DN;RVCZ104680;P.7/8 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0UJ532;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0UJ532;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0UJ532;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0UJ532;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0UJ532;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0UJ532;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0UJ532;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0UJ532;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0MX028;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0MX028;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0MX028;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0MX028;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0MX028;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0MX028;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0M6CFG;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0M6CFG;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0M6CFG;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0M6CFG;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0M6CFG;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0M6CFG;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0R511D;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0R511D;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0R511D;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;DP4733;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;DP4733;P.9 +IMPRIMANTE;DELL;LASER PRINTER 1720DN;0M9834;P.9 +IMPRIMANTE;C352A;;LEVY159613;P.9 +IMPRIMANTE;PRINTRONIX;P7210;6R07120114;FOND ENTREPT +IMPRIMANTE;PRINTRONIX;P7210;6RV608150016;FOND ENTREPT +IMPRIMANTE;KONICA MINOLTA;BIZHUB36;A45X02100P006;FOND ENTREPT +IMPRIMANTE;KONICA MINOLTA;BIZHUB36;A45X021008070;FOND ENTREPT +IMPRIMANTE;RICOH;MPC2050;V2294502701;FOND ENTREPT +IMPRIMANTE;RICOH;1027;K2259600645;FOND ENTREPT +IMPRIMANTE;RICOH;MP2550;M6584000997;FOND ENTREPT +IMPRIMANTE;RICOH;MPC3500;L8974200939;FOND ENTREPT +IMPRIMANTE;RICOH;3025;K8563804891;FOND ENTREPT +IMPRIMANTE;RICOH;MPC5000;V1303000756;FOND ENTREPT +SERVEUR;EMS01;;2PK2T3J;P.10/11 +SERVEUR;EMS01;;1NG73TJ;P.10/11 +SERVEUR;EMS01;;3PK2T3J;P.10/11 +SERVEUR;3573;;xSB2008SD;P.10/11 +SERVEUR;JPE-i;;CF2NV075200123;P.10/11 +SERVEUR;B2G;;KD7N908;P.10/11 +SERVEUR;EMC;;AC979094950279;P.10/11 +SERVEUR;7945L4G;;K45GTT;P.10/11 +SERVEUR;TL2000;;H79851F;P.10/11 +SERVEUR;7945L4G;;KD45FYH;P.10/11 +UC;SCL;;5LPDM0J;P.10/11 +UC;SCL;;6LPDM0J;P.10/11 +UC;SCL;;1Y6W21J;P.10/11 +UC;ECM;;FFWJF2J;P.10/11 +UC;ECM;;1222904;P.10/11 +UC;ECM;;CZT5F1J;P.10/11 +UC;ECM;;GYG9B1J;P.10/11 +IMPRIM. ENTREPOT;B-472-QP;;1N310342;P.10/11 +IMPRIM. ENTREPOT;B-672-QP;;28015220298;P.10/11 +IMPRIM. ENTREPOT;B-672-QP;;2801522285;P.10/11 +IMPRIMANTE;LEXMARK;MS421DN;S460083510CV0M;P.4 +IMPRIMANTE;LEXMARK;MS421DN;S460083510CT73;P.4 +IMPRIMANTE;LEXMARK;MS421DN;S460083510CV11;P.4 +UC;DELL;OPTIPLEX 7010;7QDKJ32;P.17 +UC;DELL;OPTIPLEX 360;1,44561E+11;? +IMPRIMANTE;LEXMARK;7017-476;S701793530FNMX;P.4 +IMPRIMANTE;LEXMARK;MS421DN;S701793530FNBW;P.4 +UC;DELL;OPTIPLEX 3020;JBH4952;P.18 +UC;DELL;OPTIPLEX 3020;D9H4952;P.18 +UC;DELL;OPTIPLEX 3020;CTWFZ72;P.18 +UC;DELL;D11S;H1YCGM2;P.17 +UC;DELL;D11S;7JGSV22;P.17 +IMPRIMANTE;DELL;;G7QJR0J; +UC;DELL;OPTIPLEX 3060;TPV1824Z; +UC;DELL;OPTIPLEX 3060;TPV1824X; +UC;HP;;CZC310320M; +UC;HP;;CZC4124DPG; +UC;HP;;CZC4162WNV; +UC;HP;;CZC4124DPR; +ECRAN;FUJITSU - W2112;W2112;YV8T028676;P.18 +ECRAN;FUJITSU - L22T-2;L22T-2;YV7Q006974;P.18 +ECRAN;FUJITSU - W2112;W2112;YV8T028265;P.18 +ECRAN;FUJITSU;;YV5F216107;P.18 +ECRAN;FUJITSU;;YV5F216068;P.18 +ECRAN;AOC - 215LM00063;215LM00063;B63G2QA002736;P.17 +ECRAN;AOC - 215LM00063;215LM00063;B63GAQA010890;P.17 +ECRAN;AOC - 215LM00063;215LM00063;B63G2QA002667;P.17 +ECRAN;AOC - 215LM00063;215LM00063;B63GBQA014401;P.17 +ECRAN;AOC - 215LM00063;215LM00063;B63G8QA001019;P.17 +ECRAN;AOC - 215LM0041;215LM0041;GFRGBHA005133;P.17 +ECRAN;AOC - 215LM0041;215LM0041;GFRGBHA005159;P.17 +ECRAN;AOC - 215LM0041;215LM0041;GFRGBHA005137;P.17 +ECRAN;AOC - 215LM0041;215LM0041;GFRGBHA005179;P.17 +ECRAN;AOC - 215LM0041;215LM0041;GFRGBHA005147;P.17 +ECRAN;AOC - 215LM0041;215LM0041;GFRGBHA005132;P.17 +ECRAN;AOC - 215LM0041;215LM0041;GFRGBHA005146;P.17 +ECRAN;AOC - 215LM00019;215LM00019;GAXF1HA002177;P.17 +ECRAN;DELL;;CN-044FGY-72872-44J-C8YM;P.18 +ECRAN;DELL;;CN-0PD06D-72872-4AH-C3CM;P.18 +ECRAN;DELL;;CN-0PD06D-72872-4AH-C0WM;P.18 +ECRAN;DELL;;CN-0C2XM8-74445-22L-526L;P.18 +ECRAN;DELL;;CN-029C29-74261-58D-1NDS;P.18 +ECRAN;LG - 22M37A;22M37A;S04NTQD10436;P.18 +ECRAN;LG - 22M37A;22M37A;S04NTYT10458;P.18 +ECRAN;LG - 22M37A;22M37A;S04NTLE10464;P.18 +ECRAN;LG - 22M37A;22M37A;S04NTEP10420;P.18 +ECRAN;HANNS.G - HC174D;HC174D;646DK3NA01059;P.18 +ECRAN;ACER - V193W;V193W;ETLJE0W1810490320C4306;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W181049032264306;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W1810490329D4306;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W181049032864306;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W181049032184306;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W181049032A84306;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W181049032174306;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W1810490321B4306;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W181107082704309;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W181107082714309;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W1811070827F4309;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W1811070827D4309;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W1811070826A4309;P.19 +ECRAN;ACER - V193W;V193W;ETLJE0W181107081C34309;P.19 +ECRAN;ACER - V193W;V193W;ETLBP0C186051266ED40G0;P.19 +ECRAN;ACER - V193W;V193W;ETLBP0C186051269BD40G0;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420AB888500;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420A3D18500;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420AB758500;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420A8098500;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420A8188500;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420AB8A8500;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420AB168500;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420AB768500;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420AB7C8500;P.19 +ECRAN;ACER - V193WD;V193WD;ETLHV0D0929420AB798500;P.19 +ECRAN;ACER - V226HQL;V226HQL;MMLY7EE0164480746D8513; +ECRAN;ACER - V226HQL;V226HQL;MMLY7EE016448074DB8513; +ECRAN;ACER - V193HQV;V193HQV;ETLKX0W020224028F84300;P.19 +ECRAN;ACER - V193HQV;V193HQV;ETLKX0W020224028DC4300;P.19 +ECRAN;ACER - V193HQV;V193HQV;ETLKX0W020224029024300;P.19 +ECRAN;ACER - V173;V173;ETLCA02018823045894111;P.19 +ECRAN;ACER - V196WL;V196WL;MMLXWEE005311068338530;P.19 +ECRAN;ACER - V196WL;V196WL;MMLXWEE005311069888530;P.19 +ECRAN;ACER - V196WL;V196WL;MMLXWEE0053110694E8530;P.19 +IMPRIMANTE;KYOCERA - FS-2100DN;FS-2100DN;V1N5789691;P.4 +UC;DELL - D07D001;D07D001;;P.18 +UC;DELL - D07D001;D07D001;;P.18 +UC;DELL - D07D001;D07D001;;P.18 +UC;DELL - D07D001;D07D001;;P.18 +UC;DELL - D07D001;D07D001;;P.18 +UC;DELL - D07D001;D07D001;;P.18 +UC;HP;;CZC4124DPR;P.17 +UC;HP;;CZC4124DV5;P.17 +UC;HP;;CZC4124DQW;P.17 +UC;HP;;CZC4124DQC;P.17 +UC;HP;;CZC4162WP7;P.17 +UC;HP;;CZC4162WP0;P.17 +UC;HP;;CZC4162WMT;P.17 +UC;HP;;CZC4140VRT;P.17 +IMPRIMANTE;MS410DN;MS410DN;S451445LM1YDNK;P.4 +IMPRIMANTE;MS410DN;MS410DN;S451445LM206BF;P.4 +IMPRIMANTE;MS410DN;MS410DN;S451445LM20696;P.4 +IMPRIMANTE;;;S451445L1YDVL;P.4 +IMPRIMANTE;;;S451445L1YDMW;P.4 +IMPRIMANTE;;;S451445LM1F094;P.4 +IMPRIMANTE;;;S451445LM1YDGB;P.4 +IMPRIMANTE;;;S451445LM1Z5HP;P.4 +IMPRIMANTE;- MS415DN;MS415DN;S451445LM1YDZ;P.4 +IMPRIMANTE;DELL - 0MX028;0MX028;;P.4 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86217E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86275E+11;P.15 +UC;DELL;;1KGSV22;P.15 +UC;DELL;;4KGSV22;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86275E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;DELL;;1,86177E+11;P.15 +UC;HP;;CZC310320Q;P.15 +UC;HP;;CZC3360BQD;P.15 +UC;HP;;CZC242CW3Z;P.15 +UC;HP;;CZC310320W;P.15 +UC;HP;;CZC3360BQH;P.15 +UC;HP;;CZC3360BQM;P.15 +UC;HP;;CZC310320T;P.15 +UC;HP;;CZC3360BQJ;P.15 +UC;HP;;CZC310320P;P.15 +UC;HP;;CZC4162WMW;P.15 +UC;HP;;CZC4162WPB;P.15 +UC;HP;;CZC4162WNL;P.15 +UC;HP;;CZC3360BQB;P.15 +UC;HP;;CZC310320N;P.15 +UC;HP;;CZC3360BQK;P.15 +UC;HP;;CZC310320V;P.15 +IMPRIMANTE;LEXMARK MS410DN;MS410DN;S451445LM1Z5VY;P.4 +IMPRIMANTE;LEXMARK MS410DN;MS410DN;S451445LM1YDV8;P.4 +IMPRIMANTE;LEXMARK MS410DN;MS410DN;S451444LM1F0CB;P.4 +IMPRIMANTE;LEXMARK MS410DN;MS410DN;S451444LM1F095;P.4 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;S451443LM185KL;P.4 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;S451445LM1Z638;P.4 +IMPRIMANTE;KONICA MINOLTA;BIZHUB 3300P;S451445LM206CC;P.4 +IMPRIMANTE;KONICA MINOLTA - BIZHUB 3300P;BIZHUB 3300P;S451444LM1F06F;P.4 +IMPRIMANTE;MS421DW;MS421DW;S46009323104XX;P.4 +IMPRIMANTE;MS421DW;MS421DW;S46009323105LV;P.4 +SWITCH;TP LINK;TL-SF1008P;10B64901046;CAGE +SWITCH;TP LINK;TL-SF1008P;13175202775;CAGE +SWITCH;TP LINK;TL-SF1008P;13175202783;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;11B95800510;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;9983300925;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;11B95800501;CAGE +SWITCH;TP LINK;TL-SF1008P;11370200527;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;13168801655;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;13175202855;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;9975800770;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;13175202784;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;11B95800295;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;9983300890;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;9975800767;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;10B64901052;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;9983300941;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;13175202777;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;9975800719;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;11264301877;CAGE +SWITCH;TP LINK - TL-SF1008P;TL-SF1008P;11264301274;CAGE +SWITCH;SMC - EZ108DT;EZ108DT;T184601903;CAGE +SWITCH;SMC - EZ108DT;EZ108DT;T162516018;CAGE +SWITCH;SMC - EZ108DT;EZ108DT;T185002057;CAGE +SWITCH;SMC - EZ108DT;EZ108DT;T185002013;CAGE +SWITCH;SMC - EZ108DT;EZ108DT;T142201396;CAGE +SWITCH;SMC - EZ108DT;EZ108DT;T134706296;CAGE +SWITCH;ATI - FS708;FS708;L1E44153B;CAGE +SWITCH;ATI - FS708;FS708;L0EZ4018B;CAGE +SWITCH;ATI - FS708;FS708;L0KV4018B;CAGE +SWITCH;ATI - FS708;FS708;L0FD4018B;CAGE +SWITCH;MOTOROLA - PD3001/AC;PD3001/AC;SR10136050012326701;CAGE +SWITCH;MOTOROLA - PD3001/AC;PD3001/AC;SR08526050058512401;CAGE +SWITCH;MOTOROLA - PD3001/AC;PD3001/AC;SR11016050001140001;CAGE +SWITCH;DACOMEX;;?;CAGE +SWITCH;SMC - SMCGS8;SMCGS8;N11027006616;CAGE +SWITCH;DEXLAN - EW-408R;EW-408R;53124800628;CAGE +SWITCH;TP-LINK - TL-SF1016D;TL-SF1016D;2,14705E+12;CAGE +SWITCH;TP-LINK - TL-SF1016D;TL-SF1016D;2,14752E+12;CAGE +SWITCH;TP-LINK - TL-SF1016D;TL-SF1016D;2,14752E+12;CAGE +SWITCH;TP-LINK - TL-SF1016D;TL-SF1016D;2,14752E+12;CAGE +SWITCH;TP-LINK - TL-SF1016D;TL-SF1016D;2,14668E+12;CAGE +SWITCH;TP-LINK - TL-POE150S;TL-SF1016D;2,14455E+12;CAGE +UC;HP;;CZC6348XMS;P.20 +UC;HP;;CZC5112XXQ;P.20 +UC;HP;;CZC5112XY6;P.20 +UC;HP;;CZC5112XY1;P.20 +UC;HP;;CZC651782N;P.20 +UC;HP;;CZC4293K1Z;P.20 +UC;DELL - D08U;D08U;6FZ5C72;P.18 +UC;DELL - D08U;D08U;CTV9Z72;P.18 +WIFI;DELL - ANTENNE SF (WLAN);ANTENNE SF (WLAN);CN0WX4920084235O3249;CAGE +WIFI;DELL - ANTENNE SF (WLAN);ANTENNE SF (WLAN);CN0WX4920084235O3253;CAGE +WIFI;DELL - ANTENNE SF (WLAN);ANTENNE SF (WLAN);CN0WX4920084235O3223;CAGE +WIFI;DELL - ANTENNE SF (WLAN);ANTENNE SF (WLAN);CN0WX4920084235O3252;CAGE +WIFI;DELL - ANTENNE SF (WLAN);ANTENNE SF (WLAN);CN0RU2970084235O3264;CAGE +WIFI;MOTOROLA - NCAP-500;NCAP-500;1,30305E+13;CAGE +WIFI;MOTOROLA - NCAP-500;NCAP-500;1,41155E+13;CAGE +WIFI;MOTOROLA - NCAP-500;NCAP-500;S14115523075061;CAGE +WIFI;MOTOROLA - NCAP-500;NCAP-500;S14115523075467;CAGE +WIFI;MOTOROLA - NCAP-500;NCAP-500;S14115523075264;CAGE +WIFI;MOTOROLA - NCAP-500;NCAP-500;S14115523075250;HS/CAGE +WIFI;MOTOROLA - NCAP-500;NCAP-500;S14115523075501;HS/CAGE +SWITCH;MOTOROLA - PD3001/AC;PD3001/AC;SR10136050012326801;CAGE +WIFI;MOTOROLA - AP-5131;AP-5131;1,03445E+13;CAGE +WIFI;HOMERIDER / CR100_ANIG;CR100_ANIG;5,32202E+15;CAGE +ECRAN;LG - 22M37A-B;22M37A-B;504NTHM10433;CAGE +ECRAN;LG - 22M37A-B;22M37A-B;504NTFA10427;CAGE +UC;HP - TPC-I011-DM;TPC-I011-DM;4CH602164M; +ECRAN;AOC - 215LM00041;215LM00041;GFRGBHA005140;CAGE +ECRAN;AOC - 215LM00041;215LM00041;GFRGBHA005188;CAGE +ECRAN;AOC - 215LM00063;215LM00063;B63GAQA011751;CAGE +ECRAN;AOC - 215LM00019;215LM00019;GAXF1HA002122;CAGE +ECRAN;FUJITSU - W2112;W2112;YV8T028276;CAGE +ECRAN;FUJITSU - L22T-2;L22T-2;YV7Q006922;CAGE +ECRAN;AOC - 215LM00041;215LM00041;GFRGBHA004388;CAGE +ECRAN;ACER - V193W;V193W;ETLJE0W1811070827A4309;CAGE +ECRAN;ACER - V193W;V193W;ETLJE0W18104900320F4306;CAGE +ECRAN;ACER - V193W D;V193W D;ETLHV0D0929420AB808500;CAGE +ECRAN;ACER - V193W D;V193W D;ETLHV0D0929420AB948500;CAGE +ECRAN;ACER - V193W D;V193W D;ETLHV0D0929420A8118500;CAGE +ECRAN;ACER - V193W;V193W;ETLPB0C186051266E940G0;CAGE +ECRAN;ACER - V193W;V193W;ETLJE0W181049032104306;CAGE +ECRAN;ACER - V193W D;V193W D;ETLHV0D0929420A3D68500;CAGE +ECRAN;AOC - 215LM00063;215LM00063;B63GAQA010841;HS / P.20 +ECRAN;DELL - E2216Hf;E2216Hf;CN-0XV9JN-72872-631-DKJL-A01;HS / P.20 +ECRAN;AOC - 215LM00019;215LM00019;GAXF1HA002080;HS / P.20 +ECRAN;AOC - 215LM00063;215LM00063;B63G2QA002742;HS / P.20 +ECRAN;FUJITSU - L22T-2;L22T-2;YV5F216051;HS / P.20 +UC;DELL - OPTIPLEX 390;OPTIPLEX 390;1,86177E+11;CAGE +UC;DELL - OPTIPLEX 3010;OPTIPLEX 3010;1,86217E+11;CAGE +ECRAN;AOC - 215LM00063;215LM00063;B63G6QA013855;HS / P.20 +ECRAN;AOC - 215LM00019;215LM00019;FZUECHA043503;HS / P.20 +ECRAN;AOC - 215LM00063;215LM00063;B63G6QA014012;HS / P.20 +ECRAN;AOC - 215LM00063;215LM00063;B63G6QA014098;CAGE +ECRAN;AOC - 215LM00063;215LM00063;B63G6QA001233;HS / P.20 +ECRAN;AOC - 215LM00063;215LM00063;B63GAQA011924;HS / P.20 +ECRAN;AOC - 215LM00063;215LM00063;B63G6QA001232;HS / P.20 +ECRAN;AOC - 215LM00019;215LM00019;GAXF1HA002112;HS / P.20 +ECRAN;AOC - 215LM00019;215LM00019;GAXF1HA002079;HS / P.20 +UC;DELL - OPTIPLEX 390;OPTIPLEX 390;1,86177E+11;CAGE +ECRAN;AOC - 215LM00063;215LM00063;B63GAQA010860;HS / P.20 +ECRAN;AOC - 215LM00019;215LM00019;GAXF1HA002060;HS / P.20 +ECRAN;AOC - 215LM00032;215LM00032;KARFC1A002746;HS / P.20 +ECRAN;AOC - 215LM00063;215LM00063;B63G6QA014075;HS / P.20 +ECRAN;AOC - 215LM00019;215LM00019;GAXF1HA013119;HS / P.20 +WIFI;TP-LINK - TL-POE150S;TL-POE150S;2,16948E+12;CAGE +SWITCH;AVOCENT - SWITCH VIEW;SWITCH VIEW;FK0241919;CAGE +WIFI;D-LINK - DWL-G520;DWL-G520;BN2G33B004856;CAGE +SWITCH;3COM;3300XM;7MAV1D761C078;CAGE +SWITCH;3COM;3300XM;7MAV1D761D278;HS / CAGE +SWITCH;TRENDNET;TE100-S80g;CA1048S849840;CAGE +UC;WYSE;SX0;61T8DC03152;CAGE +SWITCH;TP-LINK;TL-POE150S;127A2804999;CAGE +SWITCH;TP-LINK;TL-POE150S;127A2804982;CAGE diff --git a/Exemples/Fichier multiple/script-multi-fichier.ps1 b/Exemples/Fichier multiple/script-multi-fichier.ps1 new file mode 100644 index 0000000..6916cd6 --- /dev/null +++ b/Exemples/Fichier multiple/script-multi-fichier.ps1 @@ -0,0 +1,59 @@ +$Folder = "C:\Users\hubert.cornet\Downloads\Rules\" + +clear + +$Mag = $Null +$FinalData = $Null +$RANK = 100 + +For ($Num = 1 ;$Num -le 243 ; $Num++) { + $RANK = 10 + $RANK = $RANK + $Num + + $measureNum = $Num | Measure-Object -Character + + If ($measureNum.Characters -eq 1 ) { + $Mag = "00"+$Num + } + ElseIf ($measureNum.Characters -eq 2 ) { + $Mag = "0"+$Num + } + ElseIf ($measureNum.Characters -eq 3 ) { + $Mag = $Num + } + Else { + + } + + $DataTexte = " + + + Saint-Maclou + RuleTicket + $RANK + MAG$Mag + + AND + 1 + + 0 + 500717c8-2bd6e957-53a12b5fd37f94.10365$Mag + 3 + + + _locations_id_of_requester + 0 + Magasins &#62; MAG$Mag + + + assign + locations_id + Magasins &#62; MAG$Mag + + +" + + $File = $Folder+"\rules-$Mag.xml" + Add-Content $File $DataTexte +} + diff --git a/Exemples/Fichier multiple/script-un-fichier.ps1 b/Exemples/Fichier multiple/script-un-fichier.ps1 new file mode 100644 index 0000000..19de05d --- /dev/null +++ b/Exemples/Fichier multiple/script-un-fichier.ps1 @@ -0,0 +1,57 @@ +$File = "C:\Users\hubert.cornet\Downloads\rules-010.xml" + +clear + +$Mag = $Null +$FinalData = $Null +$RANK = 30 + +For ($Num = 1 ;$Num -le 243 ; $Num++) { + $RANK = 10 + $RANK = $RANK + $Num + + $measureNum = $Num | Measure-Object -Character + + If ($measureNum.Characters -eq 1 ) { + $Mag = "00"+$Num + } + ElseIf ($measureNum.Characters -eq 2 ) { + $Mag = "0"+$Num + } + ElseIf ($measureNum.Characters -eq 3 ) { + $Mag = $Num + } + Else { + + } + + $DataTexte = " + + Saint-Maclou + RuleLocation + $RANK + MAG$Mag + + AND + 1 + + 0 + 500717c8-2bd6e957-53a12b5fd45f84.20365$Mag + 0 + + + tag + 0 + MAG$Mag + + + assign + locations_id + Magasins &#62; MAG$Mag + + " + + $FinalData += $DataTexte +} + +Add-Content $File $FinalData diff --git a/Exemples/Finalisation.ps1 b/Exemples/Finalisation.ps1 new file mode 100644 index 0000000..ed3f801 --- /dev/null +++ b/Exemples/Finalisation.ps1 @@ -0,0 +1,96 @@ +[void][reflection.assembly]::loadwithpartialname("system.windows.forms") + +Set-ExecutionPolicy Unrestricted +Clear-Host + +write-host "Lancement du script" +write-host " " + +# Fonction pour l'interface de saisie +Function ModeInstall() { + [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") + [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") + + $objForm = New-Object System.Windows.Forms.Form + $objForm.Text = "Finalisation serveur" + $objForm.Size = New-Object System.Drawing.Size(500,300) + $objForm.StartPosition = "CenterScreen" + + $objForm.KeyPreview = $True + $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") + {$ClusterInstall=$objListBoxCluster.SelectedItem;$objForm.hide()}}) + $objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") + {$objForm.hide()}}) + $objForm.AcceptButton = $OKButton + $objForm.CancelButton = $CancelButton + + $OKButton = New-Object System.Windows.Forms.Button + $OKButton.Location = New-Object System.Drawing.Size(10,230) + $OKButton.Size = New-Object System.Drawing.Size(75,23) + $OKButton.Text = "OK" + $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK + + $CancelButton = New-Object System.Windows.Forms.Button + $CancelButton.Location = New-Object System.Drawing.Size(200,230) + $CancelButton.Size = New-Object System.Drawing.Size(75,23) + $CancelButton.Text = "Cancel" + $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel + + $objLabel1 = New-Object System.Windows.Forms.Label + $objLabel1.Location = New-Object System.Drawing.Size(10,20) + $objLabel1.Size = New-Object System.Drawing.Size(280,20) + $objLabel1.Text = "Merci de la clé Windows 2016 pour finaliser le serveur" + + $objLabel3 = New-Object System.Windows.Forms.Label + $objLabel3.Location = New-Object System.Drawing.Size(10,80) + $objLabel3.Size = New-Object System.Drawing.Size(280,20) + $objLabel3.Text = "clé : " + + $objTextBoxKey = New-Object System.Windows.Forms.TextBox + $objTextBoxKey.Location = New-Object System.Drawing.Size(10,100) + $objTextBoxKey.Size = New-Object System.Drawing.Size(250,20) + $objTextBoxKey.text = "AAAAA-BBBBB-CCCCC-DDDDD-EEEEE" + $objForm.Controls.Add($objTextBoxKey) + + + $objForm.Controls.AddRange(@($OKButton,$CancelButton,$objLabel1,$objLabel2,$objLabel3,$objLabel4,$objListBoxServeur)) + $objForm.Topmost = $True + + $dialogResult = $objForm.ShowDialog() + + if ($dialogResult -eq [System.Windows.Forms.DialogResult]::OK) + { + + $Key = $objTextBoxKey.Text + #$InstallCRPCEN + + $return = "$Key" + $return + } + + $objForm.dispose() + +} # End Function DriveList + +write-host " *****************************************" +Write-host " " + +write-host " *****************************************" +write-host " * Génération de l'interface" +write-host " *****************************************" + +$ModeInstall = ModeInstall +write-host "- Données saisie ............................................... " +$Blocage = $False + +write-host "- Validation des informations saisie ............................. " +if ($ModeInstall -ne $null) { + $ModeInstall | foreach { $ModeInstall = $_ -split ';' + $key = $ModeInstall[0] +} } + +write-host $key + +Dism /online /Set-Edition:ServerStandard /AcceptEula /ProductKey:$key + +Restart-Computer \ No newline at end of file diff --git a/Exemples/Get-FolderSize.ps1 b/Exemples/Get-FolderSize.ps1 new file mode 100644 index 0000000..ac3f6a8 --- /dev/null +++ b/Exemples/Get-FolderSize.ps1 @@ -0,0 +1,125 @@ +<# + .SYNOPSIS + + Cette fonction renvoi le nombre de fichier et la taille contenu dans le dossier ainsi que le détail pour les sous-dossiers sur N niveaux. + Le résultat est un tableau indiquant le nombre et la taille des fichiers directement dans le dossier ainsi que le cumul des sous dossiers. + Il est possible de définir l'unité pour les tailles (B,Kb,Mb,Gb), le nombre de niveau et de filtrer sur certains types de fichier (*.txt) + La fonction utilise Get-childitem et Measure-Object. + Attention à la version de PowerShell. + + This function returns the number of files and the size contained in the folder as well as the detail for the subfolders on N levels. +         The result is a table showing the number and size of files directly in the folder as well as the total of subfolders. +         It is possible to set the unit for sizes (B, Kb, Mb, Gb), the number of level and filter on certain file types (* .txt) +         The function uses Get-childitem and Measure-Object. +         Watch out for the PowerShell version. + + + .DESCRIPTION + Cette fonction renvoie un tableau avec : + - chemin du dossier (Path) + - nombre de fichiers dans le dossier (InFolderFiles) + - tailles des fichiers dans le dossier (InFolderSize) + - nombre de fichier dans le dossier et les sous dossiers (AllFiles) + - tailles des fichiers du dossier et des sous dossiers (AllSize) + + This function returns an array with: +      - Path of the folder (Path) +      - number of files in the folder (InFolderFiles) +      - file sizes in the folder (InFolderSize) +      - number of files in the folder and subfolders (AllFiles) +      - file sizes of the folder and subfolders (AllSize) + + + .PARAMETER FolderPath + + Chemin du dossier à analyser + Folder path to analyze + + .PARAMETER Level + + Nombre de niveau de sous dossier. + Number of subfolder level. + + .PARAMETER unit + + Unité pour les tailles de fichiers (B,Kb,Mb,Gb).Par défaut :Gb. + Unit for file sizes + + .PARAMETER Filter (B,Kb,Mb,Gb), default Gb. + + Filtre les fichiers par type. Par exemple *.txt ne compte que les fichiers txt. + Filters files by type. For example * .txt only counts txt files. + + + .EXAMPLE + + .\Get-FolderSize.ps1 -FolderPath d:\tools -level 2 + .EXAMPLE + + .\Get-FolderSize.ps1 -FolderPath \\Server\Documents -level 2 -filter "*.doc*" -unit "kb" + + .NOTES + Author: Philippe BARTH + Version: 1.0 + #> + + # Déclaration des paramètres + param([string]$FolderPath,[int]$level,[string]$unit="Mb",[string]$Filter="*.*") + +if ($level -lt 1) { $level = 1 } + +# Determine unit for folder size, default Gb +Switch ($unit) + { + "Gb" + { + $div="1GB" + } + + "Mb" + { + $div="1MB" + } + + "Kb" + { + $div="1KB" + } + "b" + { + $div="1" + } + Default + { + $div="1GB" + } + + } + + +#init result +$result=@() +# search subfolder +$SubFolders = (Get-ChildItem -path $FolderPath -recurse -Directory -Depth $($level-1)).FullName +#add parent folder in list +$SubFolders+=$FolderPath +# scan all folder +foreach ($subfolder in $SubFolders) + { + #Search file in folder and subfolder + $FolderSize = Get-ChildItem -path $SubFolder -filter $filter -File -recurse | Measure-Object -Sum Length + #Search file only in folder + $fileInFolder = Get-ChildItem -path $SubFolder -filter $filter -File | Measure-Object -Sum Length + + #result + $result+= New-Object -TypeName PSObject -Property @{ + Path = $subfolder + AllFiles = $foldersize.count + AllSize = $foldersize.sum/$div + InFolderFiles = $fileInFolder.count + InFolderSize = $fileInFolder.sum/$div + } + + } + +return $result | Sort-Object -Property path diff --git a/Exemples/Nagvis - generateur de carte/script.ps1 b/Exemples/Nagvis - generateur de carte/script.ps1 new file mode 100644 index 0000000..71b6d6c --- /dev/null +++ b/Exemples/Nagvis - generateur de carte/script.ps1 @@ -0,0 +1,45 @@ +cls + +$Folder = "C:\Users\hubert.cornet\Downloads\Centreon\maps" +$FichierTemplate = "Mag000.cfg" +$FichierListMag = "_liste.csv" + +$ListeMag = Import-CSV -Path $Folder"\"$FichierListMag -Delimiter ";" + +Foreach ($Mag in $ListeMag) { + $Number = $Mag.Magasins.SubString(3,3) + $TPV = $Mag.tpv.SubString(3,5) + + $FichierMap = $Folder+"\Mag"+$Number+".cfg" + + If (!(Test-Path -Path $FichierMap+".new") -And !(Test-Path -Path $FichierMap)) { + Write-host "False" + + Copy-Item $Folder"\Mag000.cfg" -Destination $FichierMap+".old" + (Get-Content $FichierMap+".old") -Replace "Mag000", "Mag$Number" | Set-Content $FichierMap+".tmp1" + (Get-Content $FichierMap+".tmp1") -Replace "swa-000", "swa-$Number" | Set-Content $FichierMap+".tmp2" + + If (Test-Path -Path $FichierMap+".old") { + Remove-Item -Path $FichierMap+".old" -Force + } + + (Get-Content $FichierMap+".tmp2") -Replace "AAAAA", "$TPV" | Set-Content $FichierMap+".new" + + If (Test-Path -Path $FichierMap+".tmp1") { + Remove-Item -Path $FichierMap+".tmp1" -Force + } + + If (Test-Path -Path $FichierMap+".tmp2") { + Remove-Item -Path $FichierMap+".tmp2" -Force + } + } + Else { + Write-host "True" + + (Get-Content $FichierMap+".new") -Replace "BBBBB", "$TPV" | Set-Content $FichierMap + + If (Test-Path -Path $FichierMap+".new") { + Remove-Item -Path $FichierMap+".new" -Force + } + } +} diff --git a/Exemples/README.md b/Exemples/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Exemples/couleur.ps1 b/Exemples/couleur.ps1 new file mode 100644 index 0000000..550c3fc --- /dev/null +++ b/Exemples/couleur.ps1 @@ -0,0 +1,54 @@ +function Write-Color([String[]]$Text, [ConsoleColor[]]$Color = "White", [int]$StartTab = 0, [int] $LinesBefore = 0,[int] $LinesAfter = 0, [string] $LogFile = "", $TimeFormat = "yyyy-MM-dd HH:mm:ss") { + # version 0.2 + # - added logging to file + # version 0.1 + # - first draft + # + # Notes: + # - TimeFormat https://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx + + $DefaultColor = $Color[0] + if ($LinesBefore -ne 0) { for ($i = 0; $i -lt $LinesBefore; $i++) { Write-Host "`n" -NoNewline } } # Add empty line before + if ($StartTab -ne 0) { for ($i = 0; $i -lt $StartTab; $i++) { Write-Host "`t" -NoNewLine } } # Add TABS before text + if ($Color.Count -ge $Text.Count) { + for ($i = 0; $i -lt $Text.Length; $i++) { Write-Host $Text[$i] -ForegroundColor $Color[$i] -NoNewLine } + } else { + for ($i = 0; $i -lt $Color.Length ; $i++) { Write-Host $Text[$i] -ForegroundColor $Color[$i] -NoNewLine } + for ($i = $Color.Length; $i -lt $Text.Length; $i++) { Write-Host $Text[$i] -ForegroundColor $DefaultColor -NoNewLine } + } + Write-Host + if ($LinesAfter -ne 0) { for ($i = 0; $i -lt $LinesAfter; $i++) { Write-Host "`n" } } # Add empty line after + if ($LogFile -ne "") { + $TextToFile = "" + for ($i = 0; $i -lt $Text.Length; $i++) { + $TextToFile += $Text[$i] + } + Write-Output "[$([datetime]::Now.ToString($TimeFormat))]$TextToFile" | Out-File $LogFile -Encoding unicode -Append + } +} + + +Write-Color -Text "Red ", "Green ", "Yellow " -Color Red,Green,Yellow + +Write-Color -Text "This is text in Green ", + "followed by red ", + "and then we have Magenta... ", + "isn't it fun? ", + "Here goes DarkCyan" -Color Green,Red,Magenta,White,DarkCyan + +Write-Color -Text "This is text in Green ", + "followed by red ", + "and then we have Magenta... ", + "isn't it fun? ", + "Here goes DarkCyan" -Color Green,Red,Magenta,White,DarkCyan -StartTab 3 -LinesBefore 1 -LinesAfter 1 + +Write-Color "1. ", "Option 1" -Color Yellow, Green +Write-Color "2. ", "Option 2" -Color Yellow, Green +Write-Color "3. ", "Option 3" -Color Yellow, Green +Write-Color "4. ", "Option 4" -Color Yellow, Green +Write-Color "9. ", "Press 9 to exit" -Color Yellow, Gray -LinesBefore 1 + + + +Write-Color -LinesBefore 2 -Text "This little ","message is ", "written to log ", "file as well." -Color Yellow, White, Green, Red, Red -LogFile "C:\testing.txt" -TimeFormat "yyyy-MM-dd HH:mm:ss" +Write-Color -Text "This can get ","handy if ", "want to display things, and log actions to file ", "at the same time." -Color Yellow, White, Green, Red, Red -LogFile "C:\testing.txt" \ No newline at end of file diff --git a/Exemples/creation graphique - ligne/README.md b/Exemples/creation graphique - ligne/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Exemples/creation graphique - ligne/script-002.ps1 b/Exemples/creation graphique - ligne/script-002.ps1 new file mode 100644 index 0000000..3d0e3fa --- /dev/null +++ b/Exemples/creation graphique - ligne/script-002.ps1 @@ -0,0 +1,55 @@ +[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization") +$scriptpath = Split-Path -parent $MyInvocation.MyCommand.Definition + +# chart object + $chart1 = New-object System.Windows.Forms.DataVisualization.Charting.Chart + $chart1.Width = 1000 + $chart1.Height = 700 + $chart1.BackColor = [System.Drawing.Color]::White + +# title + [void]$chart1.Titles.Add("Titre") + $chart1.Titles[0].Font = "Arial,13pt" + $chart1.Titles[0].Alignment = "topLeft" + +# chart area + $chartarea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea + $chartarea.Name = "ChartArea1" + $chartarea.AxisY.Title = "Durée (en minutes)" + $chartarea.AxisX.Title = "Temps (en jours)" + $chartarea.AxisY.Interval = 100 + $chartarea.AxisX.Interval = 1 + $chart1.ChartAreas.Add($chartarea) + +# legend + $legend = New-Object system.Windows.Forms.DataVisualization.Charting.Legend + $legend.name = "Legend1" + $chart1.Legends.Add($legend) + +# data source + $datasource = Get-Process | sort PrivateMemorySize -Descending | Select-Object -First 15 + +# data series + [void]$chart1.Series.Add("VirtualMem") + $chart1.Series["VirtualMem"].ChartType = "StackedBar" + $chart1.Series["VirtualMem"].BorderWidth = 3 + $chart1.Series["VirtualMem"].IsVisibleInLegend = $true + $chart1.Series["VirtualMem"].chartarea = "ChartArea1" + $chart1.Series["VirtualMem"].Legend = "Legend1" + $chart1.Series["VirtualMem"].color = "#62B5CC" + $datasource | ForEach-Object {$chart1.Series["VirtualMem"].Points.addxy( $_.Name , ($_.VirtualMemorySize / 1000000)) } + +# data series + [void]$chart1.Series.Add("PrivateMem") + $chart1.Series["PrivateMem"].ChartType = "StackedBar" + $chart1.Series["PrivateMem"].IsVisibleInLegend = $true + $chart1.Series["PrivateMem"].BorderWidth = 3 + $chart1.Series["PrivateMem"].chartarea = "ChartArea1" + $chart1.Series["PrivateMem"].Legend = "Legend1" + $chart1.Series["PrivateMem"].color = "#FF0000" + $datasource | ForEach-Object {$chart1.Series["PrivateMem"].Points.addxy( $_.Name , ($_.PrivateMemorySize / 1000000)) } + +# save chart + $chart1.SaveImage("$env:TEMP\SplineArea.png","png") + + ."$env:TEMP\SplineArea.png" \ No newline at end of file diff --git a/Exemples/creation graphique - ligne/script.ps1 b/Exemples/creation graphique - ligne/script.ps1 new file mode 100644 index 0000000..a95a84c --- /dev/null +++ b/Exemples/creation graphique - ligne/script.ps1 @@ -0,0 +1,197 @@ +#Build graph +[Array]$Line1 = 1..12 | ForEach-Object{Get-Random (10..20)} +$p=Get-Random (14..25) +$p%5 +[Array]$Line2 = 1..12 | ForEach-Object{ + If($p%5 -eq 0){ + $p-=(get-random (1..3)) + } + Else{ + $p+=(get-random (1..5)) + } + $p +} +[Array]$Lines = $Line1,$Line2 +$Legend = "Heure cible","Heure de fin" +$Colors = "Blue","Green" + +$file = ([guid]::NewGuid()).Guid +$file = "$env:TEMP\$file.png" +Draw-Graph -Lines $Lines -Legend $Legend -Colors $Colors -Header "Ponctualité flux AX vers DataHUB" -SaveDestination $file +.$file + +Add-Type -AssemblyName System.Windows.Forms,System.Drawing + +Function Get-Color{ + $rbg = @() + + For($i = 0;$i -le 3;$i++){ + Switch($i){ + #Black + 0{ $rbg += 255}#Get-Random -Minimum 128 -Maximum 255 } + #RGB + Default{$rbg += Get-Random -Minimum 0 -Maximum 255} + } + } + Return $rbg +} + +Function Draw-Graph{ +Param( + $Width = 1024, + $Height = 512, + [Array]$Lines, + [Array]$Legend, + [Array]$Colors, + $Header = "Graph", + $SaveDestination, + [Switch]$Preview +) + Begin{} + Process{ + If($Preview){ + [Windows.Forms.Form]$Window = New-Object System.Windows.Forms.Form + + $Window.Width = $Width + $Window.Height = $Height + + $Window.Show() + $Window.Refresh() + + [Drawing.Graphics]$Graph = $Window.CreateGraphics() + } + Else{ + $bmp = New-Object Drawing.Bitmap $Width,$Height + $Graph = [Drawing.Graphics]::FromImage($bmp) + + } + $Graph.InterpolationMode = [Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic + $Graph.SmoothingMode = [Drawing.Drawing2D.SmoothingMode]::AntiAlias + $Graph.TextRenderingHint = [Drawing.Text.TextRenderingHint]::AntiAlias + $Graph.CompositingQuality = [Drawing.Drawing2D.CompositingQuality]::HighQuality + + $Background = [System.Drawing.Color]::Snow + $Graph.Clear($Background) + + $TextBrush = New-Object Drawing.SolidBrush([System.Drawing.Color]::FromArgb(255, 0, 212,252)) + $Font = New-object System.Drawing.Font("arial",12) + $gridPen = [Drawing.Pens]::LightGray + + #Draw Graph area + $DrawArea = New-Object 'object[,]' 2,2 + + # X (Width) + [int]$DrawArea[0,0] = $Width/10 + [int]$DrawArea[0,1] = ($Width-$Width/6) + # Y (Height) + [int]$DrawArea[1,0] = $Height/10 + [int]$DrawArea[1,1] = ($Height-$Height/3) + + # Get X bounds + $xFac = ($Lines | ForEach-Object{$_.Length} | Sort -Descending)[0]-1 + $xInc = ($DrawArea[0,1]-$DrawArea[0,0]+$DrawArea[0,0])/$xFac + + #Get Y bounds + $yMax = ($lines | ForEach-Object{$_} | sort -Descending)[0] + $yFac = ($DrawArea[1,1]-$DrawArea[1,0])/$yMax + + #Draw box + $Graph.DrawRectangle($gridPen, ($DrawArea[0,0]),($DrawArea[1,0]),($DrawArea[0,1]),($DrawArea[1,1])) + + #Draw Header + $Textpoint = New-Object System.Drawing.PointF ((($DrawArea[0,1]-$DrawArea[0,0])/2+$DrawArea[0,0]),($DrawArea[1,0]/2)) + $Graph.DrawString($Header,$Font,$TextBrush,$TextPoint) + + #Draw horizontal lines + $scaleFac = 0.1 + $i = 1 + #Get scale + While($i -ge 1){ + $scaleFac = $scaleFac*10 + $i = $yMax/$scaleFac + } + $scaleFac = $scaleFac/10 + + 0..($yMax/$scaleFac) | ForEach-Object{ + $y = $DrawArea[1,1]-(($_*$scaleFac)*$yFac)+$DrawArea[1,0] + $x1 = $DrawArea[0,0] + $x2 = $DrawArea[0,1]+$DrawArea[0,0] + + $Graph.DrawLine($gridPen,$x1,$y,$x2,$y) + $thisPoint = New-Object System.Drawing.PointF (($x1-10),($y-15)) + $thisSF = New-object System.Drawing.StringFormat + $thisSF.Alignment = "Far" + $Graph.DrawString("$($_*$scaleFac)",$Font,$TextBrush,$thisPoint,$thisSF) + } + + If($lines[0].Count -le 1){ + $tmp = $Lines + Remove-Variable Lines + $Lines = @(0) + $Lines[0] = $tmp + Remove-Variable tmp + $Lines + } + + #DRAW LINE + $l = 0 + Foreach($Line in $Lines){ + If($Colors.Count -gt $l){ + $Pen = New-Object Drawing.Pen($Colors[$l]) + } + Else{ + $rgb = Get-Color + $Pen = New-object Drawing.Pen([System.Drawing.Color]::FromArgb($rgb[0],$rgb[1],$rgb[2],$rgb[3])) + } + $Pen.Width = 2 + + #Initiate/Reset Points + $Points = @() + $Step = 0 + + Foreach($point in $line){ + + $x = ($xInc*$step)+$DrawArea[0,0] + $y = $DrawArea[1,1]-($point*$yFac)+$DrawArea[1,0] + + $Points += New-Object System.Drawing.PointF($x,$y) + $Step++ + } + $Graph.DrawLines($pen,$Points) + + If($Legend.Count -gt $l){ + $thisLegend = $Legend[$l] + If($Colors.Count -gt $l){ + $thisBrush = New-Object Drawing.SolidBrush($Colors[$l]) + } + Else{ + $rgb = Get-Color + $thisBrush = New-Object Drawing.SolidBrush([System.Drawing.Color]::FromArgb($rgb[0],$rgb[1],$rgb[2],$rgb[3])) + } + + $y = $DrawArea[1,1]+$DrawArea[1,0]+20 + $x = $DrawArea[0,0]+100*$l + + $thisPoint = New-Object System.Drawing.PointF ($x,$y) + $thisFont = New-Object System.Drawing.Font("arial",12,[System.Drawing.FontStyle]::Bold) + $Graph.DrawString($thisLegend,$thisFont,$thisBrush,$thisPoint) + } + $l++ + } + + } + End{ + + If($Preview){ + Start-Sleep 10 + } + Else{ + $bmp.save($SaveDestination) + } + + Try{$Graph.Dispose()}Catch{} + Try{$bmp.Dispose()}Catch{} + Try{$Window.Close()}Catch{} + Try{$Window.Dispose()}Catch{} + } +} \ No newline at end of file diff --git a/Exemples/création-procédure.ps1 b/Exemples/création-procédure.ps1 new file mode 100644 index 0000000..29521ff --- /dev/null +++ b/Exemples/création-procédure.ps1 @@ -0,0 +1,192 @@ + +# Fonction pour créer une carte pôur NAGVIS +# +# Recoit en parametre : +# - l'emplacement du fichier source +# - l'emplacement du fichier de destination +# - le texte à rajouter +# - la position du texte dans l'image +Function AjoutTextePourImageMap { + + [CmdletBinding()] + PARAM ( + [Parameter(Mandatory=$true)][String] $CheminSource, + [Parameter(Mandatory=$true)][String] $CheminDestination, + [Parameter(Mandatory=$true)][String] $Texte, + [Parameter(Mandatory=$true)][String] $Position, + [Parameter()][String] $Description = $null + ) + + Write-Verbose "Load System.Drawing" + [Reflection.Assembly]::LoadWithPartialName("System.Drawing") | Out-Null + + Write-Verbose "Get the image from $CheminSource" + $srcImg = [System.Drawing.Image]::FromFile($CheminSource) + + Write-Verbose "Create a bitmap as $destPath" + $outputIImg = new-object System.Drawing.Bitmap([int]($srcImg.width)),([int]($srcImg.height)) + + Write-Verbose "Intialize Graphics" + $Image = [System.Drawing.Graphics]::FromImage($outputIImg) + $Image.SmoothingMode = "AntiAlias" + + $Rectangle = New-Object Drawing.Rectangle 0, 0, $srcImg.Width, $srcImg.Height + $Image.DrawImage($srcImg, $Rectangle, 0, 0, $srcImg.Width, $srcImg.Height, ([Drawing.GraphicsUnit]::Pixel)) + + Write-Verbose "Draw title: $Title" + $Font = new-object System.Drawing.Font("Arial", 14, "Bold","Pixel") + + #get font size + $font_size = [System.Windows.Forms.TextRenderer]::MeasureText($Texte, $Font) + $font_size_width = $font_size.Width + $font_size_height = $font_size.Height + + $rect = [System.Drawing.RectangleF]::FromLTRB(0, 0, $srcImg.Width, $srcImg.Height) + + If ($Position -eq "nom") { + #$text_in_middle_top_offset = $srcImg.Height / 2 + $text_in_middle_top_offset = 180 + $text_in_middle_left_offset = 155 + + #styling font + $Brush = New-Object Drawing.SolidBrush([System.Drawing.Color]::FromArgb(255, 0, 0, 0)) + + #lets draw font + $Image.DrawString($Texte, $Font, $Brush, $text_in_middle_top_offset, $text_in_middle_left_offset) + + } + ElseIf ($Position -eq "adresse") { + $text_in_middle_top_offset = 180 + $text_in_middle_left_offset = 205 + + #styling font + $Brush = New-Object Drawing.SolidBrush([System.Drawing.Color]::FromArgb(255, 0, 0, 0)) + + #lets draw font + $Image.DrawString($Texte, $Font, $Brush, $text_in_middle_top_offset, $text_in_middle_left_offset) + } + ElseIf ($Position -eq "password") { + $text_in_middle_top_offset = 180 + $text_in_middle_left_offset1 = 257 + $text_in_middle_left_offset2 = 280 + + #styling font + $Brush = New-Object Drawing.SolidBrush([System.Drawing.Color]::FromArgb(255, 0, 0, 0)) + + #lets draw font + $Image.DrawString($Texte, $Font, $Brush, $text_in_middle_top_offset, $text_in_middle_left_offset1) + $Image.DrawString($Texte, $Font, $Brush, $text_in_middle_top_offset, $text_in_middle_left_offset2) + } + Else { + $format = [System.Drawing.StringFormat]::GenericDefault + $format.Alignment = [System.Drawing.StringAlignment]::Center + $format.LineAlignment = [System.Drawing.StringAlignment]::Center + } + + Write-Verbose "Save and close the files" + $outputIImg.save($CheminDestination, [System.Drawing.Imaging.ImageFormat]::jpeg) + $outputIImg.Dispose() + $srcImg.Dispose() +} + + +$Nom = "DUPONT" +$Prenom = "Flavien" +$CRPCEN = "59159" +$SamAccountName = "$Prenom.$Nom@no$CRPCEN.mailnot.fr" + +Add-Type -Path “$PSScriptRoot\itextsharp.dll” +Import-Module "$PSScriptRoot\PDF.psm1" + +AjoutTextePourImageMap -CheminSource "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001.jpg" -CheminDestination "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001-temp.jpg" -Texte "$Prenom.$Nom" -Position "nom" +AjoutTextePourImageMap -CheminSource "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001-temp.jpg" -CheminDestination "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001-temp-002.jpg" -Texte "$SamAccountName" -Position "adresse" +AjoutTextePourImageMap -CheminSource "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001-temp-002.jpg" -CheminDestination "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001-temp-003.jpg" -Texte "*******************" -Position "password" + +$pdf = New-Object iTextSharp.text.Document +Create-PDF -Document $pdf -File "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\exemple-0001.pdf" -TopMargin 20 -BottomMargin 20 -LeftMargin 20 -RightMargin 20 -Author "Patrick" + +$pdf.Open() + +Add-Text -Document $pdf -Text "1" +Add-Text -Document $pdf -Text "2" +Add-Text -Document $pdf -Text "3" +Add-Text -Document $pdf -Text "4" +Add-Text -Document $pdf -Text "5" +Add-Text -Document $pdf -Text "6" +Add-Text -Document $pdf -Text "7" +Add-Text -Document $pdf -Text "8" +Add-Text -Document $pdf -Text "9" +Add-Text -Document $pdf -Text "10" +Add-Text -Document $pdf -Text "11" +Add-Text -Document $pdf -Text "12" +Add-Text -Document $pdf -Text "13" +Add-Text -Document $pdf -Text "14" +Add-Text -Document $pdf -Text "15" +Add-Text -Document $pdf -Text "16" +Add-Text -Document $pdf -Text "17" +Add-Text -Document $pdf -Text "18" +Add-Text -Document $pdf -Text "19" +Add-Text -Document $pdf -Text "20" +Add-Text -Document $pdf -Text "21" +Add-Text -Document $pdf -Text "22" +Add-Text -Document $pdf -Text "23" +Add-Text -Document $pdf -Text "24" +Add-Text -Document $pdf -Text "25" +Add-Text -Document $pdf -Text "26" +Add-Text -Document $pdf -Text "27" +Add-Text -Document $pdf -Text "28" +Add-Text -Document $pdf -Text "29" +Add-Text -Document $pdf -Text "30" +Add-Text -Document $pdf -Text "31" +Add-Text -Document $pdf -Text "32" +Add-Text -Document $pdf -Text "33" +Add-Text -Document $pdf -Text "34" +Add-Text -Document $pdf -Text "35" +Add-Text -Document $pdf -Text "36" +Add-Text -Document $pdf -Text "37" +Add-Text -Document $pdf -Text "38" +Add-Text -Document $pdf -Text "39" +Add-Text -Document $pdf -Text "40" + + +Add-Title -Document $pdf -Text "Configuration de la messagerie sur Outlook" -Color "magenta" -Centered + +Add-Text -Document $pdf -Text "" +Add-Text -Document $pdf -Text "Nous utilisons Outlook 2010" +Add-Text -Document $pdf -Text "" +Add-Text -Document $pdf -Text "Commencer par lancer l'application Outlook avec l'aide d'un des icones ci-dessous" + +Add-Image -Document $pdf -File "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0003.jpg" + +Add-Image -Document $pdf -File "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0004.jpg" + + + +Add-Image -Document $pdf -File "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0002.jpg" + +Add-Text -Document $pdf -Text "" +Add-Text -Document $pdf -Text "Dans l'application" + +Add-Text -Document $pdf -Text "" +Add-Text -Document $pdf -Text "Nous arrivons dans la fenêtre ci-dessous" + +Add-Image -Document $pdf -File "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001.jpg" + +Add-Text -Document $pdf -Text "Nous devons remplir les champs vide avec les informaions contenu dans le tableau" +Add-Table -Document $pdf -Dataset @("Nom", "$Prenom.$Nom", "Adresse", "$SamAccountName", "Mot de passe", "String", "Confirmer le mot de passe", "String") -Cols 2 -Centered + +Add-Text -Document $pdf -Text "Nous obtenons ceci" +Add-Image -Document $pdf -File "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001-temp-003.jpg" + +Add-Text -Document $pdf -Text "Nous pouvons cliquer sur le bouton" +Add-Image -Document $pdf -File "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0005.jpg" + +Add-Title -Document $pdf -Text "Configuration de la messagerie sur Iphone" -Color "magenta" -Centered + +Add-Title -Document $pdf -Text "Configuration de la messagerie sur Androïd" -Color "magenta" -Centered + +$pdf.Close() + +Remove-Item -Path "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001-temp.jpg" -Force +Remove-Item -Path "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001-temp-002.jpg" -Force +Remove-Item -Path "C:\Users\hcornet\Downloads\PowerShell-PDF-master\PowerShell-PDF-master\Outlook-0001-temp-003.jpg" -Force \ No newline at end of file diff --git a/Exemples/etape1.ps1 b/Exemples/etape1.ps1 new file mode 100644 index 0000000..b2b7a13 --- /dev/null +++ b/Exemples/etape1.ps1 @@ -0,0 +1,178 @@ + + + #Creation de la page HTML + +$hostname = "Serveur 1"; +$date = Date; + +[System.Collections.ArrayList] $lignes = @() + + +$lignes += 'Installation ServerView RAID;OK/KO' +$lignes += 'Installation MegaRAID;OK/KO' +$lignes += 'Installation AD-Domain-Services;OK/KO' +$lignes += 'Installation DHCP;OK/KO' +$lignes += 'Installation Hyper-V;OK/KO' +$lignes += 'Installation SNMP;OK/KO' + +$VersionWindows = "Windows Server 2016" +$NumeroDeSerie = "QSXRTFYJ5YIFL48" +$CPU = "Celeron 2 Duo" +$RAM = "256MB" +$NombreDeDisque = "1" +$EtatDisque = "OK" +$EtatRaid = "OK" + + + + +$HTML = @" + + + + + + + + + + +
$hostname
+

$date

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Version de Windows$VersionWindows
Date$date
Numéro de série$NumeroDeSerie
Processeur$CPU
RAM$RAM
Nombre de disque$NombreDeDisque
Etat disque$EtatDisque
Etat Raid$EtatRaid
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Disque C
Disque D
Disque E
Disque F
+ +



+"@ + + + + + +$table = @" +

ETAPE 1

+ + + + + +"@ + + + + +ForEach($elem in $lignes){ + + $ligne = $elem.Split(';') + + $ligne0=$ligne[0] + $ligne1=$ligne[1] + + $table += @" + + + + +"@ + +} + +$table += '
Status
$ligne0$ligne1
' + +$HTML += $table + + + +$HTML | Out-file "C:\Users\arobert\Desktop\Powershell etapes en HTML\index1.html" \ No newline at end of file diff --git a/Exemples/get_remoteapps_from_appserver.ps1 b/Exemples/get_remoteapps_from_appserver.ps1 new file mode 100644 index 0000000..1c47887 --- /dev/null +++ b/Exemples/get_remoteapps_from_appserver.ps1 @@ -0,0 +1,78 @@ +#Detect os version script is executed on +$osversionString = (Get-WmiObject -class Win32_OperatingSystem).Caption +If ($osversionString.Contains('2008')){ $osVersion = '2008'} +Elseif ($osversionString.Contains('2012')){ $osversion = '2012'} +Elseif ($osversionString.Contains('2016')){ $osversion = '2016'} +else { $Host.SetShouldExit(1) } + +#function to safely define directory of the script +function Get-ScriptDirectory +{ + $Invocation = (Get-Variable MyInvocation -Scope 1).Value; + if($Invocation.PSScriptRoot) + { + $Invocation.PSScriptRoot; + } + Elseif($Invocation.MyCommand.Path) + { + Split-Path $Invocation.MyCommand.Path + } + else + { + $Invocation.InvocationName.Substring(0,$Invocation.InvocationName.LastIndexOf("\")); + } +} + +# Create Folder to store the csv +$scriptDir = Get-ScriptDirectory +$path = "$($scriptdir)\Awingu_Apps" +if (Test-Path $path){ + Remove-item $path -recurse +} +New-Item $path -type directory +#Fetch all info to populate the csv +$tabName = "remoteApps" + +#Create Table object +$table = New-Object system.Data.DataTable "$tabName" + +#Define Columns +$col1 = New-Object system.Data.DataColumn command,([string]) +$col2 = New-Object system.Data.DataColumn name,([string]) +$col3 = New-Object system.Data.DataColumn icon,([string]) + +#Add the Columns +$table.columns.add($col1) +$table.columns.add($col2) +$table.columns.add($col3) + +if ($osversion -eq '2008') +{ + Import-Module RemoteDesktopServices -verbose + cd RDS: + $remoteapps = Get-ChildItem RemoteApp\RemoteAppPrograms + ForEach ($remoteapp in $remoteapps) { + #Create a row + $row = $table.NewRow() + $row.command = $remoteapp.Name + $row.name = (Get-Item RemoteApp\RemoteAppPrograms\$remoteapp\DisplayName).CurrentValue + $row.icon = (Get-Item RemoteApp\RemoteAppPrograms\$remoteapp\Iconcontents).CurrentValue + $table.Rows.Add($row) + } +} +Elseif ($osversion -eq '2012' -OR $osversion -eq '2016') +{ + $remoteapps = get-rdsessioncollection | get-rdremoteapp + ForEach ($remoteapp in $remoteapps) { + #Create a row + $row = $table.NewRow() + $row.command = $remoteapp.ALIAS + $row.name = $remoteapp.DisplayName + $row.icon = $remoteapp.IconContents -join ',' + $table.Rows.Add($row) + } +} + + +#Dump the table into the csv +$tabCsv = $table | export-csv "$path\remoteapps.csv" -noType \ No newline at end of file diff --git a/Exemples/test.ps1 b/Exemples/test.ps1 new file mode 100644 index 0000000..c04f3a5 --- /dev/null +++ b/Exemples/test.ps1 @@ -0,0 +1 @@ +Get-ADReplAccount -All -Server $env:ComputerName -NamingContext $(Get-ADDomain | select -ExpandProperty DistinguishedName) | Test-PasswordQuality -IncludeDisabledAccounts \ No newline at end of file diff --git a/Exemples/tirage euromillion/script-001.ps1 b/Exemples/tirage euromillion/script-001.ps1 new file mode 100644 index 0000000..f7e4c89 --- /dev/null +++ b/Exemples/tirage euromillion/script-001.ps1 @@ -0,0 +1,22 @@ +cls + +$Array = @(("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50"),("00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00","00")) + +For ($j=0;$j -lt 2500;$j++) { + $Number = Get-Random @('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50') -Count 1 + $Star = Get-Random @('1','2','3','4','5','6','7','8','9','10','11','12') -Count 1 + + For ($i=1;$i -lt 50;$i++) { + If ($i -eq $Number) { + $Array[1][$i] = [int]$Array[1][$i] + 1 + + If ($Array[1][$i] -lt 10) { + $Array[1][$i] = "0" + $Array[1][$i] + } + } + } +} +Write-Host $Array[0] +Write-Host +Write-Host $Array[1] +Write-Host \ No newline at end of file diff --git a/GLPI/Extraction.ps1 b/GLPI/Extraction.ps1 new file mode 100644 index 0000000..1cc5d26 --- /dev/null +++ b/GLPI/Extraction.ps1 @@ -0,0 +1,61 @@ +Import-Module GlpiTools + +Set-GlpiToolsConfig -PathToGlpi "https://glpi.fr.dgs.group/apirest.php" -AppToken "A37784iAbavHXtNKOome2zhBv1bKW7ycDSkJTtk8" -UserToken "xoRND6NwIcQ8qlEz1MOJCGOhHsOlf7DDmMRQETWu" + +$ListeTicket = Get-GlpiToolsTickets -TicketName "[OPCON]" + +$Extraction = @() +$percentComplete = $null +$Counter = $null +$listeTechniciens = $null + +ForEach($Ticket in $ListeTicket) { + + $percentComplete = $(($Counter / $ListeTicket.Count) * 100 ) + + $Progress = @{ + Activity = "Getting folder information for '$($Ticket.Titre)'." + Status = "Processing $Counter of $($ListeTicket.Count)" + PercentComplete = $([math]::Round($percentComplete, 2)) + } + + Write-Progress @Progress -Id 1 + + If ($Ticket.Statut -ne "6") { + If ($Ticket.Technicien) { + $Technicien = Get-GlpiToolsUsers -UserId $Ticket.Technicien + + If ($Technicien.Count -le "1") { + $Extraction += [pscustomobject]@{ + ID = $Ticket.ID + Titre = $Ticket.Titre + Entité = $Ticket.Entité + Demandeur = $Ticket.Demandeur + Status = $Ticket.Statut + Date_ouverture = $Ticket."Date d'ouverture" + Groupe_techniciens = $Ticket."Groupe de techniciens" + Technicien = $Technicien.realname+" "+$Technicien.firstname + } + } + Else { + Foreach ($tmp in $Technicien) { + $listeTechniciens += $tmp.realname + " " + $tmp.firstname + "`n" + } + $Extraction += [pscustomobject]@{ + ID = $Ticket.ID + Titre = $Ticket.Titre + Entité = $Ticket.Entité + Demandeur = $Ticket.Demandeur + Status = $Ticket.Statut + Date_ouverture = $Ticket."Date d'ouverture" + Groupe_techniciens = $Ticket."Groupe de techniciens" + Technicien = $listeTechniciens + } + } + } + } + $Counter++ + $listeTechniciens = $null +} + +$Extraction | Export-CSV -Path "C:\Ntico\OPCON_BIRT\ReportEngine\rapports\FichierIn\ExtractionGlpi-V2.0.csv" -Force -Encoding UTF8 -NoTypeInformation \ No newline at end of file diff --git a/General/Cheat-Sheet-1.ps1 b/General/Cheat-Sheet-1.ps1 new file mode 100644 index 0000000..96c371f --- /dev/null +++ b/General/Cheat-Sheet-1.ps1 @@ -0,0 +1,197 @@ +Get-Command # Retrieves a list of all the commands available to PowerShell + # (native binaries in $env:PATH + cmdlets / functions from PowerShell modules) +Get-Command -Module Microsoft* # Retrieves a list of all the PowerShell commands exported from modules named Microsoft* +Get-Command -Name *item # Retrieves a list of all commands (native binaries + PowerShell commands) ending in "item" + +Get-Help # Get all help topics +Get-Help -Name about_Variables # Get help for a specific about_* topic (aka. man page) +Get-Help -Name Get-Command # Get help for a specific PowerShell function +Get-Help -Name Get-Command -Parameter Module # Get help for a specific parameter on a specific command + + +################################################### +# Operators +################################################### + +$a = 2 # Basic variable assignment operator +$a += 1 # Incremental assignment operator +$a -= 1 # Decrement assignment operator + +$a -eq 0 # Equality comparison operator +$a -ne 5 # Not-equal comparison operator +$a -gt 2 # Greater than comparison operator +$a -lt 3 # Less than comparison operator + +$FirstName = 'Trevor' +$FirstName -like 'T*' # Perform string comparison using the -like operator, which supports the wildcard (*) character. Returns $true + +$BaconIsYummy = $true +$FoodToEat = $BaconIsYummy ? 'bacon' : 'beets' # Sets the $FoodToEat variable to 'bacon' using the ternary operator + +################################################### +# Regular Expressions +################################################### + +'Trevor' -match '^T\w*' # Perform a regular expression match against a string value. # Returns $true and populates $matches variable +$matches[0] # Returns 'Trevor', based on the above match + +@('Trevor', 'Billy', 'Bobby') -match '^B' # Perform a regular expression match against an array of string values. Returns Billy, Bobby + +$regex = [regex]'(\w{3,8})' +$regex.Matches('Trevor Bobby Dillon Joe Jacob').Value # Find multiple matches against a singleton string value. + +################################################### +# Flow Control +################################################### + +if (1 -eq 1) { } # Do something if 1 is equal to 1 + +do { 'hi' } while ($false) # Loop while a condition is true (always executes at least once) + +while ($false) { 'hi' } # While loops are not guaranteed to run at least once +while ($true) { } # Do something indefinitely +while ($true) { if (1 -eq 1) { break } } # Break out of an infinite while loop conditionally + +for ($i = 0; $i -le 10; $i++) { Write-Host $i } # Iterate using a for..loop +foreach ($item in (Get-Process)) { } # Iterate over items in an array + +switch ('test') { 'test' { 'matched'; break } } # Use the switch statement to perform actions based on conditions. Returns string 'matched' +switch -regex (@('Trevor', 'Daniel', 'Bobby')) { # Use the switch statement with regular expressions to match inputs + 'o' { $PSItem; break } # NOTE: $PSItem or $_ refers to the "current" item being matched in the array +} +switch -regex (@('Trevor', 'Daniel', 'Bobby')) { # Switch statement omitting the break statement. Inputs can be matched multiple times, in this scenario. + 'e' { $PSItem } + 'r' { $PSItem } +} + +################################################### +# Variables +################################################### + + +$a = 0 # Initialize a variable +[int] $a = 'Trevor' # Initialize a variable, with the specified type (throws an exception) +[string] $a = 'Trevor' # Initialize a variable, with the specified type (doesn't throw an exception) + +Get-Command -Name *varia* # Get a list of commands related to variable management + +Get-Variable # Get an array of objects, representing the variables in the current and parent scopes +Get-Variable | ? { $PSItem.Options -contains 'constant' } # Get variables with the "Constant" option set +Get-Variable | ? { $PSItem.Options -contains 'readonly' } # Get variables with the "ReadOnly" option set + +New-Variable -Name FirstName -Value Trevor +New-Variable FirstName -Value Trevor -Option Constant # Create a constant variable, that can only be removed by restarting PowerShell +New-Variable FirstName -Value Trevor -Option ReadOnly # Create a variable that can only be removed by specifying the -Force parameter on Remove-Variable + +Remove-Variable -Name firstname # Remove a variable, with the specified name +Remove-Variable -Name firstname -Force # Remove a variable, with the specified name, that has the "ReadOnly" option set + +################################################### +# Functions +################################################### + +function add ($a, $b) { $a + $b } # A basic PowerShell function + +function Do-Something { # A PowerShell Advanced Function, with all three blocks declared: BEGIN, PROCESS, END + [CmdletBinding]()] + param () + begin { } + process { } + end { } +} + +################################################### +# Working with Modules +################################################### + +Get-Command -Name *module* -Module mic*core # Which commands can I use to work with modules? + +Get-Module -ListAvailable # Show me all of the modules installed on my system (controlled by $env:PSModulePath) +Get-Module # Show me all of the modules imported into the current session + +$PSModuleAutoLoadingPreference = 0 # Disable auto-loading of installed PowerShell modules, when a command is invoked + +Import-Module -Name NameIT # Explicitly import a module, from the specified filesystem path or name (must be present in $env:PSModulePath) +Remove-Module -Name NameIT # Remove a module from the scope of the current PowerShell session + +New-ModuleManifest # Helper function to create a new module manifest. You can create it by hand instead. + +New-Module -Name trevor -ScriptBlock { # Create an in-memory PowerShell module (advanced users) + function Add($a,$b) { $a + $b } } + +New-Module -Name trevor -ScriptBlock { # Create an in-memory PowerShell module, and make it visible to Get-Module (advanced users) + function Add($a,$b) { $a + $b } } | Import-Module + +################################################### +# Module Management +################################################### + +Get-Command -Module PowerShellGet # Explore commands to manage PowerShell modules + +Find-Module -Tag cloud # Find modules in the PowerShell Gallery with a "cloud" tag +Find-Module -Name ps* # Find modules in the PowerShell Gallery whose name starts with "PS" + +Install-Module -Name NameIT -Scope CurrentUser -Force # Install a module to your personal directory (non-admin) +Install-Module -Name NameIT -Force # Install a module to your personal directory (admin / root) +Install-Module -Name NameIT -RequiredVersion 1.9.0 # Install a specific version of a module + +Uninstall-Module -Name NameIT # Uninstall module called "NameIT", only if it was installed via Install-Module + +Register-PSRepository -Name -SourceLocation # Configure a private PowerShell module registry +Unregister-PSRepository -Name # Deregister a PowerShell Repository + + +################################################### +# Filesystem +################################################### + +New-Item -Path c:\test -ItemType Directory # Create a directory +mkdir c:\test2 # Create a directory (short-hand) + +New-Item -Path c:\test\myrecipes.txt # Create an empty file +Set-Content -Path c:\test.txt -Value '' # Create an empty file +[System.IO.File]::WriteAllText('testing.txt', '') # Create an empty file using .NET Base Class Library + +Remove-Item -Path testing.txt # Delete a file +[System.IO.File]::Delete('testing.txt') # Delete a file using .NET Base Class Library + +################################################### +# Hashtables (Dictionary) +################################################### + +$Person = @{ + FirstName = 'Trevor' + LastName = 'Sullivan' + Likes = @( + 'Bacon', + 'Beer', + 'Software' + ) +} # Create a PowerShell HashTable + +$Person.FirstName # Retrieve an item from a HashTable +$Person.Likes[-1] # Returns the last item in the "Likes" array, in the $Person HashTable (software) +$Person.Age = 50 # Add a new property to a HashTable + +################################################### +# Windows Management Instrumentation (WMI) (Windows only) +################################################### + +Get-CimInstance -ClassName Win32_BIOS # Retrieve BIOS information +Get-CimInstance -ClassName Win32_DiskDrive # Retrieve information about locally connected physical disk devices +Get-CimInstance -ClassName Win32_PhysicalMemory # Retrieve information about install physical memory (RAM) +Get-CimInstance -ClassName Win32_NetworkAdapter # Retrieve information about installed network adapters (physical + virtual) +Get-CimInstance -ClassName Win32_VideoController # Retrieve information about installed graphics / video card (GPU) + +Get-CimClass -Namespace root\cimv2 # Explore the various WMI classes available in the root\cimv2 namespace +Get-CimInstance -Namespace root -ClassName __NAMESPACE # Explore the child WMI namespaces underneath the root\cimv2 namespace + + +################################################### +# Asynchronous Event Registration +################################################### + +$Watcher = [System.IO.FileSystemWatcher]::new('c:\tmp') +Register-ObjectEvent -InputObject $Watcher -EventName Created -Action { + Write-Host -Object 'New file created!!!' +} # Register for filesystem events diff --git a/General/Get-RandomPassword.ps1 b/General/Get-RandomPassword.ps1 new file mode 100644 index 0000000..c091942 --- /dev/null +++ b/General/Get-RandomPassword.ps1 @@ -0,0 +1,20 @@ +function Get-RandomPassword { + [CmdletBinding()] + param( + [int] $LettersLowerCase = 4, + [int] $LettersHigherCase = 2, + [int] $Numbers = 1, + [int] $SpecialChars = 0, + [int] $SpecialCharsLimited = 1 + ) + $Password = @( + Get-RandomCharacters -length $LettersLowerCase -characters 'abcdefghiklmnoprstuvwxyz' + Get-RandomCharacters -length $LettersHigherCase -characters 'ABCDEFGHKLMNOPRSTUVWXYZ' + Get-RandomCharacters -length $Numbers -characters '1234567890' + Get-RandomCharacters -length $SpecialChars -characters '!$%()=?{@#' + Get-RandomCharacters -length $SpecialCharsLimited -characters '!$#' + ) + $StringPassword = $Password -join '' + $StringPassword = ($StringPassword.ToCharArray() | Get-Random -Count $StringPassword.Length) -join '' + return $StringPassword +} \ No newline at end of file diff --git a/General/README.md b/General/README.md new file mode 100644 index 0000000..23d342b --- /dev/null +++ b/General/README.md @@ -0,0 +1 @@ +# General diff --git a/General/Send-Mail.ps1 b/General/Send-Mail.ps1 new file mode 100644 index 0000000..f937b01 --- /dev/null +++ b/General/Send-Mail.ps1 @@ -0,0 +1,31 @@ +# Get the credential +$creduser = Read-Host "Sender Email" +$credpassword = Read-Host "Sender Password" + +[securestring]$secStringPassword = ConvertTo-SecureString $credpassword -AsPlainText -Force +[pscredential]$credObject = New-Object System.Management.Automation.PSCredential ($creduser, $secStringPassword) + +$Users = Import-Csv -Path "Send-Mail.csv" -Delimiter ";" -Encoding UTF8 + +foreach ($User in $Users) { + + ## Define the Send-MailMessage parameters + $mailParams = @{ + SmtpServer = 'smtp.office365.com' + Port = '587' + UseSSL = $true + Credential = $credObject + From = $creduser + To = $($User.UserMail) + Subject = "Mail from PowerShell" + Body = "Hello,

+ Your email is $($User.UserMail)
" + DeliveryNotificationOption = 'OnFailure' + BodyAsHtml = $true + Encoding = [System.Text.Encoding]::UTF8 + } + + ## Send the message + Send-MailMessage @mailParams + +} \ No newline at end of file diff --git a/General/Templates/Send-Mail.csv b/General/Templates/Send-Mail.csv new file mode 100644 index 0000000..34c9881 --- /dev/null +++ b/General/Templates/Send-Mail.csv @@ -0,0 +1,4 @@ +UserMail +user1@domain.com +user2@domain.com +user3@domain.com diff --git a/Hyper-V/Compact-VHD.ps1 b/Hyper-V/Compact-VHD.ps1 new file mode 100644 index 0000000..614e40b --- /dev/null +++ b/Hyper-V/Compact-VHD.ps1 @@ -0,0 +1,26 @@ +# Importer le moudule Hyper-V +Import-Module -Name Hyper-V + +# Chemin du VHD et mode de compactage +param( + [Parameter(Mandatory = $true, ValueFromPipeline = $true)][String]$Path, + [Parameter()][Microsoft.Vhd.PowerShell.VhdCompactMode]$Mode = [Microsoft.Vhd.PowerShell.VhdCompactMode]::Full +) + +# Vérifier le fichier +try { + $Path = (Resolve-Path -Path $Path -ErrorAction Stop).Path + if ($Path -notmatch '\.a?vhdx?$') { throw } +} +catch { + throw('{0} is not a valid VHDX file.' -f $Path) +} + +# Monter le VHD +Mount-VHD -Path $Path -ReadOnly -ErrorAction Stop + +# Compacter le VHD +Optimize-VHD -Path $Path -Mode $Mode -ErrorAction Continue + +# Démonter le VHD +Dismount-VHD -Path $Path diff --git a/Hyper-V/Create-VM.ps1 b/Hyper-V/Create-VM.ps1 new file mode 100644 index 0000000..8a265cd --- /dev/null +++ b/Hyper-V/Create-VM.ps1 @@ -0,0 +1,108 @@ +Import-Module Hyper-V + +$HypervConfig = Get-VMHost | Select-Object VirtualHardDiskPath, VirtualMachinePath + +Write-Host "" +Write-Host "Emlacement des VM: " $HypervConfig.VirtualMachinePath +Write-Host "Emplacement des VHD: " $HypervConfig.VirtualHardDiskPath +Write-Host "" + +$NewConfig = Read-Host "Voulez-vous changer les emplacements ? (o pour oui, non par défaut) " + +if ($NewConfig -eq "o") { + + $HvVmPath = Read-Host "Entre un chemin pour les VM (a pour annuler)" + + if (Test-Path $HvVmPath -ErrorAction SilentlyContinue) { + Set-VMHost -VirtualMachinePath $HvVmPath + } + + $HvVhdPath = Read-Host "Entre un chemin pour les VHD (a pour annuler)" + + if (Test-Path $HvVhdPath -ErrorAction SilentlyContinue) { + Set-VMHost -VirtualHardDiskPath $HvVhdPath + } + + $HypervConfig = Get-VMHost | Select-Object VirtualHardDiskPath, VirtualMachinePath + + Write-Host "" + Write-Host "Emlacement des VM: " $HypervConfig.VirtualMachinePath + Write-Host "Emplacement des VHD: " $HypervConfig.VirtualHardDiskPath + Write-Host "" + +} + +$Template = Read-Host "Avez-vous un template VHD pour votre VM ? (o pour oui, non par défaut) " + +if ($Template -eq "o") { + do { + + $TemplatePath = Read-Host "Entre un chemin pour le VHD (a pour annuler)" + + if ($TemplatePath -eq "a") { + break + } + + } until (Test-Path $TemplatePath -ErrorAction SilentlyContinue) + +} + +$VMName = Read-Host "Entrez un Nom pour votre VM" +$VMSwitch = Read-Host "Entrez un le nom du swith pour votre VM" +New-Item -Path (Join-Path $HypervConfig.VirtualMachinePath ($VMName + "\Virtual Hard Disks")) -ItemType Directory -Force +$VhdPath = (Join-Path $HypervConfig.VirtualMachinePath ($VMName + "\Virtual Hard Disks")) + +if (!(Test-Path $TemplatePath -ErrorAction SilentlyContinue)) { + $VhdSize = Read-Host "Entrez la capacité pour le VHDx (avec Gb à la fin)" + $VhdFile = $VMName + ".vhdx" + New-VM -Name $VMName -Generation 2 -SwitchName $VMSwitch -Path $HypervConfig.VirtualMachinePath -NewVHDPath (Join-Path $VhdPath $VhdFile) -NewVHDSizeBytes ($VhdSize) +} +elseif (Test-Path $TemplatePath -ErrorAction SilentlyContinue) { + Start-BitsTransfer -Source $TemplatePath -Destination $VhdPath + $VhdFile = Split-Path $TemplatePath -leaf + New-VM -Name $VMName -Generation 2 -SwitchName $VMSwitch -Path $HypervConfig.VirtualMachinePath -VHDPath (Join-Path $VhdPath $VhdFile) +} +else { + New-VM -Name $VMName -Generation 2 -SwitchName $VMSwitch -Path $HypervConfig.VirtualMachinePath -NoVHD +} + +$VMProc = Read-Host "Entrez le nombre de processeurs pour votre VM" +$VMRam = Read-Host "Entrez la RAM pour votre VM (avec Gb à la fin) " + +Set-VM -Name $VMName -CheckpointType Production -AutomaticCheckpointsEnabled $false -AutomaticStartAction Start -AutomaticStopAction Shutdown -ProcessorCount $VMProc -MemoryStartupBytes ($VMRam) +Set-VMFirmware $VMName -EnableSecureBoot On -BootOrder ((Get-VMFirmware $VMName).BootOrder[1]), ((Get-VMFirmware $VMName).BootOrder[0]) + +Enable-VMIntegrationService -VMName $VMName -Name "Guest Service Interface" + +$VMDC = Read-Host "Est-ce que votre VM est un controlleur de domaine ? (o pour oui, non par défaut) " +if ($VMDC -eq "o") { + Disable-VMIntegrationService -VMName $VMName -Name "Time Synchronization" +} + +$VMHdd = Read-Host "Est-ce que vous souhaitez ajouter un autre VHD à la VM ? (o pour oui, non par défaut) " +if ($VMHdd -eq "o") { + + $VhdName = Read-Host "Entrez un nom pour le VHDx (avec .vhdx)" + $VhdSize = Read-Host "Entrez la capacité pour le VHDx (en Gb)" + + New-VHD -Path (Join-Path $VhdPath $VhdName) -SizeBytes $VhdSize -Dynamic + + Add-VMHardDiskDrive -VMName $VMName -Path (Join-Path $VhdPath $VhdName) +} + +$VMOs = Read-Host "Quel est l'OS de votre VM (l pour linux, Windows par défaut) " + +switch ($VMOs) { + "l" { + + } + Default { + + } +} + +$StartVM = Read-Host "Voulez-Vous démarrer la VM ? (o pour oui, non par défaut) " + +if ($StartVM -eq "o") { + Start-VM $VMName +} \ No newline at end of file diff --git a/Hyper-V/README.md b/Hyper-V/README.md new file mode 100644 index 0000000..23fe8c6 --- /dev/null +++ b/Hyper-V/README.md @@ -0,0 +1 @@ +# Hyper-V diff --git a/Kemp/KEMP.ps1 b/Kemp/KEMP.ps1 new file mode 100644 index 0000000..cb0efa4 --- /dev/null +++ b/Kemp/KEMP.ps1 @@ -0,0 +1,22 @@ +Initialize-LmConnectionParameters -Address 10.101.50.1 -LBPort 443 -Credential bal -Verbose + +# Set variables +$ContentMatchingRuleName = "$CRPCEN_Authentic" +$ContentMatchingRulePattern = "/^\/$CRPCEN-Authentic.*/" +$VirtualServiceName = "10.80.20.2" +$VirtualServicePort = 443 +$RealServerName = "xx-P-IIS-011.xx.net" +$RealServerPort = 80 +$CheckUrl = "xx.xx.com" + +# Create Content Rule +New-AdcContentRule -RuleName $ContentMatchingRuleName -Header Host -MatchType regex -Pattern $ContentMatchingRulePattern -NoCase true + +# Create Sub Virtual Service +$NASVS = New-AdcSubVirtualService -VirtualService $VirtualServiceName -VSPort $VirtualServicePort -VSProtocol tcp +$NASVSIndex = ($NASVS.Data.VS.SubVS[-1]).VSIndex +Set-AdcSubVirtualService -SubVSIndex $NASVSIndex -CheckHost $RealServerName -CheckPort $RealServerPort -CheckType http -CheckUrl $CheckUrl -CheckUse1_1 1 -Nickname $CheckUrl -VSType http -Weight 1000 +Set-AdcSubVirtualService -SubVSIndex $NASVSIndex -CheckHost $RealServerName -CheckPort $RealServerPort -CheckType http -CheckUrl $CheckUrl -CheckUse1_1 1 -Nickname $CheckUrl -VSType http -Weight 900 + +# Add Real Server to Sub Virtual Service (disabled) +New-AdcRealServer -RealServer $RealServerName -RealServerPort $RealServerPort -Enable $true -Forward nat -VSIndex $NASVSIndex -Weight 1000 diff --git a/Kemp/KEMP2.ps1 b/Kemp/KEMP2.ps1 new file mode 100644 index 0000000..d0ad35a --- /dev/null +++ b/Kemp/KEMP2.ps1 @@ -0,0 +1,153 @@ +Function KempAuthenticDuo { + + [CmdletBinding()] + PARAM ( + [Parameter(Mandatory=$true)][String] $CRPCEN, + [Parameter(Mandatory=$true)][String] $PortPROXY, + [Parameter(Mandatory=$true)][String] $Principal, + [Parameter(Mandatory=$true)][String] $Secondaire, + [Parameter()][String] $Description = $null + ) + + #Import-Module Kemp.LoadBalancer.Powershell.psd1 -errorAction SilentlyContinue -Verbose + + $lm49 = ConvertTo-SecureString "F1ch0rg@PM$" -AsPlainText -Force + $creds = New-Object System.Management.Automation.PSCredential("bal", $lm49) + + Initialize-LmConnectionParameters -Address 10.101.50.1 -LBPort 443 -Credential $creds -Verbose + + #Variable + $ContentMatchingRuleName = $CRPCEN+"_ui_Authentic" + $ContentMatchingRulePattern = "/^\/$CRPCEN-ui-Authentic./" + $VirtualServiceName = "10.80.20.2" + $VirtualServicePort = 443 + $CheckedPort = $Port + $SubVSName = "$CRPCEN-ui-Authentic" + $Url = "/$CRPCEN-ui-Authentic/kemp.jsp" + $AllowedVirtualHosts = "www.cloud-fichorga.fr" + $AllowedVirtualDirectories = "/$CRPCEN-ui-Authentic*" + $SchedulingMethod = "fixed" + #$HTTPHeaderModifications = "" + + # Creation Rules & Checking > Content Rules + New-AdcContentRule -RuleName $ContentMatchingRuleName -MatchType regex -Pattern $ContentMatchingRulePattern -NoCase 1 + + # Create Sub Virtual Service + $NASVS = New-AdcSubVirtualService -VirtualService $VirtualServiceName -VSPort $VirtualServicePort -VSProtocol tcp + $NASVSIndex = ($NASVS.Data.VS.SubVS[-1]).VSIndex + + Set-AdcSubVirtualService -SubVSIndex $NASVSIndex -CheckPort $PortPROXY -CheckType http -CheckUrl $Url -CheckUse1_1 0 -Nickname $SubVSName -VSType http -Weight 1000 -ESPEnabled $True -AllowedHosts $AllowedVirtualHosts -AllowedDirectories $AllowedVirtualDirectories -Schedule $SchedulingMethod -CheckUseGet 1 -AddVia 2 -StandByAddr 10.101.20.21 -StandByPort 8015 + + New-AdcRealServer -RealServer $Principal -RealServerPort $PortPROXY -Enable $true -Forward nat -VSIndex $NASVSIndex -Weight 800 + New-AdcRealServer -RealServer $Secondaire -RealServerPort $PortPROXY -Enable $true -Forward nat -VSIndex $NASVSIndex -Weight 700 + +} + +Function KempAuthenticQuatro { + + [CmdletBinding()] + PARAM ( + [Parameter(Mandatory=$true)][String] $CRPCEN, + [Parameter(Mandatory=$true)][String] $PortPROXY1, + [Parameter(Mandatory=$true)][String] $PortPROXY2, + [Parameter(Mandatory=$true)][String] $Principal, + [Parameter(Mandatory=$true)][String] $Secondaire, + [Parameter()][String] $Description = $null + ) + + #Import-Module Kemp.LoadBalancer.Powershell.psd1 -errorAction SilentlyContinue -Verbose + + $lm49 = ConvertTo-SecureString "F1ch0rg@PM$" -AsPlainText -Force + $creds = New-Object System.Management.Automation.PSCredential("bal", $lm49) + + Initialize-LmConnectionParameters -Address 10.101.50.1 -LBPort 443 -Credential $creds -Verbose + + #Variable + $ContentMatchingRuleName = $CRPCEN+"_ui_Authentic" + $ContentMatchingRulePattern = "/^\/$CRPCEN-ui-Authentic./" + $VirtualServiceName = "10.80.20.2" + $VirtualServicePort = 443 + $CheckedPort = $Port + $SubVSName = "$CRPCEN-ui-Authentic" + $Url = "/$CRPCEN-ui-Authentic/kemp.jsp" + $AllowedVirtualHosts = "www.cloud-fichorga.fr" + $AllowedVirtualDirectories = "/$CRPCEN-ui-Authentic*" + $SchedulingMethod = "fixed" + #$HTTPHeaderModifications = "" + + # Creation Rules & Checking > Content Rules + New-AdcContentRule -RuleName $ContentMatchingRuleName -MatchType regex -Pattern $ContentMatchingRulePattern -NoCase 1 + + # Create Sub Virtual Service + $NASVS = New-AdcSubVirtualService -VirtualService $VirtualServiceName -VSPort $VirtualServicePort -VSProtocol tcp + $NASVSIndex = ($NASVS.Data.VS.SubVS[-1]).VSIndex + + Set-AdcSubVirtualService -SubVSIndex $NASVSIndex -CheckPort $PortPROXY1 -CheckType http -CheckUrl $Url -CheckUse1_1 0 -Nickname $SubVSName -VSType http -Weight 1000 -ESPEnabled $True -AllowedHosts $AllowedVirtualHosts -AllowedDirectories $AllowedVirtualDirectories -Schedule $SchedulingMethod -CheckUseGet 1 -AddVia 2 -StandByAddr 10.101.20.21 -StandByPort 8015 + + New-AdcRealServer -RealServer $Principal -RealServerPort $PortPROXY1 -Enable $true -Forward nat -VSIndex $NASVSIndex -Weight 1000 + New-AdcRealServer -RealServer $Principal -RealServerPort $PortPROXY2 -Enable $true -Forward nat -VSIndex $NASVSIndex -Weight 800 + + Start-Sleep -s 5 + + New-AdcRealServer -RealServer $Secondaire -RealServerPort $PortPROXY1 -Enable $true -Forward nat -VSIndex $NASVSIndex -Weight 900 + New-AdcRealServer -RealServer $Secondaire -RealServerPort $PortPROXY2 -Enable $true -Forward nat -VSIndex $NASVSIndex -Weight 700 + +} + +Import-Module Kemp.LoadBalancer.Powershell.psd1 -errorAction SilentlyContinue -Verbose + +$lm49 = ConvertTo-SecureString "F1ch0rg@PM$" -AsPlainText -Force +$creds = New-Object System.Management.Automation.PSCredential("bal", $lm49) + +Initialize-LmConnectionParameters -Address 10.101.50.1 -LBPort 443 -Credential $creds -Verbose + +Foreach($Line in Get-Content C:\tmp\CRPCEN.txt) { + + If ($Line -ne $null) { + $Line | foreach { $Line = $_ -split ';' + $CRPCEN = $Line[0] + $Serveur1 = $Line[1] + $PortServeur1 = $Line[2] + $PoidServeur1 = $Line[3] + $Serveur2 = $Line[4] + $PortServeur2 = $Line[5] + $PoidServeur2 = $Line[6] + $Serveur3 = $Line[7] + $PortServeur3 = $Line[8] + $PoidServeur3 = $Line[9] + $Serveur4 = $Line[10] + $PortServeur4 = $Line[11] + $PoidServeur4 = $Line[12] + } } + + write-host "$CRPCEN" + + If ($Serveur3 -ne '') { + write-host "ici" $Serveur3 + + If ( $PoidServeur1 -lt $PoidServeur2 ) { + write-host $CRPCEN $PortServeur1 $PortServeur2 $Serveur3 $Serveur1 + KempAuthenticQuatro $CRPCEN $PortServeur1 $PortServeur2 $Serveur3 $Serveur1 + } + Else { + write-host $CRPCEN $PortServeur1 $PortServeur2 $Serveur1 $Serveur3 + KempAuthenticQuatro $CRPCEN $PortServeur1 $PortServeur2 $Serveur1 $Serveur3 + } + + } + Else { + write-host "la" $Serveur3 + + If ( $PoidServeur1 -lt $PoidServeur2 ) { + write-host $CRPCEN $PortServeur1 $Serveur2 $Serveur1 + KempAuthenticDuo $CRPCEN $PortServeur1 $Serveur2 $Serveur1 + } + Else { + write-host $CRPCEN $PortServeur1 $Serveur1 $Serveur2 + KempAuthenticDuo $CRPCEN $PortServeur1 $Serveur1 $Serveur2 + } + } + + Start-Sleep -s 10 + +} \ No newline at end of file diff --git a/Kemp/Modification-KEMP.ps1 b/Kemp/Modification-KEMP.ps1 new file mode 100644 index 0000000..b081d54 --- /dev/null +++ b/Kemp/Modification-KEMP.ps1 @@ -0,0 +1,91 @@ +Import-Module Kemp.LoadBalancer.Powershell.psd1 -errorAction SilentlyContinue -Verbose + +$lm49 = ConvertTo-SecureString "F1ch0rg@PM$" -AsPlainText -Force +$creds = New-Object System.Management.Automation.PSCredential("bal", $lm49) + +Initialize-LmConnectionParameters -Address 10.101.50.1 -LBPort 443 -Credential $creds -Verbose + +#Variable +$VirtualServiceName = "10.80.20.2" +$VirtualServicePort = 443 + +$Liste = Get-AdcVirtualService -VirtualService $VirtualServiceName -VSPort $VirtualServicePort -VSProtocol tcp + +$VSIndex = $Liste.Data.VS.subVS.VSIndex + +Foreach ($VSClient in $VSIndex) { + $NASVS = Get-AdcSubVirtualService -SubVSIndex $VSClient + + $Temp = $NASVS.DATA.VS.NickName + $IndexKemp = $NASVS.DATA.VS.index + + $Temp | Foreach { $Temp = $_ -split '-' + $ValueCRPCEN = $Temp[0] + $ValueApp = $Temp[1] + } + + #foreach ($Ligne Get-Content clients.csv) { + Foreach($Ligne in [System.IO.File]::ReadLines("D:\Data\Administration\app-2.csv")) { + $Ligne | Foreach { $Ligne = $_ -split ';' + $KempCRPCEN = $Ligne[0] + $KempApp = $Ligne[1] + $KempPrincipal = $Ligne[2] + $KempSecondaire = $Ligne[3] + $KempPort = $Ligne[4] + } + + If($KempCRPCEN -eq $ValueCRPCEN) { + + If($KempApp -eq $ValueApp) { + + #write-host $KempCRPCEN"/"$KempApp"/"$KempPrincipal"/"$KempSecondaire"/"$KempPort"/"$NASVS.DATA.VS.index + + If (Test-Connection $KempPrincipal -count 1 -Quiet) { + $ipV4Principal = Test-Connection "$KempPrincipal" -count 1 | select Ipv4Address + + If ($ipV4Principal -ne $null) { + $ipV4Principal | foreach { $ipV4Principal = $_ -split '=' + $ipV4PrincipalCLOUD = $ipV4Principal[1] + } + + $ipV4PrincipalCLOUD = $ipV4PrincipalCLOUD -replace " ", "" + $ipV4PrincipalCLOUD = $ipV4PrincipalCLOUD -replace "}", "" + } + Else { + $ipV4Principal = "0.0.0.0" + $ipV4PrincipalCLOUD = "0.0.0.0" + } + #write-host "$ipV4PrincipalCLOUD" + } + + If (Test-Connection $KempSecondaire -count 1 -Quiet) { + $ipV4Secondaire = Test-Connection "$KempSecondaire" -count 1 | select Ipv4Address + + If ($ipV4Secondaire -ne $null) { + $ipV4Secondaire | foreach { $ipV4Secondaire = $_ -split '=' + $ipV4SecondaireCLOUD = $ipV4Secondaire[1] + } + + $ipV4SecondaireCLOUD = $ipV4SecondaireCLOUD -replace " ", "" + $ipV4SecondaireCLOUD = $ipV4SecondaireCLOUD -replace "}", "" + } + Else { + $ipV4Secondaire = "0.0.0.0" + $ipV4SecondaireCLOUD = "0.0.0.0" + } + #write-host "$ipV4SecondaireCLOUD" + } + write-host $KempCRPCEN"-"$KempApp":"$ipV4PrincipalCLOUD"/"$ipV4SecondaireCLOUD"-"$KempPort"-"$IndexKemp + New-AdcRealServer -RealServer $ipV4PrincipalCLOUD -RealServerPort $KempPort -Enable $true -Forward nat -VSIndex $IndexKemp -Weight 800 + New-AdcRealServer -RealServer $ipV4SecondaireCLOUD -RealServerPort $KempPort -Enable $true -Forward nat -VSIndex $IndexKemp -Weight 700 + Start-Sleep -s 5 + } + Else { + + } + } + Else { + + } + } +} diff --git a/Kemp/README.md b/Kemp/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Kemp/modules/Kemp.LoadBalancer.Powershell/Kemp.LoadBalancer.Powershell-Help.xml b/Kemp/modules/Kemp.LoadBalancer.Powershell/Kemp.LoadBalancer.Powershell-Help.xml new file mode 100644 index 0000000..9bc6995 --- /dev/null +++ b/Kemp/modules/Kemp.LoadBalancer.Powershell/Kemp.LoadBalancer.Powershell-Help.xml @@ -0,0 +1,197399 @@ + + + + + Add-BondedInterface + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkBondedInterface + + + + + Add + BondedInterface + + + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkBondedInterface + + + + Add-BondedInterface + + InterfaceID + + + + Int16 + + + BondID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Add-BondedInterface + + InterfaceID + + + + Int16 + + + BondID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + BondID + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddCluster + + WARNING: This function is deprecated. Use the following command instead: +New-GeoCluster + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-GeoCluster + + + + AddCluster + + ClusterIp + + + + String + + + ClusterName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddCluster + + ClusterIp + + + + String + + + ClusterName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + + + String + + String + + + + + + ClusterName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddCountry + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDNSiteCountry + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDNSiteCountry + + + + AddCountry + + FQDN + + + + String + + + SiteAddress + + + + String + + + CountryCode + + + + String + + + IsContinent + + + + String + + + CustomLocation + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddCountry + + FQDN + + + + String + + + SiteAddress + + + + String + + + CountryCode + + + + String + + + IsContinent + + + + String + + + CustomLocation + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + SiteAddress + + + + String + + String + + + + + + CountryCode + + + + String + + String + + + + + + IsContinent + + + + String + + String + + + + + + CustomLocation + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddCustomLocation + + WARNING: This function is deprecated. Use the following command instead: +New-GeoCustomLocation + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-GeoCustomLocation + + + + AddCustomLocation + + Location + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddCustomLocation + + Location + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Location + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddFQDN + + WARNING: This function is deprecated. Use the following command instead: +New-GeoFQDN + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-GeoFQDN + + + + AddFQDN + + FQDN + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddFQDN + + FQDN + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add-GeoFQDN + + WARNING: This function is deprecated. Use the following command instead: +New-GeoFQDN + + + + + Add + GeoFQDN + + + + WARNING: This function is deprecated. Use the following command instead: +New-GeoFQDN + + + + Add-GeoFQDN + + FQDN + + The name of the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Add-GeoFQDN + + FQDN + + The name of the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-GeoFQDN –FQDN <FQDNName> + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Add-InterfaceAddress + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkInterfaceAdditionalAddress + + + + + Add + InterfaceAddress + + + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkInterfaceAdditionalAddress + + + + Add-InterfaceAddress + + InterfaceID + + + + Int16 + + + Address + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Add-InterfaceAddress + + InterfaceID + + + + Int16 + + + Address + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + Address + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddIP + + WARNING: This function is deprecated. Use the following command instead: +New-GeoIpRange + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-GeoIpRange + + + + AddIP + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddIP + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddIPCountry + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoIPRangeCountry + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoIPRangeCountry + + + + AddIPCountry + + IP + + + + String + + + CountryCode + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddIPCountry + + IP + + + + String + + + CountryCode + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + CountryCode + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddIPCountryCustom + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoIPRangeCustomLocation + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoIPRangeCustomLocation + + + + AddIPCountryCustom + + IP + + + + String + + + CustomLoc + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddIPCountryCustom + + IP + + + + String + + + CustomLoc + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + CustomLoc + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddMap + + WARNING: This function is deprecated. Use the following command instead: +New-GeoFQDNSiteAddress + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-GeoFQDNSiteAddress + + + + AddMap + + FQDN + + + + String + + + SiteAddress + + + + String + + + Cluster + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddMap + + FQDN + + + + String + + + SiteAddress + + + + String + + + Cluster + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + SiteAddress + + + + String + + String + + + + + + Cluster + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add-NoCacheExtension + + WARNING: This function is deprecated. Use the following command instead: +New-AdcHttpCacheException + + + + + Add + NoCacheExtension + + + + WARNING: This function is deprecated. Use the following command instead: +New-AdcHttpCacheException + + + + Add-NoCacheExtension + + Extension + + + + String[] + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Add-NoCacheExtension + + Extension + + + + String[] + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Extension + + + + String[] + + String[] + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add-NoCompressExtension + + WARNING: This function is deprecated. Use the following command instead: +New-AdcHttpCompressionException + + + + + Add + NoCompressExtension + + + + WARNING: This function is deprecated. Use the following command instead: +New-AdcHttpCompressionException + + + + Add-NoCompressExtension + + Extension + + + + String[] + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Add-NoCompressExtension + + Extension + + + + String[] + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Extension + + + + String[] + + String[] + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddSDNController + + WARNING: This function is deprecated. Use the following command instead: +New-SdnController + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-SdnController + + + + AddSDNController + + IPV4 + + + + String + + + Port + + + + Int32 + + + Clid + + + + Int32 + + + Https + + + + Boolean + + + User + + + + String + + + Password + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddSDNController + + IPV4 + + + + String + + + Port + + + + Int32 + + + Clid + + + + Int32 + + + Https + + + + Boolean + + + User + + + + String + + + Password + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IPV4 + + + + String + + String + + + + + + Port + + + + Int32 + + Int32 + + + + + + Clid + + + + Int32 + + Int32 + + + + + + Https + + + + Boolean + + Boolean + + + + + + User + + + + String + + String + + + + + + Password + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add-VLan + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkVLAN + + + + + Add + VLan + + + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkVLAN + + + + Add-VLan + + InterfaceID + + + + Int16 + + + VLanId + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Add-VLan + + InterfaceID + + + + Int16 + + + VLanId + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + VLanId + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add-VxLan + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkVxLAN + + + + + Add + VxLan + + + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkVxLAN + + + + Add-VxLan + + InterfaceID + + + + Int16 + + + VNI + + + + Int32 + + + Addr + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Add-VxLan + + InterfaceID + + + + Int16 + + + VNI + + + + Int32 + + + Addr + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + VNI + + + + Int32 + + Int32 + + + + + + Addr + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddWafCustomData + + WARNING: This function is deprecated. Use the following command instead: +New-WafCustomRuleData + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-WafCustomRuleData + + + + AddWafCustomData + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddWafCustomData + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AddWafCustomRule + + WARNING: This function is deprecated. Use the following command instead: +New-WafCustomRuleSet + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-WafCustomRuleSet + + + + AddWafCustomRule + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AddWafCustomRule + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AfeClientLimitAdd + + WARNING: This function is deprecated. Use the following command instead: +New-LmIPConnectionLimit + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-LmIPConnectionLimit + + + + AfeClientLimitAdd + + L7addr + + + + String + + + L7limit + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AfeClientLimitAdd + + L7addr + + + + String + + + L7limit + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + L7addr + + + + String + + String + + + + + + L7limit + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AfeClientLimitDelete + + WARNING: This function is deprecated. Use the following command instead: +Remove-LmIPConnectionLimit + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-LmIPConnectionLimit + + + + AfeClientLimitDelete + + L7addr + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AfeClientLimitDelete + + L7addr + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + L7addr + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AfeClientLimitList + + WARNING: This function is deprecated. Use the following command instead: +Get-LmIPConnectionLimit + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmIPConnectionLimit + + + + AfeClientLimitList + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + AfeClientLimitList + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Backup-Certificate + + WARNING: This function is deprecated. Use the following command instead: +Backup-TlsCertificate + + + + + Backup + Certificate + + + + WARNING: This function is deprecated. Use the following command instead: +Backup-TlsCertificate + + + + Backup-Certificate + + Password + + + + String + + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Backup-Certificate + + Password + + + + String + + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Password + + + + String + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Backup-LmConfiguration + + Allows you to back up the LoadMaster. + + + + + Backup + LmConfiguration + + + + Allows you to back up the LoadMaster. + + + + Backup-LmConfiguration + + Path + + The local path where the LoadMaster backup file should be saved. + + String + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Backup-LmConfiguration + + Path + + The local path where the LoadMaster backup file should be saved. + + String + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The local path where the LoadMaster backup file should be saved. + + String + + String + + + + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Backup-LmConfiguration -Path c:\backup\backup.file + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Backup-LoadBalancer + + WARNING: This function is deprecated. Use the following command instead: +Backup-LmConfiguration + + + + + Backup + LoadBalancer + + + + WARNING: This function is deprecated. Use the following command instead: +Backup-LmConfiguration + + + + Backup-LoadBalancer + + Path + + + + String + + + Force + + + + SwitchParameter + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Backup-LoadBalancer + + Path + + + + String + + + Force + + + + SwitchParameter + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Backup-TlsCertificate + + Create a backup of all the certificates and intermediate certificates on the LoadMaster. + + + + + Backup + TlsCertificate + + + + The password will be required to restore the certificate file to the load balancer. + + + + Backup-TlsCertificate + + Password + + A password to encrypt the certificate backup file. This password will be needed to restore the certificate file to the LoadMaster. + + String + + + Path + + The local path where the certificate backup file should be saved. If no file is specified, the backup file will be saved as C:\Temp\CertificateBackup_yyyy-MM-dd_HH-mm-ss, assuming that C:\ is the System Root drive specified in the Environment variables. + If the input parameter Path is not set, the default location where the cmdlet tries to save the TlsCertificate is: +$($Env:SystemRoot)\Temp +If the above folder does not exist or it is not accessible (permissions) the cmdlet will fail. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Backup-TlsCertificate + + Password + + A password to encrypt the certificate backup file. This password will be needed to restore the certificate file to the LoadMaster. + + String + + + Path + + The local path where the certificate backup file should be saved. If no file is specified, the backup file will be saved as C:\Temp\CertificateBackup_yyyy-MM-dd_HH-mm-ss, assuming that C:\ is the System Root drive specified in the Environment variables. + If the input parameter Path is not set, the default location where the cmdlet tries to save the TlsCertificate is: +$($Env:SystemRoot)\Temp +If the above folder does not exist or it is not accessible (permissions) the cmdlet will fail. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Password + + A password to encrypt the certificate backup file. This password will be needed to restore the certificate file to the LoadMaster. + + String + + String + + + + + + Path + + The local path where the certificate backup file should be saved. If no file is specified, the backup file will be saved as C:\Temp\CertificateBackup_yyyy-MM-dd_HH-mm-ss, assuming that C:\ is the System Root drive specified in the Environment variables. + If the input parameter Path is not set, the default location where the cmdlet tries to save the TlsCertificate is: +$($Env:SystemRoot)\Temp +If the above folder does not exist or it is not accessible (permissions) the cmdlet will fail. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Backup-TlsCertificate -Password password -Path C:\temp\CertBackup_2017_04_28.16.09 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + ChangeCheckerAddr + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDNSiteCheckerAddress + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDNSiteCheckerAddress + + + + ChangeCheckerAddr + + FQDN + + + + String + + + SiteAddress + + + + String + + + CheckerIP + + + + String + + + CheckerPort + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ChangeCheckerAddr + + FQDN + + + + String + + + SiteAddress + + + + String + + + CheckerIP + + + + String + + + CheckerPort + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + SiteAddress + + + + String + + String + + + + + + CheckerIP + + + + String + + String + + + + + + CheckerPort + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ChangeMapLocation + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDNSiteCoordinates + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDNSiteCoordinates + + + + ChangeMapLocation + + FQDN + + + + String + + + SiteAddress + + + + String + + + Lat + + + + Int32 + + + Long + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ChangeMapLocation + + FQDN + + + + String + + + SiteAddress + + + + String + + + Lat + + + + Int32 + + + Long + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + SiteAddress + + + + String + + String + + + + + + Lat + + + + Int32 + + Int32 + + + + + + Long + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Clear-SSOCache + + Flush the SSO authentication cache. + + + + + Clear + SSOCache + + + + Flush the SSO authentication cache. + + + + Clear-SSOCache + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Clear-SSOCache + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Clear-SSOCache + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + ClusterChangeLocation + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoClusterCoordinates + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoClusterCoordinates + + + + ClusterChangeLocation + + ClusterIp + + + + String + + + LatSecs + + + + Int32 + + + LongSecs + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ClusterChangeLocation + + ClusterIp + + + + String + + + LatSecs + + + + Int32 + + + LongSecs + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + + + String + + String + + + + + + LatSecs + + + + Int32 + + Int32 + + + + + + LongSecs + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Confirm-LicenseEULA + + Used to enter the magic cookie key returned by the ReadEula command to accept the EULA and to set the type of license used, for example trial, perm or free. + + + + + Confirm + LicenseEULA + + + + When this command is run successfully, a second EULA and magic string will be displayed. + Value Description +Trial Temporary license for users evaluating the KEMP LoadMaster +Perm Purchased permanent LoadMaster +Free Free LoadMaster + + + + Confirm-LicenseEULA + + Type + + Use this parameter to specify the type of license that is being employed. +The type parameter is legacy. The default value of the type parameter is Trial. This can be overwritten by setting the type parameter when running the Confirm-LicenseEULA command. +Valid values for the type parameter are: +Perm - Perpetual +Free - Free (Restricted) +Trial – Trial (Unrestricted) + + String + + + Magic + + The key that is is generated by the ReadEULA command. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Type + + Use this parameter to specify the type of license that is being employed. +The type parameter is legacy. The default value of the type parameter is Trial. This can be overwritten by setting the type parameter when running the Confirm-LicenseEULA command. +Valid values for the type parameter are: +Perm - Perpetual +Free - Free (Restricted) +Trial – Trial (Unrestricted) + + String + + String + + + + + + Magic + + The key that is is generated by the ReadEULA command. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Currently there are three license types available from KEMP. These are: Trial (Unrestricted), Perpetual and Free (Restricted). + + + + + -------------------------- Example -------------------------- + + PS C:\> + + $confirm = Confirm-LicenseEULA -Magic 82745495-48f8-4fec-895c-c21f9297d989 -Type trial + +$confirm + + + + + Example Output: +Full response: @{Eula2=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: +Eula2 +----- +@{MagicString=20864369-5d36-407c-874d-772e610c8bbc; Eula2=... +Eula +---- +@{MagicString=013b50b2-e3bb-468e-b64a-de78d46cdfb8; Eula=... +Param........: +MagicString Eula2 +----------- ----- +20864369-5d36-407c-874d-772e610c8bbc ... +Param........: +As part of KEMPs continuous drive to offer better value and services to our customers KEMP has introduced a Call Home feature. +The LoadMaster can utilize Call Home to get available license updates, information regarding any updated firmware for your product and provide system status information to KEMP. The system st +atus information will include Throughput, Enabled Features, Virtual Services and Real Servers details but will not include any unique personal information or actual traffic from your network. +Your LoadMaster will initiate a connection to KEMP once during any 24 hour interval. +<b>NOTE</b> – Allowing Call Home is mandatory for Free LoadMaster versions. +For more details on this visit <a href="http://www.kemptechnologies.com/callhome" target="_blank">www.kemptechnologies.com/callhome</a> + + + + + + + + + + + + + + + + + Confirm-LicenseEULA2 + + Specify whether or not to use the Call Home feature. + + + + + Confirm + LicenseEULA2 + + + + If this is enabled, the LoadMaster regularly contacts KEMP to check for updates and other information. + + + + Confirm-LicenseEULA2 + + Magic + + The IP Address for the KEMP LoadMaster to which the command is being directed. This key is generated by running the ReadEULA command. + + String + + + Accept + + This parameter is used to accept or reject the license agreement. The possible values are; yes and no. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Magic + + The IP Address for the KEMP LoadMaster to which the command is being directed. This key is generated by running the ReadEULA command. + + String + + String + + + + + + Accept + + This parameter is used to accept or reject the license agreement. The possible values are; yes and no. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + $confirm = Confirm-LicenseEULA2 -Accept yes -Magic 20864369-5d36-407c-874d-772e610c8bbc + +$confirm + + + + + Example Output: +Full response: Command successfully executed +Return Code..: 200 +Response.....: Command successfully executed +Data field...: + + + + + + + + + + + + + + + + + CreateVpnConnection + + WARNING: This function is deprecated. Use the following command instead: +New-LmVpnConnection + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-LmVpnConnection + + + + CreateVpnConnection + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + CreateVpnConnection + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DelCipherset + + WARNING: This function is deprecated. Use the following command instead: +Remove-TlsCipherSet + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-TlsCipherSet + + + + DelCipherset + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DelCipherset + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteAddon + + WARNING: This function is deprecated. Use the following command instead: +Remove-LmAddon + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-LmAddon + + + + DeleteAddon + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteAddon + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteCluster + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoCluster + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoCluster + + + + DeleteCluster + + ClusterIp + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteCluster + + ClusterIp + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteCustomLocation + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoCustomLocation + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoCustomLocation + + + + DeleteCustomLocation + + Location + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteCustomLocation + + Location + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Location + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteFQDN + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoFQDN + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoFQDN + + + + DeleteFQDN + + FQDN + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteFQDN + + FQDN + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteIP + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIpRange + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIpRange + + + + DeleteIP + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteIP + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteIPLocation + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIPRangeCoordinates + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIPRangeCoordinates + + + + DeleteIPLocation + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteIPLocation + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteMap + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoFQDNSiteAddress + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoFQDNSiteAddress + + + + DeleteMap + + FQDN + + + + String + + + SiteAddress + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteMap + + FQDN + + + + String + + + SiteAddress + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + SiteAddress + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteSDNController + + WARNING: This function is deprecated. Use the following command instead: +Remove-SdnController + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-SdnController + + + + DeleteSDNController + + Clid + + + + Int32 + + + Cid + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteSDNController + + Clid + + + + Int32 + + + Cid + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Clid + + + + Int32 + + Int32 + + + + + + Cid + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteTemplate + + WARNING: This function is deprecated. Use the following command instead: +Remove-Template + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-Template + + + + DeleteTemplate + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteTemplate + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeleteVpnConnection + + WARNING: This function is deprecated. Use the following command instead: +Remove-LmVpnConnection + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-LmVpnConnection + + + + DeleteVpnConnection + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DeleteVpnConnection + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DelWafCustomData + + WARNING: This function is deprecated. Use the following command instead: +Uninstall-WafCustomRuleData + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Uninstall-WafCustomRuleData + + + + DelWafCustomData + + Filename + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DelWafCustomData + + Filename + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Filename + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DelWafCustomRule + + WARNING: This function is deprecated. Use the following command instead: +Uninstall-WafCustomRuleSet + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Uninstall-WafCustomRuleSet + + + + DelWafCustomRule + + Filename + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DelWafCustomRule + + Filename + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Filename + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Disable-AdcRealServer + + Disables the specified Real Server. + + + + + Disable + AdcRealServer + + + + Disables the specified Real Server. + + + + Disable-AdcRealServer + + RSIpaddress + + The IP address of the Real Server to disable. + + String + + + RSPort + + The port of the Real Server to disable. + + Int32 + + + RSFqdn + + The Fully Qualified Domain Name (FQDN) of the Real Server to disable. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Disable-AdcRealServer + + RSIpaddress + + The IP address of the Real Server to disable. + + String + + + RSPort + + The port of the Real Server to disable. + + Int32 + + + RSFqdn + + The Fully Qualified Domain Name (FQDN) of the Real Server to disable. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RSIpaddress + + The IP address of the Real Server to disable. + + String + + String + + + + + + RSPort + + The port of the Real Server to disable. + + Int32 + + Int32 + + + + + + RSFqdn + + The Fully Qualified Domain Name (FQDN) of the Real Server to disable. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + IPAddress + + The IP Address of the Real Server that should be disabled on the load balancer. This parameter is required. +The IP address can be in either the IPv4 or IPv6 formats. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Disable-AdcRealServer -IPAddress 10.11.0.24 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Disable-ClusterNode + + Disables the specified node. + + + + + Disable + ClusterNode + + + + Disables the specified node. + + + + Disable-ClusterNode + + NodeId + + The ID number of the node to be disabled. The ID of the node can be found in the ID column in the Cluster Control screen in the LoadMaster WUI. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Disable-ClusterNode + + NodeId + + The ID number of the node to be disabled. The ID of the node can be found in the ID column in the Cluster Control screen in the LoadMaster WUI. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + NodeId + + The ID number of the node to be disabled. The ID of the node can be found in the ID column in the Cluster Control screen in the LoadMaster WUI. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Disable-ClusterNode -NodeId 2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + DisableGEO + + WARNING: This function is deprecated. Use the following command instead: +Disable-LmGeoPack + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Disable-LmGeoPack + + + + DisableGEO + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DisableGEO + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Disable-LmGeoPack + + Disables GEO globally for the LoadMaster. + + + + + Disable + LmGeoPack + + + + Disables GEO globally for the LoadMaster. + + + + Disable-LmGeoPack + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Disable-LmGeoPack + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Disable-LmGeoPack + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Disable-RealServer + + WARNING: This function is deprecated. Use the following command instead: +Disable-AdcRealServer + + + + + Disable + RealServer + + + + WARNING: This function is deprecated. Use the following command instead: +Disable-AdcRealServer + + + + Disable-RealServer + + RSIpaddress + + + + String + + + RSPort + + + + Int32 + + + RSFqdn + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Disable-RealServer + + RSIpaddress + + + + String + + + RSPort + + + + Int32 + + + RSFqdn + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RSIpaddress + + + + String + + String + + + + + + RSPort + + + + Int32 + + Int32 + + + + + + RSFqdn + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Disable-SecAPIAccess + + Disables the programmable Application Program Interface (API). + + + + + Disable + SecAPIAccess + + + + Run this command to disable the API interface. + + + + Disable-SecAPIAccess + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Disable-SecAPIAccess + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If this is disabled, the API will no longer be accessible. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Disable-SecAPIAccess + + + + + Example Output: +Full response: @{ReturnCode=200; Response=The API is disabled; Data=} +Return Code..: 200 +Response.....: The API is disabled + + + + + + + + + + + + + + + + + DisableWafRemoteLogging + + WARNING: This function is deprecated. Use the following command instead: +Disable-WafRemoteLogging + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Disable-WafRemoteLogging + + + + DisableWafRemoteLogging + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DisableWafRemoteLogging + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Disable-WafRemoteLogging + + Allows you to turn off WAF remote logging. + + + + + Disable + WafRemoteLogging + + + + Allows you to turn off WAF remote logging. + + + + Disable-WafRemoteLogging + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Disable-WafRemoteLogging + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Disable-WafRemoteLogging -LoadBalancer <LoadMasterIPAddress> + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + DoTcpDump + + WARNING: This function is deprecated. Use the following command instead: +Trace-TcpTraffic + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Trace-TcpTraffic + + + + DoTcpDump + + MaxPackets + + The maximum number of packets to capture. The default value for this parameter is 10000. Valid values range from 1 to 200000. The maximum is the API maximum. The actual maximum size is defined by the space available. + + Int32 + + + MaxTime + + The maximum number of seconds to capture. The default value for this parameter is 10. Valid values range from 1 to 600. + + Int32 + + + Interface + + The interface(s) to monitor. The default interface is eth0. A TCP dump can be captured either by one or all Ethernet ports. + + String + + + Port + + The port to be monitored. + + String + + + Address + + The (optional) address to be monitored. + + String + + + TcpOptions + + Any additional TCPDump parameters needed. The maximum number of characters permitted is 255. + + String + + + Path + + The path to export a saved file to. If the path parameter is not populated, the path defaults to <WindowsDirectory>\Temp\tcpdump_<Timestamp>.pcap. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + DoTcpDump + + MaxPackets + + The maximum number of packets to capture. The default value for this parameter is 10000. Valid values range from 1 to 200000. The maximum is the API maximum. The actual maximum size is defined by the space available. + + Int32 + + + MaxTime + + The maximum number of seconds to capture. The default value for this parameter is 10. Valid values range from 1 to 600. + + Int32 + + + Interface + + The interface(s) to monitor. The default interface is eth0. A TCP dump can be captured either by one or all Ethernet ports. + + String + + + Port + + The port to be monitored. + + String + + + Address + + The (optional) address to be monitored. + + String + + + TcpOptions + + Any additional TCPDump parameters needed. The maximum number of characters permitted is 255. + + String + + + Path + + The path to export a saved file to. If the path parameter is not populated, the path defaults to <WindowsDirectory>\Temp\tcpdump_<Timestamp>.pcap. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + MaxPackets + + The maximum number of packets to capture. The default value for this parameter is 10000. Valid values range from 1 to 200000. The maximum is the API maximum. The actual maximum size is defined by the space available. + + Int32 + + Int32 + + + + + + MaxTime + + The maximum number of seconds to capture. The default value for this parameter is 10. Valid values range from 1 to 600. + + Int32 + + Int32 + + + + + + Interface + + The interface(s) to monitor. The default interface is eth0. A TCP dump can be captured either by one or all Ethernet ports. + + String + + String + + + + + + Port + + The port to be monitored. + + String + + String + + + + + + Address + + The (optional) address to be monitored. + + String + + String + + + + + + TcpOptions + + Any additional TCPDump parameters needed. The maximum number of characters permitted is 255. + + String + + String + + + + + + Path + + The path to export a saved file to. If the path parameter is not populated, the path defaults to <WindowsDirectory>\Temp\tcpdump_<Timestamp>.pcap. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + DoTcpDump -MaxPackets 15000 -Interface any -Port 443 -MaxTime 800 -Path c:\temp\out.pcap + + + + + Example Output: +No output is displayed, but a file will be downloaded to the specified path. + + + + + + + + + + + + + + + + + DownloadWafAuditLog + + WARNING: This function is deprecated. Use the following command instead: +Export-WafAuditLog + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Export-WafAuditLog + + + + DownloadWafAuditLog + + Path + + + + String + + + AuditFile + + + + String + + + Filter + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DownloadWafAuditLog + + Path + + + + String + + + AuditFile + + + + String + + + Filter + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + AuditFile + + + + String + + String + + + + + + Filter + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DownloadWafCustomData + + WARNING: This function is deprecated. Use the following command instead: +Export-WafCustomRuleData + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Export-WafCustomRuleData + + + + DownloadWafCustomData + + Path + + + + String + + + RuleDataName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DownloadWafCustomData + + Path + + + + String + + + RuleDataName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + RuleDataName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DownloadWafCustomRule + + WARNING: This function is deprecated. Use the following command instead: +Export-WafCustomRuleSet + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Export-WafCustomRuleSet + + + + DownloadWafCustomRule + + Path + + + + String + + + RuleSetName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DownloadWafCustomRule + + Path + + + + String + + + RuleSetName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + RuleSetName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DownloadWafRules + + WARNING: This function is deprecated. Use the following command instead: +Update-WafRulesDatabase + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Update-WafRulesDatabase + + + + DownloadWafRules + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + DownloadWafRules + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An error might be displayed, for example Command Failed: Download Failed if there is a problem downloading the rules. + If there are no updates because the latest rules have already been downloaded, a message will be displayed which says No updates available. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + DownloadWafRules + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + EditCustomLocation + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoCustomLocation + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoCustomLocation + + + + EditCustomLocation + + clOldName + + + + String + + + clNewName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + EditCustomLocation + + clOldName + + + + String + + + clNewName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + clOldName + + + + String + + String + + + + + + clNewName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enable-AdcRealServer + + Enables a specified Real Server that is currently disabled. + + + + + Enable + AdcRealServer + + + + Enables a specified Real Server that is currently disabled. + + + + Enable-AdcRealServer + + RSIpAddress + + The IP address of the Real Server to enable. + + String + + + RSPort + + The port of the Real Server to enable. + + Int32 + + + RSFqdn + + The Fully Qualified Domain Name (FQDN) of the Real Server to enable. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Enable-AdcRealServer + + RSIpAddress + + The IP address of the Real Server to enable. + + String + + + RSPort + + The port of the Real Server to enable. + + Int32 + + + RSFqdn + + The Fully Qualified Domain Name (FQDN) of the Real Server to enable. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RSIpAddress + + The IP address of the Real Server to enable. + + String + + String + + + + + + RSPort + + The port of the Real Server to enable. + + Int32 + + Int32 + + + + + + RSFqdn + + The Fully Qualified Domain Name (FQDN) of the Real Server to enable. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + IPAddress + + The IP Address of the Real Server that should be enabled on the load balancer. This parameter is required. +The IP address can be in either the IPv4 (e.g. 10.11.0.24) or IPv6 (e.g. fdce:9b36:e54f:110::40:14) format. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Enable-AdcRealServer -RSIpAddress 10.154.11.84 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Rs=} +Param........: @{Status=Down; VSIndex=1; RsIndex=4; Addr=10.154.11.84; Port=443; DnsName=; Forward=route; Weight=1000; Limit=0; Follow=0; Enable=Y; Crit +ical=N} + + + + + + + + + + + + + + + + + Enable-ClusterNode + + Enables the specified node. + + + + + Enable + ClusterNode + + + + Enables the specified node. + + + + Enable-ClusterNode + + NodeId + + The ID number of the node to be enabled. The ID of the node can be found in the ID column in the Cluster Control screen in the LoadMaster WUI. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Enable-ClusterNode + + NodeId + + The ID number of the node to be enabled. The ID of the node can be found in the ID column in the Cluster Control screen in the LoadMaster WUI. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + NodeId + + The ID number of the node to be enabled. The ID of the node can be found in the ID column in the Cluster Control screen in the LoadMaster WUI. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Enable-ClusterNode -NodeId 2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + EnableGEO + + WARNING: This function is deprecated. Use the following command instead: +Enable-LmGeoPack + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Enable-LmGeoPack + + + + EnableGEO + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + EnableGEO + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enable-LmGeoPack + + Enables GEO globally for the LoadMaster. + + + + + Enable + LmGeoPack + + + + Enables GEO globally for the LoadMaster. + + + + Enable-LmGeoPack + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Enable-LmGeoPack + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + String + + + + + + LBPort + + The port of the load balancer. + + Int32 + + Int32 + + + + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Enable-LmGeoPack + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Enable-RealServer + + WARNING: This function is deprecated. Use the following command instead: +Enable-AdcRealServer + + + + + Enable + RealServer + + + + WARNING: This function is deprecated. Use the following command instead: +Enable-AdcRealServer + + + + Enable-RealServer + + RSIpAddress + + + + String + + + RSPort + + + + Int32 + + + RSFqdn + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Enable-RealServer + + RSIpAddress + + + + String + + + RSPort + + + + Int32 + + + RSFqdn + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RSIpAddress + + + + String + + String + + + + + + RSPort + + + + Int32 + + Int32 + + + + + + RSFqdn + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enable-SecAPIAccess + + Enables the programmable Application Program Interface (API). + + + + + Enable + SecAPIAccess + + + + Run this command to enable the API interface. + + + + Enable-SecAPIAccess + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Enable-SecAPIAccess + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Enable-SecAPIAccess + + + + + ReturnCode Response Data +---------- -------- ---- + 200 The API is enabled + + + + + + + + + + + + + + + + + EnableWafRemoteLogging + + WARNING: This function is deprecated. Use the following command instead: +Enable-WafRemoteLogging + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Enable-WafRemoteLogging + + + + EnableWafRemoteLogging + + RemoteURI + + + + String + + + Username + + + + String + + + Passwd + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + EnableWafRemoteLogging + + RemoteURI + + + + String + + + Username + + + + String + + + Passwd + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RemoteURI + + + + String + + String + + + + + + Username + + + + String + + String + + + + + + Passwd + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enable-WafRemoteLogging + + Allows you to enable WAF remote logging. + + + + + Enable + WafRemoteLogging + + + + Allows you to enable WAF remote logging. + + + + Enable-WafRemoteLogging + + RemoteURI + + The remote server console URI. + + String + + + Username + + The remote username. + + String + + + Passwd + + The remote password. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Enable-WafRemoteLogging + + RemoteURI + + The remote server console URI. + + String + + + Username + + The remote username. + + String + + + Passwd + + The remote password. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RemoteURI + + The remote server console URI. + + String + + String + + + + + + Username + + The remote username. + + String + + String + + + + + + Passwd + + The remote password. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Enable-WafRemoteLogging -Passwd ExamplePassword -RemoteURI ExampleRemoteURI -Username ExampleUsername + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Export-GeoIPBlacklistDatabase + + Retrieve the GEO IP blacklist. + + + + + Export + GeoIPBlacklistDatabase + + + + Run this command to display the current, full GEO IP blacklist. + + + + Export-GeoIPBlacklistDatabase + + filename + + This parameter is mandatory. This is the desired path and filename for the file that will be downloaded from the LoadMaster. If a file with the same name already exists, the command will fail. If no data is available on the LoadMaster, the command returns an empty file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Export-GeoIPBlacklistDatabase + + filename + + This parameter is mandatory. This is the desired path and filename for the file that will be downloaded from the LoadMaster. If a file with the same name already exists, the command will fail. If no data is available on the LoadMaster, the command returns an empty file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + filename + + This parameter is mandatory. This is the desired path and filename for the file that will be downloaded from the LoadMaster. If a file with the same name already exists, the command will fail. If no data is available on the LoadMaster, the command returns an empty file. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-GeoIPBlacklistDatabase -filename 'C:\Users\ExampleUser\Documents\temp\blacklist.txt' + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Export-GeoIPBlacklistDatabaseChanges + + Retrieve a list of changes which were made to the blacklist. + + + + + Export + GeoIPBlacklistDatabaseChanges + + + + To retrieve a list of changes which were made as of the last download, run this command. + + + + Export-GeoIPBlacklistDatabaseChanges + + filename + + This parameter is mandatory. This is the desired path and filename for the file that will be downloaded from the LoadMaster. If a file with the same name already exists, the command will fail. If no data is available on the LoadMaster, the command returns an empty file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Export-GeoIPBlacklistDatabaseChanges + + filename + + This parameter is mandatory. This is the desired path and filename for the file that will be downloaded from the LoadMaster. If a file with the same name already exists, the command will fail. If no data is available on the LoadMaster, the command returns an empty file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + filename + + This parameter is mandatory. This is the desired path and filename for the file that will be downloaded from the LoadMaster. If a file with the same name already exists, the command will fail. If no data is available on the LoadMaster, the command returns an empty file. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-GeoIPBlacklistDatabaseChanges -filename c:\t\example + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Export-GeoIPWhitelistDatabase + + Retrieve the contents of the user-defined whitelist. + + + + + Export + GeoIPWhitelistDatabase + + + + To view the user-defined whitelist (which overrides the blacklist), run this command. + + + + Export-GeoIPWhitelistDatabase + + filename + + This parameter is mandatory. This is the desired path and filename for the file that will be downloaded from the LoadMaster. If a file with the same name already exists, the command will fail. If no data is available on the LoadMaster, the command returns an empty file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Export-GeoIPWhitelistDatabase + + filename + + This parameter is mandatory. This is the desired path and filename for the file that will be downloaded from the LoadMaster. If a file with the same name already exists, the command will fail. If no data is available on the LoadMaster, the command returns an empty file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + filename + + This parameter is mandatory. This is the desired path and filename for the file that will be downloaded from the LoadMaster. If a file with the same name already exists, the command will fail. If no data is available on the LoadMaster, the command returns an empty file. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-GeoIPWhitelistDatabase -filename c:\t\example3 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Export-SAMLSPCert + + If using a self-signed certificate, the Export-SAMLSPCert command is used to download the certificate from the LoadMaster. + + + + + Export + SAMLSPCert + + + + This certificate must be installed on the IdP server (for example AD FS) in order to be added to the relying party signature. +The AD FS server will require this certificate for use of the public key in order to verify the signatures that the LoadMaster generates. + + + + Export-SAMLSPCert + + Domain + + The name of the relevant SAML SSO domain to download the certificate for. + + String + + + CertificateFilePath + + The CertificateFilePath parameter of the Export-SAMLSPCert is the name of the file where to store the certificate, not a path. The name can be with or without the path. If no path is provided, the file is stored in current working directory. If the file is already present the command fails. To overwrite it, the Force switch must be used. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Export-SAMLSPCert + + Domain + + The name of the relevant SAML SSO domain to download the certificate for. + + String + + + CertificateFilePath + + The CertificateFilePath parameter of the Export-SAMLSPCert is the name of the file where to store the certificate, not a path. The name can be with or without the path. If no path is provided, the file is stored in current working directory. If the file is already present the command fails. To overwrite it, the Force switch must be used. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + Domain + + The name of the relevant SAML SSO domain to download the certificate for. + + String + + String + + + + + + CertificateFilePath + + The CertificateFilePath parameter of the Export-SAMLSPCert is the name of the file where to store the certificate, not a path. The name can be with or without the path. If no path is provided, the file is stored in current working directory. If the file is already present the command fails. To overwrite it, the Force switch must be used. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-SAMLSPCert -CertificateFilePath C:\ExamplePath\SAMLCert -Domain example.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Export-SecUserCertificate + + Download a previously generated local user certificate. + + + + + Export + SecUserCertificate + + + + Download a previously generated local user certificate. + + + + Export-SecUserCertificate + + User + + The relevant username to download the certificate for. + + String + + + Path + + The location to store the certificate file in. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Export-SecUserCertificate + + User + + The relevant username to download the certificate for. + + String + + + Path + + The location to store the certificate file in. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + User + + The relevant username to download the certificate for. + + String + + String + + + + + + Path + + The location to store the certificate file in. + + String + + String + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-KEMPSecUserCertificate -Path c:\temp\cert -User Example + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + ExportVSTemplate + + WARNING: This function is deprecated. Use the following command instead: +Export-VSTemplate + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Export-VSTemplate + + + + ExportVSTemplate + + VirtualService + + Specify the IP address of the Virtual Service to be exported as a template. + + String + + + Port + + Specifies the port on which this Virtual Service accepts connections. + + Int32 + + + Protocol + + Specifies the communication protocol of the Virtual Service. Valid options are TCP or UDP. + + String + + + VSIndex + + + + Int32 + + + Path + + The path to the location to download the template file to, followed by the desired template file name, in the format <Path>\<Filename>.txt. + + String + + + Force + + + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ExportVSTemplate + + VirtualService + + Specify the IP address of the Virtual Service to be exported as a template. + + String + + + Port + + Specifies the port on which this Virtual Service accepts connections. + + Int32 + + + Protocol + + Specifies the communication protocol of the Virtual Service. Valid options are TCP or UDP. + + String + + + VSIndex + + + + Int32 + + + Path + + The path to the location to download the template file to, followed by the desired template file name, in the format <Path>\<Filename>.txt. + + String + + + Force + + + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + Specify the IP address of the Virtual Service to be exported as a template. + + String + + String + + + + + + Port + + Specifies the port on which this Virtual Service accepts connections. + + Int32 + + Int32 + + + + + + Protocol + + Specifies the communication protocol of the Virtual Service. Valid options are TCP or UDP. + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + Path + + The path to the location to download the template file to, followed by the desired template file name, in the format <Path>\<Filename>.txt. + + String + + String + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ExportVSTemplate -Path C:\Temp\ExampleTemplateName.txt -Port 80 -Protocol tcp -VirtualService 172.20.0.234 + + + + + Example Output: +No output is displayed, but the file should be downloaded to the specified location. + + + + + + + + + + + + + + + + + Export-VSTemplate + + Export a Virtual Service as a template. + + + + + Export + VSTemplate + + + + Export the settings in a Virtual Service as a template that can be used to create other Virtual Services. + + + + Export-VSTemplate + + VirtualService + + The IP address of the Virtual Service to export. + + String + + + Port + + The port of the Virtual Service to export. + + Int32 + + + Protocol + + The protocol of the Virtual Service to export. + + String + + + VSIndex + + The index number of the Virtual Service to export. + + Int32 + + + Path + + The location to save the exported template to, in the format <path>\<filename>. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Export-VSTemplate + + VirtualService + + The IP address of the Virtual Service to export. + + String + + + Port + + The port of the Virtual Service to export. + + Int32 + + + Protocol + + The protocol of the Virtual Service to export. + + String + + + VSIndex + + The index number of the Virtual Service to export. + + Int32 + + + Path + + The location to save the exported template to, in the format <path>\<filename>. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The IP address of the Virtual Service to export. + + String + + String + + + + + + Port + + The port of the Virtual Service to export. + + Int32 + + Int32 + + + + + + Protocol + + The protocol of the Virtual Service to export. + + String + + String + + + + + + VSIndex + + The index number of the Virtual Service to export. + + Int32 + + Int32 + + + + + + Path + + The location to save the exported template to, in the format <path>\<filename>. + + String + + String + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-VSTemplate -Path C:\t\template -Port 443 -Protocol tcp -VirtualService 10.154.11.181 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Export-WafAuditLog + + Allows you to download the AFP audit logs. + + + + + Export + WafAuditLog + + + + Allows you to download the AFP audit logs. + + + + Export-WafAuditLog + + Path + + Path to where you want to download the AFP audit logs to. You can either specify a path or a path and filename. + If the parameter Path does not contain a filename but only a path and the AuditFile parameter is not null, path will be set to the value path/filename. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\wafaudit_$(Get-Date -format yyyy-MM-dd_HH-mm-ss).log. Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + + AuditFile + + The name of the WAF audit log file to be downloaded, for example wafaudit.1. + + String + + + Filter + + The filter string. This can be a regular expression. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Export-WafAuditLog + + Path + + Path to where you want to download the AFP audit logs to. You can either specify a path or a path and filename. + If the parameter Path does not contain a filename but only a path and the AuditFile parameter is not null, path will be set to the value path/filename. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\wafaudit_$(Get-Date -format yyyy-MM-dd_HH-mm-ss).log. Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + + AuditFile + + The name of the WAF audit log file to be downloaded, for example wafaudit.1. + + String + + + Filter + + The filter string. This can be a regular expression. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + Path to where you want to download the AFP audit logs to. You can either specify a path or a path and filename. + If the parameter Path does not contain a filename but only a path and the AuditFile parameter is not null, path will be set to the value path/filename. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\wafaudit_$(Get-Date -format yyyy-MM-dd_HH-mm-ss).log. Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + String + + + + + + AuditFile + + The name of the WAF audit log file to be downloaded, for example wafaudit.1. + + String + + String + + + + + + Filter + + The filter string. This can be a regular expression. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The AFP logs are not generated in real time – they can be up to two minutes behind what the AFP engine is actually processing. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-WafAuditLog -Path C:\WAFLogs\ExampleDesiredFileName -File wafaudit.1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Export-WafChangeLog + + Used to download a log file containing changes made to the KEMP Technologies Web Application Firewall (WAF) rule set. + + + + + Export + WafChangeLog + + + + Used to download a log file containing changes made to the KEMP Technologies Web Application Firewall (WAF) rule set. + + + + Export-WafChangeLog + + Path + + The path to download the change log file to, followed by the filename and extension, in the format <Path\Filename.Extension>. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\WAF_changes_$(Get-Date -format yyyy-MM-dd_HH-mm-ss).log. Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Export-WafChangeLog + + Path + + The path to download the change log file to, followed by the filename and extension, in the format <Path\Filename.Extension>. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\WAF_changes_$(Get-Date -format yyyy-MM-dd_HH-mm-ss).log. Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to download the change log file to, followed by the filename and extension, in the format <Path\Filename.Extension>. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\WAF_changes_$(Get-Date -format yyyy-MM-dd_HH-mm-ss).log. Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-WafChangeLog -Path C:\WAFLogs\ExampleFileName.log + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Export-WafCustomRuleData + + Allows you to download an AFP custom rule data file to your local machine. + + + + + Export + WafCustomRuleData + + + + Allows you to download an AFP custom rule data file to your local machine. + + + + Export-WafCustomRuleData + + Path + + The path to download the file to. You can either specify a path or a path and filename. + If the parameter Path does not contain a filename but only a path and the RuleDataName parameter is not null, the path will be set to the value path/RuleDataName. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\WafCustomRuleData_$(Get-Date -format yyyy-MM-dd_HH-mm-ss). Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + + RuleDataName + + The filename of the custom rule data file, followed by the extension (.data). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Export-WafCustomRuleData + + Path + + The path to download the file to. You can either specify a path or a path and filename. + If the parameter Path does not contain a filename but only a path and the RuleDataName parameter is not null, the path will be set to the value path/RuleDataName. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\WafCustomRuleData_$(Get-Date -format yyyy-MM-dd_HH-mm-ss). Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + + RuleDataName + + The filename of the custom rule data file, followed by the extension (.data). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to download the file to. You can either specify a path or a path and filename. + If the parameter Path does not contain a filename but only a path and the RuleDataName parameter is not null, the path will be set to the value path/RuleDataName. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\WafCustomRuleData_$(Get-Date -format yyyy-MM-dd_HH-mm-ss). Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + String + + + + + + RuleDataName + + The filename of the custom rule data file, followed by the extension (.data). + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-WafCustomRuleData -Filename modsecurity_35_bad_robots -Path C:\rules\badrobots1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Export-WafCustomRuleSet + + Download a Web Application Firewall (WAF) custom rule file. + + + + + Export + WafCustomRuleSet + + + + Download the specified rule file to the specified path. + + + + Export-WafCustomRuleSet + + Path + + The path to download the file to. You can either specify a path or a path and filename. + If the parameter Path does not contain a filename but only a path and the RuleDataName parameter is not null, the path will be set to the value path/RuleDataName. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\WafCustomRuleSet_$(Get-Date -format yyyy-MM-dd_HH-mm-ss). Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + + RuleSetName + + The filename of the custom rule. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Export-WafCustomRuleSet + + Path + + The path to download the file to. You can either specify a path or a path and filename. + If the parameter Path does not contain a filename but only a path and the RuleDataName parameter is not null, the path will be set to the value path/RuleDataName. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\WafCustomRuleSet_$(Get-Date -format yyyy-MM-dd_HH-mm-ss). Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + + RuleSetName + + The filename of the custom rule. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to download the file to. You can either specify a path or a path and filename. + If the parameter Path does not contain a filename but only a path and the RuleDataName parameter is not null, the path will be set to the value path/RuleDataName. + If you do not specify a path, the default path is $Env:SystemRoot\Temp\WafCustomRuleSet_$(Get-Date -format yyyy-MM-dd_HH-mm-ss). Usually the $Env:SystemRoot is C:\Windows. Note that the C:\Windows\Temp must exist and the user must have write access to it in order to save the file in that folder. If not the cmdlet will fail. + + String + + String + + + + + + RuleSetName + + The filename of the custom rule. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-WafCustomRuleSet -Filename modsecurity_crs_40_generic_attacks -Path C:\t\ExportedRule + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + FlushSsoCache + + WARNING: This function is deprecated. Use the following command instead: +Clear-SSOCache + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Clear-SSOCache + + + + FlushSsoCache + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + FlushSsoCache + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-AdaptiveCheck + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcAdaptiveHealthCheck + + + + + Get + AdaptiveCheck + + + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcAdaptiveHealthCheck + + + + Get-AdaptiveCheck + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdaptiveCheck + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-AdcAdaptiveHealthCheck + + Allows you to view the values of the Adaptive Health Checking options. + + + + + Get + AdcAdaptiveHealthCheck + + + + Allows you to view the values of the Adaptive Health Checking options. + + + + Get-AdcAdaptiveHealthCheck + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcAdaptiveHealthCheck + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcAdaptiveHealthCheck + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +AdaptiveURL : /load +AdaptivePort : 80 +AdaptiveInterval : 7 +MinPercent : 5 + + + + + + + + + + + + + + + + + Get-AdcContentRule + + Returns configured rules on the LoadMaster and the values of the associated options. + + + + + Get + AdcContentRule + + + + Returns configured rules on the LoadMaster and the values of the associated options. You can specify all the configured rules, a specific rule or rules of a specific type. + + + + Get-AdcContentRule + + RuleName + + Specifies the name of the rule to retrieve. + + String + + + RuleType + + Specifies the type of rule to retrieve from the LoadMaster. +Options are: + - MatchContentRule + - AddHeaderRule + - DeleteHeaderRule + - ReplaceHeaderRule + - ModifyURLRule + + String + + + All + + Gets all rules defined on the LoadMaster. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcContentRule + + RuleName + + Specifies the name of the rule to retrieve. + + String + + + RuleType + + Specifies the type of rule to retrieve from the LoadMaster. +Options are: + - MatchContentRule + - AddHeaderRule + - DeleteHeaderRule + - ReplaceHeaderRule + - ModifyURLRule + + String + + + All + + Gets all rules defined on the LoadMaster. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RuleName + + Specifies the name of the rule to retrieve. + + String + + String + + + + + + RuleType + + Specifies the type of rule to retrieve from the LoadMaster. +Options are: + - MatchContentRule + - AddHeaderRule + - DeleteHeaderRule + - ReplaceHeaderRule + - ModifyURLRule + + String + + String + + + + + + All + + Gets all rules defined on the LoadMaster. + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcContentRule -Type MatchContentRule + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{ContentRules=} +Param........: @{MatchContentRule=} +MatchContentRule : @{Name=Example3; Pattern=ExamplePattern2; MatchType=Regex; AddHost=N; Negate=N; CaseIndependent=N; IncludeQuery=N; Header=; + MustFail=N} + + + + + + + + + + + + + + + + + Get-AdcL7Configuration + + Allows you to view the values of Layer 7 Configuration options. + + + + + Get + AdcL7Configuration + + + + Allows you to view the values of Layer 7 Configuration options. + + + + Get-AdcL7Configuration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcL7Configuration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcL7Configuration -LoadBalancer 172.21.59.189 -LBPort 8443 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{AdcL7Configuration=} +Param........: @{ScalingOver64KConnections=no; AlwaysCheckPersist=Yes - Accept Changes; AddPortToActiveCookie=no; RFCConform=yes; CloseOnError=no; AddVi +aHeaderInCacheResponses=no; RSAreLocal=no; DropOnRSFail=no; DropAtDrainEnd=no; L7AuthTimeoutSecs=30; L7ClientTokenTimeoutSecs=120; L7ConnectionDrainTime +outSecs=300; AdditionalL7Header=X-ClientSide; OneHundredContinueHandling=RFC-2616 Compliant; AllowEmptyPosts=no; AllowEmptyHttpHeaders=no; ForceComplete +RSMatch=no; SlowStart=0; ShareSubVSPersistance=no} + + +ScalingOver64KConnections : no +AlwaysCheckPersist : Yes - Accept Changes +AddPortToActiveCookie : no +RFCConform : yes +CloseOnError : no +AddViaHeaderInCacheResponses : no +RSAreLocal : no +DropOnRSFail : no +DropAtDrainEnd : no +L7AuthTimeoutSecs : 30 +L7ClientTokenTimeoutSecs : 120 +L7ConnectionDrainTimeoutSecs : 300 +AdditionalL7Header : X-ClientSide +OneHundredContinueHandling : RFC-2616 Compliant +AllowEmptyPosts : no +AllowEmptyHttpHeaders : no +ForceCompleteRSMatch : no +SlowStart : 0 +ShareSubVSPersistance : no + + + + + + + + + + + + + + + + + Get-AdcL7LogInsightSplitConfiguration + + Displays the log split interval value. + + + + + Get + AdcL7LogInsightSplitConfiguration + + + + Displays the log split interval value. + + + + Get-AdcL7LogInsightSplitConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcL7LogInsightSplitConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcL7LogInsightSplitConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{AdcL7Configuration=} +Param........: @{ScalingOver64KConnections=no; AlwaysCheckPersist=Yes - Accept Changes; AddPortToActiveCookie=no; RFCConform=yes; CloseOnError=no; AddVi +aHeaderInCacheResponses=no; RSAreLocal=no; DropOnRSFail=no; DropAtDrainEnd=no; L7AuthTimeoutSecs=30; L7ClientTokenTimeoutSecs=120; L7ConnectionDrainTime +outSecs=300; AdditionalL7Header=X-ClientSide; OneHundredContinueHandling=RFC-2616 Compliant; AllowEmptyPosts=no; AllowEmptyHttpHeaders=no; ForceComplete +RSMatch=no; SlowStart=0; ShareSubVSPersistance=no} +ScalingOver64KConnections : no +AlwaysCheckPersist : Yes - Accept Changes +AddPortToActiveCookie : no +RFCConform : yes +CloseOnError : no +AddViaHeaderInCacheResponses : no +RSAreLocal : no +DropOnRSFail : no +DropAtDrainEnd : no +L7AuthTimeoutSecs : 30 +L7ClientTokenTimeoutSecs : 120 +L7ConnectionDrainTimeoutSecs : 300 +AdditionalL7Header : X-ClientSide +OneHundredContinueHandling : RFC-2616 Compliant +AllowEmptyPosts : no +AllowEmptyHttpHeaders : no +ForceCompleteRSMatch : no +SlowStart : 0 +ShareSubVSPersistance : no + + + + + + + + + + + + + + + + + Get-AdcRealServer + + Returns a list of all Real Servers and their settings. + + + + + Get + AdcRealServer + + + + Returns a list of all Real Servers and their settings. + + + + Get-AdcRealServer + + VirtualService + + The address of the relevant Virtual Service. + + String + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The ID number of the relevant Virtual Service. + + Int32 + + + RealServer + + The address of the relevant Real Server, if retrieving details about a particular Real Server. + + String + + + RSPort + + The port number of the relevant Real Server, if retrieving details about a particular Real Server. + + Int32 + + + RSIndex + + The ID number of the relevant Real Server, if retrieving details about a particular Real Server. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcRealServer + + VirtualService + + The address of the relevant Virtual Service. + + String + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The ID number of the relevant Virtual Service. + + Int32 + + + RealServer + + The address of the relevant Real Server, if retrieving details about a particular Real Server. + + String + + + RSPort + + The port number of the relevant Real Server, if retrieving details about a particular Real Server. + + Int32 + + + RSIndex + + The ID number of the relevant Real Server, if retrieving details about a particular Real Server. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The address of the relevant Virtual Service. + + String + + String + + + + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + String + + + + + + VSIndex + + The ID number of the relevant Virtual Service. + + Int32 + + Int32 + + + + + + RealServer + + The address of the relevant Real Server, if retrieving details about a particular Real Server. + + String + + String + + + + + + RSPort + + The port number of the relevant Real Server, if retrieving details about a particular Real Server. + + Int32 + + Int32 + + + + + + RSIndex + + The ID number of the relevant Real Server, if retrieving details about a particular Real Server. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcRealServer -VirtualService 10.154.11.181 -VSPort 443 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Rs=} +Param........: @{Status=Down; VSIndex=1; RsIndex=4; Addr=10.154.11.84; Port=443; DnsName=; Forward=route; Weight=1000; Limit=0; Follow=0; Enable=Y; Crit +ical=N} + + + + + + + + + + + + + + + + + Get-AdcServiceHealth + + Allows you to see the values of the Service Check options. + + + + + Get + AdcServiceHealth + + + + Allows you to see the values of the Service Check options. + + + + Get-AdcServiceHealth + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcServiceHealth + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcServiceHealth + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{AdcServiceHealth=} +CheckInterval : 9 +ConnectionTimeout : 4 +RetryCount : 2 + + + + + + + + + + + + + + + + + Get-AdcSubVirtualService + + Retrieve details for a SubVS. + + + + + Get + AdcSubVirtualService + + + + This command returns details of the specified SubVS. + + + + Get-AdcSubVirtualService + + SubVSIndex + + The ID number of the SubVS to retrieve details for. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcSubVirtualService + + SubVSIndex + + The ID number of the SubVS to retrieve details for. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SubVSIndex + + The ID number of the SubVS to retrieve details for. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcSubVirtualService + + + + + Example: +Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{VS=} +Param........: @{Status=Down; Index=3; VSPort=0; Layer=7; Enable=Y; SSLReverse=N; SSLReencrypt=N; Intercept=N; InterceptOpts=; AlertThreshold=0; Transac +tionlimit=0; Transparent=N; SubnetOriginating=Y; ServerInit=0; StartTLSMode=0; Idletime=660; Cache=N; Compress=N; Verify=0; UseforSnat=N; ForceL4=N; For +ceL7=Y; MultiConnect=N; ClientCert=0; ErrorCode=0; CheckUse1.1=N; MatchLen=0; CheckUseGet=0; SSLRewrite=0; VStype=http; FollowVSID=0; Protocol=tcp; Sche +dule=rr; CheckType=http; PersistTimeout=0; CheckPort=0; NRules=0; NRequestRules=0; NResponseRules=0; NPreProcessRules=0; EspEnabled=N; InputAuthMode=0; +OutputAuthMode=0; MasterVS=0; MasterVSID=1; IsTransparent=2; AddVia=0; QoS=0; TlsType=0; NeedHostName=N; OCSPVerify=N; AllowHTTP2=N; EnhancedHealthCheck +s=N; RsMinimum=0; NumberOfRSs=0} + + + + + + + + + + + + + + + + + Get-AdcTotalVirtualService + + Retrieve details about the Virtual Services, SubVSs and Real Servers. + + + + + Get + AdcTotalVirtualService + + + + This command returns the total number of Virtual Services, SubVSs and Real Servers and also returns the total number of each that are up, down and disabled. + + + + Get-AdcTotalVirtualService + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcTotalVirtualService + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcTotalVirtualService + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +VSTotals : @{Total=6; Up=2; Down=4; Disabled=0} +SUBVSTotals : @{Total=32; Up=0; Down=32; Disabled=0} +RSTotals : @{Total=1; Up=0; Down=0; Disabled=1} + + + + + + + + + + + + + + + + + Get-AdcVirtualService + + Get details for configured Virtual Services. + + + + + Get + AdcVirtualService + + + + Returns details of all Virtual Services on the LoadMaster. If details of a specific Virtual Service are entered in the parameters, only details relating to that Virtual Service will be displayed. + + + + Get-AdcVirtualService + + VirtualService + + The IP address of the Virtual Service to be displayed. + + String + + + VSPort + + The port of the Virtual Service to retrieve the details for. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to retrieve the details for. + + String + + + VSIndex + + The index number of the Virtual Service to be displayed. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcVirtualService + + VirtualService + + The IP address of the Virtual Service to be displayed. + + String + + + VSPort + + The port of the Virtual Service to retrieve the details for. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to retrieve the details for. + + String + + + VSIndex + + The index number of the Virtual Service to be displayed. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The IP address of the Virtual Service to be displayed. + + String + + String + + + + + + VSPort + + The port of the Virtual Service to retrieve the details for. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the Virtual Service to retrieve the details for. + + String + + String + + + + + + VSIndex + + The index number of the Virtual Service to be displayed. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + The port of the Virtual Service to be displayed. + + int32 + + int32 + + + + + + Protocol + + The protocol of the Virtual Service to be displayed. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcVirtualService + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Status=Down; Index=4; VSAddress=10.154.11.90; VSPort=80; Layer=7; Enable=Y; SSLReverse=N; SSLReencrypt=N; Intercept=N; InterceptOpts=; +AlertThreshold=0; Transactionlimit=0; Transparent=N; SubnetOriginating=Y; ServerInit=0; StartTLSMode=0; Idletime=660; Cache=N; Compress=N; Verify=0; Use +forSnat=N; ForceL4=N; ForceL7=Y; MultiConnect=N; ClientCert=0; ErrorCode=0; CheckUse1.1=N; MatchLen=0; CheckUseGet=0; SSLRewrite=0; VStype=http; FollowV +SID=0; Protocol=tcp; Schedule=rr; CheckType=http; PersistTimeout=0; CheckPort=0; NRules=0; NRequestRules=0; NResponseRules=0; NPreProcessRules=0; EspEna +bled=N; InputAuthMode=0; OutputAuthMode=0; MasterVS=0; MasterVSID=0; IsTransparent=2; AddVia=0; QoS=0; TlsType=0; NeedHostName=N; OCSPVerify=N; AllowHTT +P2=N; EnhancedHealthChecks=N; RsMinimum=0; NumberOfRSs=0} +Param........: @{Status=Down; Index=4; VSAddress=10.154.11.90; VSPort=80; Layer=7; Enable=Y; SSLReverse=N; SSLReencrypt=N; Intercept=N; InterceptOpts=; +AlertThreshold=0; Transactionlimit=0; Transparent=N; SubnetOriginating=Y; ServerInit=0; StartTLSMode=0; Idletime=660; Cache=N; Compress=N; Verify=0; Use +forSnat=N; ForceL4=N; ForceL7=Y; MultiConnect=N; ClientCert=0; ErrorCode=0; CheckUse1.1=N; MatchLen=0; CheckUseGet=0; SSLRewrite=0; VStype=http; FollowV +SID=0; Protocol=tcp; Schedule=rr; CheckType=http; PersistTimeout=0; CheckPort=0; NRules=0; NRequestRules=0; NResponseRules=0; NPreProcessRules=0; EspEna +bled=N; InputAuthMode=0; OutputAuthMode=0; MasterVS=0; MasterVSID=0; IsTransparent=2; AddVia=0; QoS=0; TlsType=0; NeedHostName=N; OCSPVerify=N; AllowHTT +P2=N; EnhancedHealthChecks=N; RsMinimum=0; NumberOfRSs=0} + + +Status : Down +Index : 4 +VSAddress : 10.154.11.90 +VSPort : 80 +Layer : 7 +Enable : Y +SSLReverse : N +SSLReencrypt : N +Intercept : N +InterceptOpts : @{Opt=System.Object[]} +AlertThreshold : 0 +Transactionlimit : 0 +Transparent : N +SubnetOriginating : Y +ServerInit : 0 +StartTLSMode : 0 +Idletime : 660 +Cache : N +Compress : N +Verify : 0 +UseforSnat : N +ForceL4 : N +ForceL7 : Y +MultiConnect : N +ClientCert : 0 +ErrorCode : 0 +CheckUse1.1 : N +MatchLen : 0 +CheckUseGet : 0 +SSLRewrite : 0 +VStype : http +FollowVSID : 0 +Protocol : tcp +Schedule : rr +CheckType : http +PersistTimeout : 0 +CheckPort : 0 +NRules : 0 +NRequestRules : 0 +NResponseRules : 0 +NPreProcessRules : 0 +EspEnabled : N +InputAuthMode : 0 +OutputAuthMode : 0 +MasterVS : 0 +MasterVSID : 0 +IsTransparent : 2 +AddVia : 0 +QoS : 0 +TlsType : 0 +NeedHostName : N +OCSPVerify : N +AllowHTTP2 : N +EnhancedHealthChecks : N +RsMinimum : 0 +NumberOfRSs : 0 + + + + + + + + + + + + + + + + + Get-AdcVsWafRule + + Retrieve the status of a Web Application Firewall (WAF) rule. + + + + + Get + AdcVsWafRule + + + + This command shows if the specified WAF rule is active/inactive. + + + + Get-AdcVsWafRule + + VS + + The address of the relevant Virtual Service. + + String + + + VSPort + + The port of the relevant Virtual Service. + + String + + + VSProtocol + + The port of the relevant Virtual Service. + + String + + + Rule + + The <RuleName> must be preceded with the relevant letter or word and a forward slash. The letter/word used depends on the type of rule being checked: +C or Custom +Z or ApplicationGeneric +A or ApplicationSpecific +G or Generic + This is case sensitive. The letter/word needs to be in in the correct case for the command to work. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AdcVsWafRule + + VS + + The address of the relevant Virtual Service. + + String + + + VSPort + + The port of the relevant Virtual Service. + + String + + + VSProtocol + + The port of the relevant Virtual Service. + + String + + + Rule + + The <RuleName> must be preceded with the relevant letter or word and a forward slash. The letter/word used depends on the type of rule being checked: +C or Custom +Z or ApplicationGeneric +A or ApplicationSpecific +G or Generic + This is case sensitive. The letter/word needs to be in in the correct case for the command to work. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VS + + The address of the relevant Virtual Service. + + String + + String + + + + + + VSPort + + The port of the relevant Virtual Service. + + String + + String + + + + + + VSProtocol + + The port of the relevant Virtual Service. + + String + + String + + + + + + Rule + + The <RuleName> must be preceded with the relevant letter or word and a forward slash. The letter/word used depends on the type of rule being checked: +C or Custom +Z or ApplicationGeneric +A or ApplicationSpecific +G or Generic + This is case sensitive. The letter/word needs to be in in the correct case for the command to work. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AdcVsWafRule -Rule G/ip_reputation -VS 10.35.47.16 -VSPort 80 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +ip_reputation : Inactive + + + + + + + + + + + + + + + + + Get-AFEConfiguration + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAFEConfiguration + + + + + Get + AFEConfiguration + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAFEConfiguration + + + + Get-AFEConfiguration + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AFEConfiguration + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-AllParameters + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAllParameters + + + + + Get + AllParameters + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAllParameters + + + + Get-AllParameters + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AllParameters + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AllParameters + + + + + Example Output: +dfltgw : 172.20.0.1 +snat : no +hamode : 0 +sshaccess : yes +sshport : 22 +wuiaccess : yes +wuiiface : 0 +wuiport : 443 +sshiface : all +hoverhelp : yes +routefilter : no +transparent : no +expect100 : 0 +localbind : no +addcookieport : no +subnetoriginating : yes +nonlocalrs : no +multigw : no +addforwardheader : 0 +conntimeout : 660 +authtimeout : 30 +finalpersist : 300 +tcptimestamp : no +paranoia : 1 +cachesize : 100 +hostcache : no +resetclose : no +rfcconform : yes +keepalive : yes +backupday : 0 +backupenable : no +backuphour : 0 +backupminute : 0 +backuppassword : ******** +enableapi : yes +emailpassword : ******** +emailsslmode : 0 +emailport : 0 +addvia : no +allowupload : no +dropatdrainend : no +droponfail : no +closeonerror : no +limitinput : 0 +rsarelocal : no +slowstart : 0 +subnetorigin : yes +syslogcritical : 10.35.0.190 +syslogemergency : 10.35.0.190 +syslogerror : 10.35.0.190 +sysloginfo : 10.35.0.190 +syslognotice : 10.35.0.190 +syslogwarn : 10.35.0.190 +sslrenegotiate : no +dnssecclient : yes +emailenable : no +irqbalance : no +snmpenable : no +snmpV3enable : no +snmpv3userpasswd : ******** +snmpHaTrap : no +snmptrapenable : no +motd : <h1>This device is being managed by KEMP360</h1> +wuidisplaylines : 0 +linearesplogs : no +onlydefaultroutes : no +sessionauthmode : 0 +sessionidletime : 0 +sessionmaxfailattempts : 0 +sessioncontrol : no +sessionbasicauth : yes +sessionconcurrent : 0 +adminclientaccess : 0 +sessionlocalauth : no +ntpkeyid : 0 +ntpkeysecret : ******** +netconsoleinterface : 0 +namserver : 10.154.11.192 +radiusbackupport : 0 +radiusbackupsecret : ******** +radiusport : 0 +radiussecret : ******** +radiusrevalidateinterval : 60 +ldapsecurity : 0 +ldaprevalidateinterval : 60 +geosshport : 22 +hostname : lb100 +admincert : No Admin Certificate assigned + +localcert : Only available in HA mode + +time : Tue, 15 Mar 16 15:08:38 UTC +serialnumber : 1051082 + +version : 7.1.35.0.12508.DEV +Tethering : yes +multihomedwui : no +logsplitinterval : 10 +allowemptyposts : no +OCSPPort : 0 +OCSPUseSSL : no +OCSPOnServerFail : no +L7LimitInput : 0 +sdnstatsmode : 0 +dhkeysize : 2048 +WUITLSProtocols : 0 +WUICipherset : Intermediate_compatibility + + + + + + + + + + + + + + + + + Get-AslLicenseType + + Retrieve a list of available license types. + + + + + Get + AslLicenseType + + + + Retrieve a list of available license types when using Activation Server functionality. + + + + Get-AslLicenseType + + aslipaddr + + Specify the Activation Server IP address (the IP address of the KEMP 360 Central machine being used to activate the license). + + String + + + aslport + + Specify the Activation Server port (the port of the KEMP 360 Central machine being used to activate the license). + + Int32 + + + aslname + + Specify the Activation Server name (the name of the KEMP 360 Central machine being used to activate the license). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AslLicenseType + + aslipaddr + + Specify the Activation Server IP address (the IP address of the KEMP 360 Central machine being used to activate the license). + + String + + + aslport + + Specify the Activation Server port (the port of the KEMP 360 Central machine being used to activate the license). + + Int32 + + + aslname + + Specify the Activation Server name (the name of the KEMP 360 Central machine being used to activate the license). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + aslipaddr + + Specify the Activation Server IP address (the IP address of the KEMP 360 Central machine being used to activate the license). + + String + + String + + + + + + aslport + + Specify the Activation Server port (the port of the KEMP 360 Central machine being used to activate the license). + + Int32 + + Int32 + + + + + + aslname + + Specify the Activation Server name (the name of the KEMP 360 Central machine being used to activate the license). + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AslLicenseType -LoadBalancer 10.35.41.63 -Verbose -aslipaddr 10.35.41.53 -aslport 443 + + + + + Example Output: +Full response: Command successfully executed. +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{OrderID=; AvailableLicenses=1; Licenses=} +Param........: +id : 0be64d5fb077d757c691e6745cf68c6c035e9635 +name : VLM-5000 ESP GEO with Evaluation + WAF +description : VLM-5000 ESP GEO with Evaluation + WAF +available : 1 +tethered : False + + + + + + + + + + + + + + + + + Get-AwsHAOption + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAwsHAConfiguration + + + + + Get + AwsHAOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAwsHAConfiguration + + + + Get-AwsHAOption + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AwsHAOption + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AwsHAOption + + + + + Example Output: +AwsHA +master,192.168.1.1,8443 + + + + + + + + + + + + + + + + + Get-AzureHAOption + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAzureHAConfiguration + + + + + Get + AzureHAOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAzureHAConfiguration + + + + Get-AzureHAOption + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-AzureHAOption + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-AzureHAOption + + + + + Example Output: +(This is a legacy command and has been replaced with the Get-ClusterAzureHAConfiguration command.) + + + + + + + + + + + + + + + + + Get-BackupOption + + WARNING: This function is deprecated. Use the following command instead: +Get-LmBackupConfiguration + + + + + Get + BackupOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmBackupConfiguration + + + + Get-BackupOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-BackupOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GetCipherset + + WARNING: This function is deprecated. Use the following command instead: +Get-TlsCipherSet + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-TlsCipherSet + + + + GetCipherset + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + GetCipherset + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-ClusterStatus + + Retrieves the status of the cluster. + + + + + Get + ClusterStatus + + + + Retrieves the status of the cluster. + + + + Get-ClusterStatus + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-ClusterStatus + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-ClusterStatus + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +{SharedAddress=172.16.178.178; Node=System.Object[]} + +$get.Data.ClusterConfiguration + +SharedAddress Node +------------- ---- +172.16.178.178 {@ +{Id=1; Address=172.16.176.1; Enabled=1; Status=5} + +, @ +{Id=2; Address=172.16.178.1; Enabled=0; Status=2} + +, @{Id=3; Add... + + +$get.Data.ClusterConfiguration.Node + +Id Address Enabled Status +– ------- ------- ------ +1 172.16.176.1 1 5 +2 172.16.178.1 0 2 +3 172.16.191.1 0 2 + +$get.Data.ClusterConfiguration.SharedAddress +172.16.178.178 + + + + + + + + + + + + + + + + + Get-DateTimeOption + + WARNING: This function is deprecated. Use the following command instead: +Get-LmDateTimeConfiguration + + + + + Get + DateTimeOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmDateTimeConfiguration + + + + Get-DateTimeOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-DateTimeOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-DebugOption + + WARNING: This function is deprecated. Use the following command instead: +Get-LmDebugConfiguration + + + + + Get + DebugOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmDebugConfiguration + + + + Get-DebugOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-DebugOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-DNSConfiguration + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkDNSConfiguration + + + + + Get + DNSConfiguration + + + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkDNSConfiguration + + + + Get-DNSConfiguration + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-DNSConfiguration + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-EmailOption + + WARNING: This function is deprecated. Use the following command instead: +Get-LogEmailConfiguration + + + + + Get + EmailOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LogEmailConfiguration + + + + Get-EmailOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-EmailOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-GeoCluster + + Display all GEO clusters, or one specific GEO cluster. + + + + + Get + GeoCluster + + + + Run this command without the IP parameter to display all all clusters. Specify an IP address in order to display details for one specific cluster. + + + + Get-GeoCluster + + ClusterIp + + The IP address of the cluster to retrieve. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GeoCluster + + ClusterIp + + The IP address of the cluster to retrieve. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + The IP address of the cluster to retrieve. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + IP + + To display details for one particular GEO cluster, specify the IP address of the cluster using this parameter. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoCluster -ClusterIp 10.34.52.55 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Index : 1 +Status : Up +Name : ExampleCluster +ClusterVSAddress : +IPAddress : 10.34.52.55 +Checker : none +CheckerPort : 80 +Type : default +Enable : Y +LocationLatitude : +LocationLongitude : + + + + + + + + + + + + + + + + + Get-GeoCustomLocation + + Retrieves a list of any existing custom locations. + + + + + Get + GeoCustomLocation + + + + Retrieves a list of any existing custom locations. + + + + Get-GeoCustomLocation + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GeoCustomLocation + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoCustomLocation + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Name : Limerick + + + + + + + + + + + + + + + + + Get-GeoDNSSECConfiguration + + Retrieve the DNSSEC settings. + + + + + Get + GeoDNSSECConfiguration + + + + Retrieve the DNSSEC settings. + + + + Get-GeoDNSSECConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GeoDNSSECConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoDNSSECConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + +PublicKey +--------- +ExampleZone. IN DNSKEY 257 3 8 AwEAAeRfz2/QoPCphUgG2nK/DK8u8xxbseh64lDRydZHbGRTM8XjXd6v +lt9peqGFqulejJe0ojI0KrBVZqwkPkEuwujqL+zaYG6/SfW0xRdzEdP SF... + + + + + + + + + + + + + + + + + Get-GeoFQDN + + Display settings for either all FQDNs, or a specific FQDN. + + + + + Get + GeoFQDN + + + + Set the FQDN parameter to display details for a specific FQDN. To display details for all FQDNs, do not use the FQDN parameter. + + + + Get-GeoFQDN + + FQDN + + To display details for a specific FQDN - specify the name of the FQDN using this parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GeoFQDN + + FQDN + + To display details for a specific FQDN - specify the name of the FQDN using this parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + To display details for a specific FQDN - specify the name of the FQDN using this parameter. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoFQDN -FQDN Example.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +SelectionCriteria : RoundRobin +SiteRecoveryMode : auto +Mapping : 0 +LocalSettings : 0 +UnanimousChecks : N +Failover : N +SiteFailureDelay : 0 +Fqdn : Example.com. +PrivateRequest : 0 +PublicRequest : 0 + + + + + + + + + + + + + + + + + Get-GeoIPBlacklistDatabaseConfiguration + + Retrieve the GEO IP blacklist settings. + + + + + Get + GeoIPBlacklistDatabaseConfiguration + + + + Run this command to retrieve the GEO IP blacklist settings, such as the: +- Date of the last update +- Date of the last install +- Auto-update setting +- Auto-install settings + + + + Get-GeoIPBlacklistDatabaseConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GeoIPBlacklistDatabaseConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoIPBlacklistDatabaseConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + +AutoUpdate : yes +LastUpdated : 03 May 2017 14:55:09 +AutoInstall : no +InstallTimeHour : 4 +LastInstalled : 03 May 2017 14:55:19 + + + + + + + + + + + + + + + + + Get-GeoIpRange + + Displays details of all IP ranges, or one specific IP range. + + + + + Get + GeoIpRange + + + + To retrieve details for a specific IP range, set the IP parameter. To retrieve details for all IP ranges, do not use the IP parameter. + + + + Get-GeoIpRange + + IP + + Specify the IP address of the range to display details for. Do not use this parameter if you want to retrieve details for all IP ranges. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GeoIpRange + + IP + + Specify the IP address of the range to display details for. Do not use this parameter if you want to retrieve details for all IP ranges. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + Specify the IP address of the range to display details for. Do not use this parameter if you want to retrieve details for all IP ranges. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoIpRange + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Index : 1 +Ip : 10.154.11.55 +IPAddress : 10.154.11.55 +Mask : 32 +Country : +IsCustom : N + + + + + + + + + + + + + + + + + Get-GeoIPWhitelist + + Retrieve the contents of the user-defined GEO IP whitelist. + + + + + Get + GeoIPWhitelist + + + + The whitelist overrides the blacklist. + + + + Get-GeoIPWhitelist + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GeoIPWhitelist + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoMiscParameter + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{GeoWhiteList=} +Param........: @{addr=System.Object[]} + +addr +---- +{20.54.56.26/32, 12.45.54.33/32} + + + + + + + + + + + + + + + + + Get-GeoMiscParameter + + Displays the values of the miscellaneous GEO parameters. + + + + + Get + GeoMiscParameter + + + + Shows settings relating to Source of Authority, Resource Check Parameters and Stickiness. + + + + Get-GeoMiscParameter + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GeoMiscParameter + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoMiscParameter + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +soa : @{TTL=10; persist=60; Zone=; SourceOfAuthority=; NameSrv=; SOAEmail=} +check : @{CheckInterval=120; ConnTimeout=20; RetryAttempts=2} + + + + + + + + + + + + + + + + + Get-GeoPartnerStatus + + Returns the status of all configured GEO partners. + + + + + Get + GeoPartnerStatus + + + + The status returned is either: + - Up + - Down +- Empty: An empty list is returned if there are no GEO partners configured. + - Unknown: If a status for a particular partner is not known + + + + Get-GeoPartnerStatus + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GeoPartnerStatus + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoPartnerStatus + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Address : 10.154.11.180 +Status : Down + + + + + + + + + + + + + + + + + Get-GlobalPacketFilterACL + + Displays the addresses on the global black or white list. + + + + + Get + GlobalPacketFilterACL + + + + Lists the host and network IP addresses on the global black or white access control list. Note that black and white lists are only enabled when packet filtering is enabled. + + + + Get-GlobalPacketFilterACL + + Type + + Specifies the access control list type: "black" or "white". + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-GlobalPacketFilterACL + + Type + + Specifies the access control list type: "black" or "white". + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Type + + Specifies the access control list type: "black" or "white". + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GlobalPacketFilterACL -Type black + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Blacklist=} +Param........: @{addr=10.154.11.12/32; comment=Example comment} + + + + + + + + + + + + + + + + + Get-HAOption + + WARNING: This function is deprecated. Use the following command instead: +Get-LmHAConfiguration + + + + + Get + HAOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmHAConfiguration + + + + Get-HAOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-HAOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-HostsEntry + + Lists the existing hosts for local resolution. + + + + + Get + HostsEntry + + + + This command returns a list of host IP addresses and host FQDNs for local resolution. + + + + Get-HostsEntry + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-HostsEntry + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-HostsEntry + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{LocalHosts=} +Param........: @{HostIPAddress=10.154.33.233; HostFqdn=example.com} +HostIPAddress : 10.154.33.233 +HostFqdn : example.com + + + + + + + + + + + + + + + + + Get-Interface + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkInterface + + + + + Get + Interface + + + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkInterface + + + + Get-Interface + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-Interface + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-L7Configuration + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcL7Configuration + + + + + Get + L7Configuration + + + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcL7Configuration + + + + Get-L7Configuration + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-L7Configuration + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-LdapEndpoint + + Retrieve details for existing LDAP endpoints. + + + + + Get + LdapEndpoint + + + + If you do not specify a value in the name parameter the output will display details of all existing endpoints. Specify a name to retreive details for that specific LDAP endpoint. + + + + Get-LdapEndpoint + + Name + + The name of the LDAP endpoint to retreive details for. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LdapEndpoint + + Name + + The name of the LDAP endpoint to retreive details for. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the LDAP endpoint to retreive details for. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LdapEndpoint + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{LDAPEndPoint=System.Object[]} +Param........: + + +name : EXAMPLE +vinterval : 60 +server : 10.154.11.103 10.154.11.104 +adminuser : ExampleUser +adminpass : ******** +LdapProtocol : Unencrypted +ReferralCount : 6 + +name : EXAMPLE2 +vinterval : 60 +server : 10.154.11.32 +adminuser : exampleuser +adminpass : ******** +LdapProtocol : StartTLS +ReferralCount : 0 + + + + + + + + + + + + + + + + + Get-LicenseAccessKey + + Allows you to get the access key of the LoadMaster. + + + + + Get + LicenseAccessKey + + + + Allows you to get the access key of the LoadMaster. + + + + Get-LicenseAccessKey + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LicenseAccessKey + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LicenseAccessKey + + + + + Example Output: +Full response: Command successfully executed. +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{AccessKey=mmw14-97w51-cr45g-88x5g} + + + + + + + + + + + + + + + + + Get-LicenseInfo + + Retrieves the license details for the LoadMaster. + + + + + Get + LicenseInfo + + + + Retrieves the license details for the LoadMaster. + + + + Get-LicenseInfo + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LicenseInfo + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + $get = Get-LicenseInfo -Credential bal -LoadBalancer 10.154.11.180 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{LicenseInfo=} +Param........: @{uuid=31159ab6-5da4-4b92-8ee2-b8922cc08dfe; ActivationDate=Tue Nov 15 10:32:34 UTC 2016; LicensedUntil=unlimited; SupportLevel=; Support +Until=none; LicenseType=; LicenseStatus=Single Perm; ApplianceModel=; MaxVS=0; MaxRS=0; Bandwidth=5000; TpsLimit=10000; HA=no; FirstHA=no; ModSecurity=n +o; AFE=yes; ViewAFE=yes; ESP=yes; IPSEC=0; SingleCPU=no; VLM=no; FreeLicense=no; Temporary=no; ASL=no; MandatoryTether=no; MultipleConnect=no} + + +uuid : 31159ab6-5da4-4b92-8ee2-b8922cc08dfe +ActivationDate : Tue Nov 15 10:32:34 UTC 2016 +LicensedUntil : unlimited +SupportLevel : +SupportUntil : none +LicenseType : +LicenseStatus : Single Perm +ApplianceModel : +MaxVS : 0 +MaxRS : 0 +Bandwidth : 5000 +TpsLimit : 10000 +HA : no +FirstHA : no +ModSecurity : no +AFE : yes +ViewAFE : yes +ESP : yes +IPSEC : 0 +SingleCPU : no +VLM : no +FreeLicense : no +Temporary : no +ASL : no +MandatoryTether : no +MultipleConnect : no + + + + + + + + + + + + + + + + + Get-LicenseType + + Retrieve a list of available license types for a particular KEMP ID. + + + + + Get + LicenseType + + + + If successful, the output provides a list of license types and associated IDs. The ID number is used when licensing using the Request-LicenseOnline command. + + + + Get-LicenseType + + KempId + + The KEMP ID (email address) to retrieve the license types for. + + String + + + Password + + The password for the KEMP ID being used. + + String + + + OrderId + + The Orderid parameter is only needed for Virtual LoadMasters. The Order ID is provided by KEMP after a license is purchased. + + String + + + http_proxy + + Specify the HTTP(S) proxy server and port, in the format <ProxyAddress>:<Port>. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username used to connect to the LoadMaster. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LicenseType + + KempId + + The KEMP ID (email address) to retrieve the license types for. + + String + + + Password + + The password for the KEMP ID being used. + + String + + + OrderId + + The Orderid parameter is only needed for Virtual LoadMasters. The Order ID is provided by KEMP after a license is purchased. + + String + + + http_proxy + + Specify the HTTP(S) proxy server and port, in the format <ProxyAddress>:<Port>. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + KempId + + The KEMP ID (email address) to retrieve the license types for. + + String + + String + + + + + + Password + + The password for the KEMP ID being used. + + String + + String + + + + + + OrderId + + The Orderid parameter is only needed for Virtual LoadMasters. The Order ID is provided by KEMP after a license is purchased. + + String + + String + + + + + + http_proxy + + Specify the HTTP(S) proxy server and port, in the format <ProxyAddress>:<Port>. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username used to connect to the LoadMaster. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LicenseType -KempId jbloggs@kemptechnologies.com -Password ExamplePassword -LoadBalancer 172.16.129.72 -Credential bal + + + + + Example Output: + +Full response: Command successfully executed. +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{name=VLM-5000 with Enterprise Plus subscription; available=1; tethered=0; id=69cc7829c122f7a1604d97c5224c56f596b4f718; LicenseSt... +Param........: +name : VLM-5000 with Enterprise Plus subscription +available : 1 +tethered : 0 +id : 69cc7829c122f7a1604d97c5224c56f596b4f718 +LicenseStatus : Temp License +description : VLM-5000 with Enterprise Plus subscription +BuyMoreAt : https://www.kemptechnologies.com/buy-me-now?KEMPID=jbloggs@kemptechnologies.com + + + + + + + + + + + -------------------------- Example (with Order ID) -------------------------- + + PS C:\> + + Get-LicenseType -KempId jbloggs@kemptechnologies.com -Password ExamplePassword -LoadBalancer 172.16.129.72 -Credential bal -OrderId ExampleOrderID + + + + + Example Output: +Full response: Command successfully executed. +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{id=2010d06f77b2d646677b1fd0b4688c019b66ddb7; name=VLM-200 with Enterprise Plus subscription; available=1; description=VLM-200 wi... +Param........: +id : 2010d06f77b2d646677b1fd0b4688c019b66ddb7 +name : VLM-200 with Enterprise Plus subscription +available : 1 +description : VLM-200 with Enterprise Plus subscription +tethered : False +LicenseStatus : Permanent License +BuyMoreAt : https://www.kemptechnologies.com/buy-me-now?KEMPID=jbloggs@kemptechnologies.com +id : b2eb3e9260958b57743fd1a2cf704915754085b7 +name : VLM-2000 with Enterprise Plus subscription +available : 1 +description : VLM-2000 with Enterprise Plus subscription +tethered : False +LicenseStatus : Permanent License +BuyMoreAt : https://www.kemptechnologies.com/buy-me-now?KEMPID=jbloggs@kemptechnologies.com +id : be9fbc4ca4f0f5e023809aa4fc7b399ed7bd0d76 +name : VLM-GEO with Enterprise Plus subscription +available : 1 +description : VLM-GEO with Enterprise Plus subscription +tethered : False +LicenseStatus : Permanent License +BuyMoreAt : https://www.kemptechnologies.com/buy-me-now?KEMPID=jbloggs@kemptechnologies.com +name : VLM-5000 with Enterprise Plus subscription +available : 1 +tethered : 0 +id : 69cc7829c122f7a1604d97c5224c56f596b4f718 +LicenseStatus : Temp License +description : VLM-5000 with Enterprise Plus subscription +BuyMoreAt : https://www.kemptechnologies.com/buy-me-now?KEMPID=jbloggs@kemptechnologies.com + + + + + + + + + + + + + + + + + Get-LmAddOn + + Displays a list of any add-on packages that are installed on the LoadMaster. + + + + + Get + LmAddOn + + + + Displays a list of any add-on packages that are installed on the LoadMaster. + + + + Get-LmAddOn + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmAddOn + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmAddOn + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Package=} +Param........: + +Name Installed Version Started +---- --------- ------- ------- +Vmtoolsd Thu Sep 15 05:58:56 2016 7.2.37.0.13719.DEV yes + + + + + + + + + + + + + + + + + Get-LmAFEConfiguration + + Allows you to view the values of Cache, Compression and IPS options. + + + + + Get + LmAFEConfiguration + + + + Allows you to view the values of Cache, Compression and IPS options. + + + + Get-LmAFEConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it.ster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmAFEConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it.ster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it.ster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmAFEConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + +Cachesize HostCache LimitInput DetectionLevel +--------- --------- ---------- -------------- +100 no 0 Default + + + + + + + + + + + + + + + + + Get-LmAllParameters + + Retrieve a list of all parameters that can be retrieved using the Get-LmParameter command. + + + + + Get + LmAllParameters + + + + Retrieve a list of all parameters that can be retrieved using the Get-LmParameter command and set using the Set-LmParameter command. + + + + Get-LmAllParameters + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmAllParameters + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + String + + + + + + LBPort + + The port of the load balancer. + + Int32 + + Int32 + + + + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + $get = Get-LmAllParameters + +$get + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{AllParameters=} +Param........: + + +dfltgw : 10.154.0.1 +snat : yes +hatimeout : 1 +hawait : 0 +haprefered : 0 +hamode : 1 +hastatus : standby +haif : 0 +havhid : 0 +hainitial : no +tcpfailover : no +cookieupdate : no +hal4update : no +hal7update : no +vmac : no +sshaccess : yes +sshport : 22 +wuiaccess : yes +mcast : 0 +wuiiface : 0 +wuiport : 443 +sshiface : all +hoverhelp : yes +routefilter : no +transparent : no +alwayspersist : 2 +expect100 : 0 +localbind : no +addcookieport : no +subnetoriginating : yes +nonlocalrs : no +multigw : no +addforwardheader : 0 +conntimeout : 660 +authtimeout : 30 +clienttokentimeout : 120 +finalpersist : 300 +tcptimestamp : no +paranoia : 1 +cachesize : 100 +hostcache : no +resetclose : no +rfcconform : yes +keepalive : yes +backupday : 0 +backupenable : yes +backuphour : 0 +backupminute : 0 +backuppassword : ******** +backupnetstat : yes +backupsecure : yes +backupident : ******** +enableapi : yes +emailuser : test +emaildomain : ExampleDomain +emailpassword : ******** +emailserver : 10.154.22.132 +emailsslmode : 1 +emailport : 80 +addvia : no +allowupload : no +dropatdrainend : no +droponfail : no +closeonerror : no +limitinput : 0 +rsarelocal : no +slowstart : 0 +subnetorigin : yes +sysloginfo : 10.154.153.94 +sslrenegotiate : no +dnssecclient : yes +emailenable : yes +irqbalance : no +snmpenable : yes +snmpV3enable : no +snmpv3userpasswd : ******** +snmpHaTrap : no +snmptrapenable : no +motd : &lt;h1&gt;This device is being managed by KEMP360&lt;/h1&gt; +wuidisplaylines : 0 +linearesplogs : no +onlydefaultroutes : no +sessionauthmode : 19 +sessionidletime : 0 +sessionmaxfailattempts : 0 +sessioncontrol : yes +sessionbasicauth : no +sessionconcurrent : 0 +adminclientaccess : 1 +sessionlocalauth : no +ntpkeyid : 0 +ntpkeysecret : ******** +netconsoleinterface : 0 +nameserver : 10.154.75.25 +namserver : 10.154.75.25 +wuildapep : EXAMPLE +geopartners : 10.154.11.190 +geosshport : 22 +geosshiface : 0 +hostname : lb100 +searchlist : KEMP.LAB.INTRA +admincert : No Admin Certificate assigned +localcert : No Local Admin Certificate assigned +time : Thu, 20 Apr 17 10:14:21 UTC +boottime : Tue, 11 Apr 17 13:36:17 UTC +activetime : Thu, 01 Jan 70 00:00:00 UTC +serialnumber : 446312 +version : 7.2.39.0.14938.DEV +Tethering : yes +multihomedwui : no +logsplitinterval : 10 +allowemptyposts : no +OCSPPort : 0 +OCSPUseSSL : no +OCSPOnServerFail : no +L7LimitInput : 0 +sdnstatsmode : 0 +dhkeysize : 2048 +WUITLSProtocols : 0 +AllowEmptyHttpHeaders : no +ShareSubVSPersist : no +DNSNamesEnable : yes +ForceFullRSMatch : no +SSLForceServerVerify : no +SyslogPort : 60 +SSLStapling : no +SSLRefreshInterval : 3700 + + + + + + + + + + + + + + + + + Get-LmAwsHAConfiguration + + Retrieve the AWS High Availability (HA) parameters. + + + + + Get + LmAwsHAConfiguration + + + + Display the HA settings for a LoadMaster on Azure. + + + + Get-LmAwsHAConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmAwsHAConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmAwsHAConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{AwsHAConfiguration=} + +HaMode Partner HealthCheckPort +------ ------- --------------- +single unset unset + + + + + + + + + + + + + + + + + Get-LmAzureHAConfiguration + + Retrieves the Azure High Availability (HA) parameters. + + + + + Get + LmAzureHAConfiguration + + + + Displays the HA settings for an Azure LoadMaster. + + + + Get-LmAzureHAConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmAzureHAConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmAzureHAConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{AzureHAConfiguration=} + +HaMode Partner HealthCheckPort +------ ------- --------------- +single unset unset + + + + + + + + + + + + + + + + + Get-LmBackupConfiguration + + Allows to view the values of the Automated Backup options. + + + + + Get + LmBackupConfiguration + + + + Allows to view the values of the Automated Backup options. + + + + Get-LmBackupConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmBackupConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmBackupConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{BackupConfiguration=} +Param........: @{backupenable=yes; backuphour=0; backupminute=0; backupday=0; BackupMethod=SCP; backupuser=; backuppassword=********; backuphost=; back +uppath=} + + +backupenable : yes +backuphour : 0 +backupminute : 0 +backupday : 0 +BackupMethod : SCP +backupuser : +backuppassword : ******** +backuphost : +backuppath : + + + + + + + + + + + + + + + + + Get-LmDateTimeConfiguration + + Allows you to view the values of the Date and Time options. + + + + + Get + LmDateTimeConfiguration + + + + Allows you to view the values of the Date and Time options. + + + + Get-LmDateTimeConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmDateTimeConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and does not return all of the available parameters. Please refer to the Get-Help of the Get-Parameter command to view a full list of parameters that can be returned. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmDateTimeConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{DateTimeConfiguration=} +Param........: @{NTPHost=; Time=Thu, 20 Apr 17 11:12:59 UTC; BootTime=Thu, 20 Apr 17 11:02:28 UTC; ActiveTime=Thu, 20 Apr 17 11:02:28 UTC; TimeZone=; NT +PKeyId=0} + + + + + + + + + + + + + + + + + Get-LmDebugConfiguration + + Displays the Debug Option values. + + + + + Get + LmDebugConfiguration + + + + Allows you to view some of the values of options contained in the in the Debug Option screen of the WUI. + + + + Get-LmDebugConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmDebugConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmDebugConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + +irqbalance : no +linearesplogs : no +netconsole : +netconsoleinterface : 0 + + + + + + + + + + + + + + + + + Get-LmDebugInformation + + Returns the system information related to the specified command option. + + + + + Get + LmDebugInformation + + + + Returns the system information related to the specified command option. + + + + Get-LmDebugInformation + + Param + + Valid values and their descriptions are provided below: + - ps: Report a snapshot of the current processes. + - meminfo: Report the memory status of the LoadMaster. + - ifconfig: Return the details of the network interfaces. + - netstat: Return the following information: + - Active Internet connections, servers and established (IPv4/IPv6) + - Kernel IP routing table (IPv4/IPv6) + - IPv4/IPv6 packet filter + - interrupts: Lists the number of interrupts per CPU per I/O device. + - partitions: Partition block allocation information. + - cpuinfo: Return the details of the LoadMaster CPU(s). + - df: Display the device name, total blocks, total disk space, used disk space, available disk space and mount points on the LoadMaster file system. + - lspci: Returns information about PCI buses in the system and devices connected to them. + - lsmod: Show the status of modules in the Linux Kernel + - slabinfo: Return statistics for frequently used objects in the Linux kernel (buffer heads, inodes, dentries and so on). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmDebugInformation + + Param + + Valid values and their descriptions are provided below: + - ps: Report a snapshot of the current processes. + - meminfo: Report the memory status of the LoadMaster. + - ifconfig: Return the details of the network interfaces. + - netstat: Return the following information: + - Active Internet connections, servers and established (IPv4/IPv6) + - Kernel IP routing table (IPv4/IPv6) + - IPv4/IPv6 packet filter + - interrupts: Lists the number of interrupts per CPU per I/O device. + - partitions: Partition block allocation information. + - cpuinfo: Return the details of the LoadMaster CPU(s). + - df: Display the device name, total blocks, total disk space, used disk space, available disk space and mount points on the LoadMaster file system. + - lspci: Returns information about PCI buses in the system and devices connected to them. + - lsmod: Show the status of modules in the Linux Kernel + - slabinfo: Return statistics for frequently used objects in the Linux kernel (buffer heads, inodes, dentries and so on). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Param + + Valid values and their descriptions are provided below: + - ps: Report a snapshot of the current processes. + - meminfo: Report the memory status of the LoadMaster. + - ifconfig: Return the details of the network interfaces. + - netstat: Return the following information: + - Active Internet connections, servers and established (IPv4/IPv6) + - Kernel IP routing table (IPv4/IPv6) + - IPv4/IPv6 packet filter + - interrupts: Lists the number of interrupts per CPU per I/O device. + - partitions: Partition block allocation information. + - cpuinfo: Return the details of the LoadMaster CPU(s). + - df: Display the device name, total blocks, total disk space, used disk space, available disk space and mount points on the LoadMaster file system. + - lspci: Returns information about PCI buses in the system and devices connected to them. + - lsmod: Show the status of modules in the Linux Kernel + - slabinfo: Return statistics for frequently used objects in the Linux kernel (buffer heads, inodes, dentries and so on). + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmDebugInformation -Param ps + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + +F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND +4 0 1 0 20 0 4356 1376 - Ss ? 0:14 init [2] +1 0 2 0 20 0 0 0 - S ? 0:00 [kthreadd] +1 0 3 2 20 0 0 0 - S ? 0:01 [ksoftirqd/0] +1 0 4 2 20 0 0 0 - S ? 0:00 [kworker/0:0] +1 0 5 2 0 -20 0 0 - S< ? 0:00 [kworker/0:0H] +1 0 7 2 20 0 0 0 - S ? 1:28 [rcu_sched] +1 0 8 2 20 0 0 0 - S ? 0:00 [rcu_bh] +1 0 9 2 -100 - 0 0 - S ? 0:04 [migration/0] +5 0 10 2 -100 - 0 0 - S ? 0:04 [watchdog/0] +5 0 11 2 -100 - 0 0 - S ? 0:05 [watchdog/1] +1 0 12 2 -100 - 0 0 - S ? 0:04 [migration/1] +1 0 13 2 20 0 0 0 - S ? 0:02 [ksoftirqd/1] +1 0 15 2 0 -20 0 0 - S< ? 0:00 [kworker/1:0H] +1 0 16 2 0 -20 0 0 - S< ? 0:00 [netns] +1 0 17 2 0 -20 0 0 - S< ? 0:00 [perf] +1 0 18 2 20 0 0 0 - S ? 0:02 [khungtaskd] +1 0 19 2 0 -20 0 0 - S< ? 0:00 [writeback] +1 0 20 2 0 -20 0 0 - S< ? 0:00 [crypto] +1 0 21 2 20 0 0 0 - S ? 1:30 [kworker/0:1] +1 0 22 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 23 2 0 -20 0 0 - S< ? 0:00 [kblockd] +1 0 24 2 0 -20 0 0 - S< ? 0:00 [ata_sff] +1 0 26 2 20 0 0 0 - S ? 0:00 [kswapd0] +1 0 27 2 0 -20 0 0 - S< ? 0:00 [vmstat] +1 0 28 2 20 0 0 0 - S ? 0:00 [fsnotify_mark] +1 0 43 2 0 -20 0 0 - S< ? 0:00 [acpi_thermal_pm] +1 0 45 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 46 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 47 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 48 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 49 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 50 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 51 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 52 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 53 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 54 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 55 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 56 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 57 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 58 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 59 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 60 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 61 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 62 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 63 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 64 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 65 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 66 2 20 0 0 0 - S ? 0:48 [kworker/1:1] +1 0 67 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 68 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 69 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 70 2 0 -20 0 0 - S< ? 0:00 [fc_exch_workque] +1 0 71 2 0 -20 0 0 - S< ? 0:00 [fc_rport_eq] +1 0 72 2 0 -20 0 0 - S< ? 0:00 [fcoethread/0] +1 0 73 2 0 -20 0 0 - S< ? 0:00 [fcoethread/1] +1 0 74 2 0 -20 0 0 - S< ? 0:00 [fnic_event_wq] +1 0 75 2 0 -20 0 0 - S< ? 0:00 [fnic_fip_q] +1 0 76 2 20 0 0 0 - S ? 0:00 [scsi_eh_0] +1 0 77 2 0 -20 0 0 - S< ? 0:00 [scsi_tmf_0] +1 0 78 2 0 -20 0 0 - S< ? 0:00 [vmw_pvscsi_wq_0] +1 0 79 2 0 -20 0 0 - S< ? 0:00 [bioset] +1 0 95 2 0 -20 0 0 - S< ? 0:00 [kpsmoused] +1 0 96 2 20 0 0 0 - S ? 0:00 [kworker/1:2] +1 0 97 2 0 -20 0 0 - S< ? 0:00 [ipv6_addrconf] +1 0 98 2 0 -20 0 0 - S< ? 0:00 [deferwq] +1 0 99 2 0 -20 0 0 - S< ? 0:00 [ext4-rsv-conver] +1 0 142 2 0 -20 0 0 - S< ? 0:00 [kworker/0:1H] +5 3 261 1 20 0 26816 1444 - Ss ? 0:09 /sbin/nscd +1 0 279 2 0 -20 0 0 - S< ? 0:00 [kworker/1:1H] +1 0 297 2 0 -20 0 0 - S< ? 0:00 [loop0] +5 0 636 1 20 0 4392 1780 - Ss ? 0:09 /usr/sbin/syslogd +5 0 640 1 20 0 4488 1372 - Ss ? 0:00 /usr/sbin/klogd -c 7 +4 0 668 1 20 0 18488 4612 - Ss ? 0:00 /usr/sbin/sshd +1 0 677 1 20 0 15228 1564 - Ss ? 0:04 /usr/sbin/cron -L 0 +1 0 692 2 0 -20 0 0 - S< ? 0:00 [l7comp] +4 0 727 1 20 0 4464 1904 - S ? 0:20 /sbin/l7d -C 0 -N 0 -0 eth0 -G 1 -T 2 -l +0 0 729 1 20 0 4196 644 - S ? 0:02 /sbin/l7log +0 0 732 1 20 0 9536 2660 - S ? 0:00 /bin/bash /sbin/startDaemon /sbin/ssomgr -C 0 +0 0 761 1 20 0 9536 2648 - S ? 0:00 /bin/bash /sbin/startDaemon /sbin/stats -C 0 +4 0 767 761 20 0 11688 1896 - S ? 3:11 /sbin/stats -C 0 +0 0 784 1 20 0 11868 4984 - S ? 26:01 /bin/bash /usr/local/bin/rrd-upd-all.sh +1 0 793 1 20 0 6508 124 - S ? 0:40 inotifywait -d -o/tmp/metrics.evts -e MOVED_TO --format %T %f %e --timefmt %s /var/ +lib/metrics +0 0 833 1 20 0 9536 2636 - S ? 0:00 /bin/bash /sbin/startDaemon /sbin/ocspd +4 0 842 833 20 0 14060 3576 - S ? 0:03 /sbin/ocspd +0 0 860 1 20 0 6728 1668 - S ? 0:02 /sbin/httpd -port 8080 -address 127.0.0.1 +0 0 907 1 20 0 9540 2660 - S ? 0:00 /bin/bash /sbin/startDaemon /sbin/wafd -C 0 -M 4 +4 0 916 907 20 0 52488 4212 - S ? 0:00 /sbin/wafd -C 0 -M 4 +0 0 949 1 20 0 9536 2656 - S ? 0:00 /bin/bash /sbin/startDaemon /sbin/l4d -C 0 +4 0 957 949 12 -8 17520 3252 - S< ? 0:35 /sbin/l4d -C 0 +0 0 1000 1 20 0 4672 1304 - S ? 0:04 /sbin/binddb -C 0 +0 0 1002 1 20 0 5440 704 - S ? 0:13 /sbin/geocheck -C 0 +4 0 1004 732 20 0 50372 6324 - S ? 0:12 /sbin/ssomgr -C 0 +5 0 1008 1 20 0 66652 50156 - Ss ? 0:10 /sbin/named +4 0 1045 1 20 0 116464 4184 - Sl ? 13:51 /usr/bin/vmtoolsd +4 0 1078 1 20 0 8680 1648 - Ss+ tty1 0:00 /sbin/mingetty --noclear tty1 +4 0 1079 1 20 0 8680 1652 - Ss+ tty2 0:00 /sbin/mingetty tty2 +4 0 1080 1 20 0 8680 1656 - Ss+ tty3 0:00 /sbin/mingetty tty3 +4 0 1081 1 20 0 8680 1724 - Ss+ tty4 0:00 /sbin/mingetty tty4 +4 0 1082 1 20 0 8680 1652 - Ss+ tty5 0:00 /sbin/mingetty tty5 +4 0 1083 1 20 0 8680 1672 - Ss+ tty6 0:00 /sbin/mingetty tty6 +4 0 1084 1 20 0 4360 1660 - Ss+ ttyS0 0:00 /sbin/agetty -L -f /etc/issue.serial 115200 57600 38400 19200 9600 ttyS0 vt100 +1 0 1272 2 20 0 0 0 - S ? 0:00 [kworker/u4:2] +5 0 1304 916 20 0 59144 6192 - Sl ? 0:00 /sbin/wafd -C 0 -M 4 +0 0 1356 1 20 0 9540 2664 - S ? 0:00 /bin/bash /sbin/startDaemon /sbin/sslproxy -T 10 -P 443 -r 127.0.0.1:8080 -F IPADDR +_0 -F ADDITIONAL_0 -c /one4net/certs/.cert.pem -E 3 -V /usr/lib/ssl/certs +4 0 1365 1356 20 0 14460 5300 - S ? 0:38 /sbin/sslproxy -T 10 -P 443 -r 127.0.0.1:8080 -F IPADDR_0 -F ADDITIONAL_0 -c /one4n +et/certs/.cert.pem -E 3 -V /usr/lib/ssl/certs +1 0 4024 860 20 0 6740 116 - S ? 0:00 /sbin/httpd -port 8080 -address 127.0.0.1 +4 3 4025 4024 20 0 7828 948 - S ? 0:00 /bin/access -C 0 -F 0 -H 3 +0 3 4034 4025 20 0 11088 4152 - S ? 0:00 /bin/sh /etc/rc.d/config ps +0 3 4038 4034 20 0 7140 792 - R ? 0:00 /bin/ps alxwww +1 0 14514 2 20 0 0 0 - S ? 0:00 [kworker/u4:0] +1 0 27228 2 10 -10 0 0 - S< ? 0:11 [l7s 1] +1 0 27229 2 20 0 0 0 - S ? 0:10 [l7flow 1] +1 0 27230 2 20 0 0 0 - S ? 0:11 [l7flow 1] +1 0 27231 2 20 0 0 0 - S ? 0:12 [l7flow 1] +1 0 27232 2 20 0 0 0 - S ? 0:11 [l7flow 1] +1 0 27233 2 20 0 0 0 - S ? 0:11 [l7flow 1] +1 0 27235 2 20 0 0 0 - S ? 0:11 [l7flow 1] +1 0 27236 2 20 0 0 0 - S ? 0:10 [l7flow 1] +1 0 27238 2 20 0 0 0 - S ? 0:11 [l7flow 1] +0 0 29434 1 20 0 9540 2676 - S ? 0:00 /bin/bash /sbin/startDaemon /sbin/vsslproxy -C 0 -A -D /one4net/certs -V /usr/lib/s +sl/certs -T 10000 -i 660 -t 65536 -N 5 -E 2 +4 0 29439 29434 20 0 16108 2856 - S ? 0:04 /sbin/vsslproxy -C 0 -A -D /one4net/certs -V /usr/lib/ssl/certs -T 10000 -i 660 -t +65536 -N 5 -E 2 +5 0 29479 29439 10 -10 282536 4564 - S<l ? 0:00 /sbin/vsslproxy -C 0 -A -D /one4net/certs -V /usr/lib/ssl/certs -T 10000 -i 660 -t +65536 -N 5 -E 2 + + + + + + + + + + + + + + + + + Get-LmHAConfiguration + + Allows you to view the values of High Availability (HA) options. + + + + + Get + LmHAConfiguration + + + + Retrieve the HA settings. + + + + Get-LmHAConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmHAConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To get the HA status, run the following command: Get-LmParameter -Param HAStatus +To retrieve the HACheck parameter, run the following command: Get-NetworkInterface + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmHAConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed + + +hamode : HA Second +hatimeout : 3 +hawait : 0 +havhid : 0 +haprefered : No Preferred Host +haif : 0 +hal4update : no +hal7update : no + + + + + + + + + + + + + + + + + Get-LmHAMode + + Retrieve the High Availability (HA) mode. + + + + + Get + LmHAMode + + + + The HA mode is one of the following options: +0 – HA mode disabled +1 – HA 1 mode +2 – HA 2 mode +3 – System is using cloud HA +4 – System is in a cluster + + + + Get-LmHAMode + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmHAMode + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmHAMode + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +HaMode : 2 +HaDescription : HA Second + + + + + + + + + + + + + + + + + Get-LmIPConnectionLimit + + Displays a list of client IP address limiters. + + + + + Get + LmIPConnectionLimit + + + + Displays a list of client IP address limiters. + + + + Get-LmIPConnectionLimit + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmIPConnectionLimit + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmIPConnectionLimit + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + +Address Mask Limit +------- ---- ----- +10.64.55.22 32 155 + + + + + + + + + + + + + + + + + Get-LmNetworkInterface + + Retrieves details for the LoadMaster network interface. + + + + + Get + LmNetworkInterface + + + + Returns details about the LoadMaster network interface, such as the speed, name and Id number. + + + + Get-LmNetworkInterface + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmNetworkInterface + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmNetworkInterface + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Interface=} +Param........: @{Id=0; Name=eth0; speed=10000; inbytes=11187190; inerrs=0; indrops=0; outbytes=21653858; outerrs=0; outdrops=0; link=up; lastchange=1492 +686160} + + +Id : 0 +Name : eth0 +speed : 10000 +inbytes : 11187190 +inerrs : 0 +indrops : 0 +outbytes : 21653858 +outerrs : 0 +outdrops : 0 +link : up +lastchange : 1492686160 + + + + + + + + + + + + + + + + + Get-LmParameter + + A large number of LoadMaster parameters can be retrieved using the Get-LmParameter command. + + + + + Get + LmParameter + + + + Below is a list of the parameters that can be retrieved using the Get-LmParameter command. The parameters are grouped and ordered by WUI section. + ----------------- +WUI Section: Home +----------------- + version +Retrieves the LoadMaster firmware version. + serialnumber +The serial number of the LoadMaster. + boottime +The time at which the LoadMaster last booted. + activetime +When using non-HA mode, the activetime is the same as the boottime. When in HA mode, the active time is the time at which the LoadMaster last became the master unit. The active time will be zero if the LoadMaster is in slave mode. + +-------------------------------------------------------------------------- +WUI Section: Virtual Services > View/Modify Services > Advanced Properties +-------------------------------------------------------------------------- + addvia +Specifies which headers should be added to the HTTP stream. The parameter takes the following arguments: + 0 = Legacy Operation + 1 = X-Forwarded-For + 2 = None + 3 = X-Client-Side + 4 = X-Client-Side No Via + 5 = X-Forwarded-For No Via + 6 = Via Only + +------------------------------------ +WUI Section: Certificates & Security +------------------------------------ + localcert +This parameter is only relevant when using HA. + +------------------------------------------------------- +WUI Section: Certificates & Security > SSL Certificates +------------------------------------------------------- + admincert +The certificate used, if any, for the administrative interface. + +---------------------------------------------------- +WUI Section: Certificates & Security > Remote Access +---------------------------------------------------- + admingw +When administering the LoadMaster from a non-default interface, this option allows the user to specify a different default gateway for administrative traffic only. + sshaccess +Specify over which addresses remote administrative SSH access to the LoadMaster is allowed. + sshport +Specify the port used to access the LoadMaster via the SSH protocol. + wuiaccess +Enables or disables access to the Web User Interface (WUI). + wuiiface +Specifies the interface for the WUI. + wuiport +Specifies the port to access the WUI. + sshiface +Specify the addresses over which remote administrative SSH access to the LoadMaster is allowed. + enableapi +Enables the programmable command API Interface. +Note: If this is disabled, the API will no longer be accessible. + adminclientaccess +Valid values for this parameter are: +0 – Password only access (default) +1 – Password or client certificate +2 – Client certificate required +3 – Client certificate required (verify via OCSP) +This parameter is only relevant if Session Management is enabled. For further information on Session Management and on the Admin Client Access option, refer to the User Management, Feature Description on the KEMP documentation page: www.kemptechnologies.com/documentation + tethering +Allow the LoadMaster to regularly check the KEMP website for new software versions. +0 - Disabled +1 - Enabled + geoclients +Set the addresses of the GEO LoadMasters which can retrieve service status information from the LoadMaster. + geopartners +Set the IP address of the GEO LoadMaster partner(s). These GEO LoadMasters will keep their DNS configurations in sync. +Note: Before partnering GEO LoadMasters, a backup should be taken of the relevant GEO LoadMaster which has the correct/preferred configuration. This backup should then be restored to the other LoadMasters + that will be partnered with the original LoadMaster. + multihomedwui +Allow WUI access from multiple interfaces. Apart from the main administrative interface, each interface can then be enabled to allow WUI access. + SSHPreAuth +Set the SSH pre-authentication banner, which is displayed before the login prompt when logging in via SSH. Space characters should be escaped by entering %20. +This field accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + sessioncac +If this parameter is enabled, the LoadMaster will also check for a Common Access Card (CAC) certificate when a user is logging on to the WUI. +0 - Disabled +1 - Enabled + -------------------------------------------------------------------------------- +WUI Section: Certificates & Security > Remote Access > WUI Authorization Options +-------------------------------------------------------------------------------- + sessionauthmode +Specifies the authentication mode for the LoadMaster. +Refer to the following table for values: + | RADIUS | LDAP | Local +Value | Authent. Author. | Authent. | Authent. Author. +7 | No No | No | No No +263 | Yes No | No | Yes Yes +775 | Yes Yes | No | Yes Yes +23 | No No | Yes | Yes Yes +22 | No No | Yes | No Yes +788 | Yes Yes | Yes | No No +790 | Yes Yes | Yes | No Yes +791 | Yes Yes | Yes | Yes Yes +789 | Yes Yes | Yes | Yes No +773 | Yes Yes | No | Yes No +262 | Yes No | No | No Yes +774 | Yes Yes | No | No Yes +772 | Yes Yes | No | No No +278 | Yes No | Yes | No No +279 | Yes No | Yes | Yes Yes + sessionlocalauth +Enables or disables local authentication. + radiusbackupport +Specifies the TCP port for the backup RADIUS server. + radiusbackupsecret +Specifies the password (secret) to the backup RADIUS server. + radiusbackupserver +Specifies the backup RADIUS server to use for authentication. + radiusport +Specifies the TCP port for communication to the RADIUS server. + radiussecret +Specifies the password (secret) to the RADIUS server. + radiusserver +Specifies the RADIUS server to use for authentication. + radiusrevalidateinterval +Specifies when to revalidate the authentication to the RADIUS server. + ldapserver +Specifies the LDAP server to use for authentication. + ldapbackupserver +Specifies the backup LDAP server for authentication. + ldapsecurity +Specifies the security mode for LDAP authentication. + ldaprevalidateinterval +Specifies how often to revalidate the authentication to the LDAP server. + +------------------------------------------------------- +WUI Section: Certificates & Security > Admin WUI Access +------------------------------------------------------- + sessionidletime +Specifies the number of seconds that the WUI can be idle before logging the user out. This can be set from 60 to 86400 seconds. + sessionmaxfailattempts +Number of failed attempts before locking the user account. This can be set from 1 to 999. + sessioncontrol +Enables or disables session control. + sessionbasicauth +If the SessionControl and SessionBasicAuth parameters are both enabled, there are two levels of authentication enforced in order to access the LoadMaster WUI. The initial level is Basic Authentication where + users log in using the bal or user logins, which are default usernames defined by the system. + sessionconcurrent +Limit the maximum number of concurrent connections a single user can have. +Range: 0 to 9. A value of 0, means logins are unlimited. + geosshport +The port over which GEO LoadMasters will communicate with on another. + WUIPreAuth +Set the pre-authentication click through banner which will be displayed before the LoadMaster login page. This parameter can contain plain text or HTML code. The field cannot contain JavaScript. This field + accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + WUITLSProtocols +Specify whether or not it is possible to connect to the LoadMaster WUI using the following protocols; SSLv3, TLS1.0, TLS1.1 or TLS1.2. The protocols can be enabled and disabled using a bitmask value in the range 0 to 14. Refer to the table below to find out what number corresponds to which settings. + Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + WUICipherset +Specify the cipher set to use for the LoadMaster WUI. +The valid values are below: +- Default +- Default_NoRc4 +- BestPractices +- Intermediate_compatibility +- Backward_compatibility +- WUI +- FIPS +- Legacy +- <NameOfCustomCipherSet> Specify the cipher set to use for the LoadMaster WUI. + +--------------------------------------------------------- +WUI Section: Certificates & Security > OCSP Configuration +--------------------------------------------------------- + OCSPPort +The port of the OCSP server. + OCSPUseSSL +Specify whether or not to use SSL to connect to the OCSP server. + OCSPOnServerFail +Treat an OCSP server connection failure of timeout as if the OCSP server had returned a valid response, i.e. treat the client certificate as valid. + OCSPServer +The address of the OCSP server. + OCSPUrl +The URL to access on the OCSP server. + SSLStapling +Enable this parameter to enable the LoadMaster to respond to OCSP stapling requests. If a client connects using SSL and asks for an OCSP response, this is returned. Only Virtual Service certificates are validated. The system holds a cache of OCSP responses that are sent back to the client. This cache is maintained by the OCSP daemon. When the OCSP daemon sends a request to the server, it uses the name specified in the certificate (in the Authority Information Access field). If it cannot resolve this name, then it uses the default OCSP server specified in the OCSPServer parameter. + SSHRefreshInterval +Specify how often the LoadMaster should refresh the OCSP stapling information. The OCSP daemon caches the entry for up to the amount of time specified here, after which it is refreshed. +Valid values range from 3600 (1 hour (default)) to 604800 seconds (7 days). + +-------------------------------------------------------------- +WUI Section: System Configuration > Network Setup > Interfaces +-------------------------------------------------------------- + mcast +The network interface used for multicast traffic which is used to synchronize Layer 4 and Layer 7 traffic when Inter HA Updates are enabled. + +---------------------------------------------------------------------------- +WUI Section: System Configuration > Network Setup > Host & DNS Configuration +---------------------------------------------------------------------------- + dnssecclient +Enable or disable DNSSEC client capabilities on the LoadMaster. At least one name server must be configured before DNSSEC can be enabled. After changing this setting, the LoadMaster must be rebooted for the change to be applied. Once the setting is changed, it cannot be changed again until the LoadMaster has been rebooted. If using HA, please set the parameter on both devices separately. + 0 = Disabled + 1 = Enabled + DNSNamesEnable +When this option is enabled, the LoadMaster automatically attempts to update any changed DNS names (based on the update interval): +- If the address is not found, or if it is the same as before – nothing is done (except a log entry is generated). +- If the address is different, the Real Server entry is updated with the new address, if possible. +- If the new address is invalid for some reason, for example if it is a non-local address and the nonlocalrs option is disabled, no changes are made and a log is generated. + dnsupdateinterval +Set the update interval for DNS entries. Valid values range from 1-60 (minutes). The default value is 60. + dnsreloadonerror +If this parameter is enabled, DNS entries are reloaded when health checks have errors and an FQDN is associated with the Real Server IP address. + namserver +The DNS server the LoadMaster will use for name resolution. Setting this parameter to an empty string will delete the name servers. The last remaining name server cannot be deleted if the dnssecclient parameter is enabled. This parameter has been deprecated and replaced with the nameserver parameter. + nameserver +The DNS server the LoadMaster will use for name resolution. Setting this parameter to an empty string will delete the name servers. The last remaining name server cannot be deleted if the dnssecclient parameter is enabled. + ha1hostname +When using the LoadMaster in HA mode, this is the host name of the first node. If the LoadMaster is not in HA mode, then this will return an error. + ha2hostname +When using the LoadMaster in HA mode, this is the host name of the second node. If the LoadMaster is not in HA mode, then this will return an error. + hostname +The hostname assigned to the LoadMaster. + searchlist +The domain suffix search list when performing DNS resolution. + +------------------------------------------------------------------- +WUI Section: System Configuration > Network Setup > Default Gateway +------------------------------------------------------------------- + dfltgw +Specify the IPv4 default gateway that is to be used for communicating with the internet. + dfltgwv6 +Specify the IPv6 default gateway that is to be used for communicating with the internet. + +-------------------------------------------------------------------------- +WUI Section: System Configuration > System Administration > Backup/Restore +-------------------------------------------------------------------------- + backupday +For scheduled backups, this parameter specifies the "day" number (0-7). + backupenable +Specifies if scheduled backups are enabled. + backuphost +Specifies the host to save the backup file to. + backuphour +For scheduled backups, this parameter specifies the "hour" number (0-23). + backupminute +For scheduled backups, this parameter specifies the "minute" number (0-59). + backupsecure +Specify the file transfer method for automated backups. +0 – Ftp (insecure) +1 – scp (secure) + backuppassword +Specifies the password for the user account that has access to save the backup file. + backuppath +Specifies the path on the remote host for saving the backup file. + backupuser +Specifies the user account that has access to save the backup file. + +--------------------------------------------------------------------- +WUI Section: System Configuration > System Administration > Date/Time +--------------------------------------------------------------------- + ntphost +Specifies the time synchronization server. Multiple hosts can be specified using a space-separated list. + ntpkeytype +Specify the NTP Key Type. The valid values are SHA-1 (SHA) and MD5 (M). The values must be specified in uppercase. + ntpkeysecret +The NTP shared secret string. The NTP secret can be a maximum of 40 characters long. If the secret is more than 20 characters long, it is treated as a hex string. Setting this value to an empty string will disable the NTPv4 feature. + ntpkeyid +The NTP key ID. Valid values range from 1 to 99. + timezone +Specifies the time zone of the LoadMaster. + time +Sets the time of the LoadMaster. + ------------------------------------------------------------------- +WUI Section: System Configuration > Logging Options > Debug Options +------------------------------------------------------------------- + irqbalance +The purpose of IRQBalance is distribute hardware interrupts across processors on a multiprocessor system. This should only be enabled after consultation with KEMP Technical Support. + backupnetstat +By default, the LoadMaster includes a Netstat output in backups taken. When this is included, backups take longer to complete. You can stop the Netstat output from being included by disabling this parameter. + linearesplogs +By default, the LoadMaster deletes older log files. If this parameter is enabled, older log files will no longer be deleted. If the filesystem fills up, further access via the LoadMaster is blocked. + netconsole +Netconsole is a kernel module which logs kernel printk messages over UDP allowing debugging of problems where disk logging fails. If directed by a KEMP support engineer, the syslog daemon on a specific host + will receive all critical kernel messages. This can help in understanding why a LoadMaster is rebooting. + netconsoleinterface +The interface which hosts the Netconsole. + +-------------------------------------------------------------------- +WUI Section: System Configuration > Logging Options > Syslog Options +-------------------------------------------------------------------- + syslogemergency +Use this option to set the host(s) which will receive Emergency events only. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslogcritical +Use this option to set the host(s) which will receive Emergency and Critical events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslogerror +Use this option to set the host(s) which will receive Emergency, Critical and Error events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + sysloginfo +Use this option to set the host(s) which will receive Emergency, Critical, Error and Warning events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslognotice +Use this option to set the host(s) which will receive Emergency, Critical, Error, Warning and Notice events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslogwarn +Use this option to set the host(s) which will receive All events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslogport +Specify the port that syslog messages are sent to on the receiving hosts. + ------------------------------------------------------------------ +WUI Section: System Configuration > Logging Options > SNMP Options +------------------------------------------------------------------ + snmpenable +Enable or disable SNMP. + snmpV3enable +Enable SNMP V3. + 0 = Disabled + 1 = Enabled + snmpv3user +Specify the username. + snmpv3userpasswd +Specify the user password. + snmpAuthProt +Specify the relevant authentication protocol: + - MD5 + - SHA +SHA is a more secure protocol. + snmpPrivProt +Specify the relevant privacy protocol: + - DES + - AES +AES is a more secure protocol. + snmpcontact +Specify the contact address that is sent in SNMP responses. + snmpcommunity +Specify the SNMP community string. + snmplocation +Specify the location that is sent in SNMP responses. + snmpHaTrap +Send SNMP traps from the shared IP address. This option is only available when the LoadMaster is in HA mode. + snmpv1sink +Specify the sink address for SNMP type 1 traps. + snmpv2sink +Specify the sink address for SNMP type 2 traps. + snmpclient +Specify the list of machines that can access the SNMP subsystem. If no clients are specified, then anyone can access SNMP. + snmptrapenable +Enable the generation of SNMP events whenever a significant event occurs. + +------------------------------------------------------------------- +WUI Section: System Configuration > Logging Options > Email Options +------------------------------------------------------------------- + emailuser +The user account with access to send mail messages. + emaildomain +The domain, if required, for the user account authentication. + emailpassword +The email user's password. + emailserver +The host name or address of the SMTP server to send mail messages through. + emailsslmode +Specify the type of security protocol that should be used on the connection: + 0 = None + 1 = STARTTLS, if available + 2 = STARTTLS + 3 = SSL/TLS + emailport +The TCP port on which your mail server accepts connections (usually 25). + emailcritical +The email address to receive critical messages. + emailemergency +The email address to receive emergency messages. + emailerror +The email address to receive error messages. + emailinfo +The email address to receive informational messages. + emailnotice +The email address to receive notices. + emailwarn +The email address to receive warnings. + emailenable +Enables or disables the email logging options. + +------------------------------------------------------------------- +WUI Section: System Configuration > Logging Options > SDN Log Files +------------------------------------------------------------------- + sdnstatsmode +There are two modes that can be used to gather the SDN statistics. +The modes are described below: +• Mode 1: When set to mode 1, the statistics are taken from the switch port that is connected to the server and the statistics are relayed back to the LoadMaster. +• Mode 2: When set to mode 2, the information is taken from all of the switch ports along the path. + +------------------------------------------------------------------------ +WUI Section: System Configuration > Miscellaneous Options > WUI Settings +------------------------------------------------------------------------ + hoverhelp +Enables or disables hover help in the WUI. + motd +Sets the Message Of The Day (MOTD) for the web user interface. Either plain text or a text file can be used. +The maximum number of characters is 5,000. +An error will be displayed if the MOTD is greater than 5,000 characters. + wuidisplaylines +Specifies the number of display lines in the WUI. This can be set from 10 to 100. + +---------------------------------------------------------------------------- +WUI Section: System Configuration > Miscellaneous Options > L7 Configuration +---------------------------------------------------------------------------- + transparent +When using Layer 7, when this is enabled the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent which means that the + connections at the Real Server appear to come from the LoadMaster. + alwayspersist +This parameter also accepts no and yes as valid values. No and Yes correspond to 0 and 1 respectively. + expect100 +By default, the L7 module only waits for 100-Continue replies if it sees an Expect-100 header, use RFC-2616 Compliant. If the system will always wait for 100 Continue messages, use Require 100-Continue. If + the client will always send the POST data even if a 100 Continue message is not sent, use RFC-7231 Compliant instead. + localbind +In very high load situations, local port exhaustion can occur. Enabling this option allows the setting of alternate source addresses. This can be used to expand the number of available local ports. + addcookieport +When using the LoadMaster behind a NATing gateway, all client addresses are the same. To create individual cookies the remote port can also be added to the cookie. Enabling this option when not needed wastes + resources. + addforwardheader +This option, only available when L7 Transparency is disabled, allows the addition of either X-ClientSide or X-Forwarded For to the HTTP header. + authtimeout +The duration (in seconds) that a connection remains open for while authentication is ongoing. This value can be between 30 and 300. + clienttokentimeout +The duration (in seconds) to wait for the client token while the process of authentication is ongoing (used for RSA SecurID and RADIUS authentication). The default value for this parameter is 120. + finalpersist +When a Real Server is disabled, the sessions persisting on that Real Server continue to be served until the Drain Time has expired or until no more sessions are being handled by the Real Server. No new sessions will be handled by the Real Server. Valid values include 0, and 60 to 86400. + rfcconform +By default, the LoadMaster conforms to the RFC when parsing HTTP headers. Disabling this will allow interworking with some broken browsers. + dropatdrainend +If enabled, all open connections to disabled Real Servers will be dropped at the end of the Real Servers Drain Stop Time or immediately if there are no Persist entries associated with the Real Server. + droponfail +By default, existing connections are not closed if a Real Server fails. Enabling this feature causes all connections to be immediately dropped on Real Server failure. + closeonerror +When enabled, the LoadMaster will always close the client connection when it sends back an error response. For Example, this changes the behaviour of the LoadMaster when sending back a 304 File not changed + message after receiving an If-Modified-Since HTTP header. + rsarelocal +When checking to see if a client is on the local subnet, also check to see if the client is actually a Real Server. + slowstart +When using the Least Connection (or Weighted Least Connection) scheduling method, specify the time (in seconds) over which the load to a Real Server which has just come online will be throttled. + ShareSubVSPersist +By default, each SubVS has an independent persistence table. Enabling this parameter will allow the SubVS to share this information. + logsplitinterval +When using Log Insight Scheduling this is the number of messages which are received on a connection before the stream is rescheduled. The default value is 10. + allowemptyposts +By default the LoadMaster blocks POSTs that do not contain a Content-Length or Transfer-Encoding header to indicate the length of the requests payload. When this parameter is set to true, such requests are assumed to have no payload data and are therefore not rejected. + forcefullrsmatch +By default, when the LoadMaster is trying to locate a Real Server for use with content switching, it tries to use the same Real Server as currently selected, even if the port is not the same. If this parameter is enabled - the port is also compared. + AllowEmptyHttpHeaders +By default, if the LoadMaster is processing HTTP headers, it will ignore HTTP headers that have empty content. This can break some SOAP Services even though it is against the HTTP RFCs. Enabling this option will allow these empty headers through. + loguseragent +When enabled, the User Agent header field is added to the User Logs. +0 - Disabled +1 - Enabled + +--------------------------------------------------------------------------- +WUI Section: System Configuration > Miscellaneous Options > Network Options +--------------------------------------------------------------------------- + snat +Enabling this options allows the LoadMaster to NAT connections from the Real Servers to the internet. + routefilter +When enabled, this option only accepts IP frames from a host over the interface where the routing algorithm would route frames to the host. This is known as strict source route validation. + subnetoriginating +When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. + If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + nonlocalrs +Enable this option to allow assigning non-local Real Servers to Virtual Services. + multigw +Use this option to enable the ability to move the default gateway to a different interface. + conntimeout +Specify the timeout value for the check request. +Range: 4-60 + tcptimestamp +The LoadMaster can include a timestamp in the SYN when connecting to Real Servers. Only enable this option when requested to from KEMP Support. + resetclose +When enabled, the LoadMaster will close its connection to the Real Servers by using TCP RESET instead of the normal close handshake. + keepalive +By default, the system uses TCP keepalives to check for failed clients. Enabling this option improves the reliability of older TCP connections (SSH sessions). Not normally required for normal HTTP/HTTPS + services. + allowupload +The LoadMaster has been optimized with HTTP workloads in mind. Enabling this option allows non HTTP uploads to work correctly. + subnetorigin +When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. + If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + onlydefaultroutes +Enable this option to force traffic from Virtual Services, which have default route entries set, to be routed to the interface where the Virtual Service’s default route is located. + http_proxy +This option allows clients to specify the HTTP(S) proxy server and port the LoadMaster will use to access the internet. + dhkeysize +Select the strength of the key used in the Diffe-Hellman key exchanges. If this value is changed, a reboot is required in order to use the new value. The default value is 2048 Bits. + sslrenegotiate +By default, the LoadMaster allows a client to automatically renegotiate during an SSL transaction. Disabling this parameter causes SSL connections to terminate if a renegotiation is requested by the client. + sslforceserververify +By default, when re-encrypting traffic the LoadMaster does not check the certificate provided by the Real Server. Enabling this option forces the LoadMaster to verify that the certificate on the Real Server is valid, that is, the certificate authority and expiration are OK. This includes all intermediate certificates. + tcpnorecycle +Enable this option to revert to the legacy mode of reusing TCP timewait connections. +Note: Only enable this after consulting with KEMP Support. + ----------------------------------------------------------------------------- +WUI Section: System Configuration > Miscellaneous Options > AFE Configuration +----------------------------------------------------------------------------- + paranoia +Sets the sensitivity of IDS detection. + cachesize +Specifies the cache size. + hostcache +Enable or disable using the host cache. + limitinput +Limit the number of connections. + L7LimitInput +This setting limits the default maximum number of connection attempts (per second) from a specific host. + +------------------------------------------------------------------------- +WUI Section: System Configuration > Miscellaneous Options > HA Parameters +------------------------------------------------------------------------- + hastatus +The status of a HA or cluster unit. This is a read only parameter and cannot be set. Possible values are: +Normal HA: +Active, Standby, Passive (all as expected). +Cloud HA: +Active, Standby, Passive (if status not yet set). +Cluster: +Active (if master), Standby (if slave), Passive (if disabled). + +hatimeout +The time the master must be unavailable before a switchover occurs. Allowed Values: 1-5, each option being a predetermined time interval: + 1 = 3 seconds + 2 = 6 seconds + 3 = 9 seconds + 4 = 12 seconds + 5 = 15 seconds + hawait +This is how long (in seconds) after the initial boot, before the LoadMaster becomes active. If the partner machine is running this value is ignored. This value can be changed to mitigate the time taken for some intelligent switches to detect that the LoadMaster has started and to bring up the link. + haprefered +By default, neither partner in a HA cluster has priority. When a machine restarts after a switchover that machine becomes a slave. Specifying a preferred host means that when this machine restarts it will always become the master and the partner will revert to slave mode. + hamode +Specify the HA mode. If only using a single LoadMaster, use Non-HA Mode. In HA mode, one LoadMaster must be specified as the first and another as second. HA will not work if both LoadMasters are specified + the same. + 0 = Turn off HA mode + 1 = HA 1 mode + 2 = HA 2 mode + haif +The network interface used when synchronising the configuration between the members of the HA cluster. + havhid +When using multiple HA LoadMasters on the same network, this value identifies each cluster so that there are no potential unwanted interactions. + hastyle +By default, the system uses a version of VRRP (carp) to check the status of the partner. The system can also support the legacy Heartbeat program. This option only takes effect when both machines are rebooted. +0 - legacy heartbeat +1 - carp + hainitial +Perform extra network checks at boot time. This may cause instability and should not be used. + tcpfailover +When using L4 services, enabling updates allows L4 connection maintenance across a HA switchover. This option is ignored for L7 services. +This parameter is now deprecated and has been replaced with the HAL4update parameter. + cookieupdate +When using L7 services, enabling this option allows sharing of persistency information between HA partners. If a HA switchover occurs, the persistency information will then not be lost. Enabling this option + can have a significant performance impact. +This parameter is now deprecated and has been replaced with the HAL7Update parameter. + hal4update +When using L4 services, enabling updates allows L4 connection maintenance across a HA switchover. This option is ignored for L7 services. + hal7update +When using L7 services, enabling this option allows sharing of persistency information between HA partners. If a HA switchover occurs, the persistency information will then not be lost. Enabling this option can have a significant performance impact. + vmac +This option creates a shared MAC address for both units. When failover occurs, the LoadMaster handles the MAC address handover too. This allows the switches to keep the MAC address and not worry about ARP caches or stale records. + + + + Get-LmParameter + + Param + + The parameter to retrieve. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmParameter + + Param + + The parameter to retrieve. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Param + + The parameter to retrieve. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmParameter -Param SSLRefreshInterval + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{SSLRefreshInterval=3700} + + + + + + + + + + + + + + + + + Get-LmPreviousFirmwareVersion + + Retrieve the firmware version that was previously installed on the LoadMaster. + + + + + Get + LmPreviousFirmwareVersion + + + + This command returns the firmware version number for the last installed firmware version before the current one. + + + + Get-LmPreviousFirmwareVersion + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmPreviousFirmwareVersion + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmPreviousFirmwareVersion + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{PreviousVersion=7.2.39.0.14938.DEV.20170411-1306 +} + + + + + + + + + + + + + + + + + Get-LmVpnConnection + + Retrieves a list of all existing Virtual Private Network (VPN) connection details, or details for a specific VPN connection. + + + + + Get + LmVpnConnection + + + + To retrieve details for a specific VPN connection, use the Name parameter to specify the name of the relevant VPN connection. To retrieve details for all VPN connections, do not use the Name parameter. + + + + Get-LmVpnConnection + + Name + + Specify the name of a specific VPN connection to display the details for. To display details for all VPN connections - do not use this parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmVpnConnection + + Name + + Specify the name of a specific VPN connection to display the details for. To display details for all VPN connections - do not use this parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + Specify the name of a specific VPN connection to display the details for. To display details for all VPN connections - do not use this parameter. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmVpnConnection + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{VpnConfiguration=} +Param........: @{name=ExampleVPN; status=Down; localIP=10.35.47.15; localSubnets=10.35.47.15/32; remoteIP=; remoteSubnets=; localID=10.35.47.15; remoteI +D=; key=; pfs=disabled} + + +name : ExampleVPN +status : Down +localIP : 10.35.47.15 +localSubnets : 10.35.47.15/32 +remoteIP : +remoteSubnets : +localID : 10.35.47.15 +remoteID : +key : +pfs : disabled + + + + + + + + + + + + + + + + + Get-LmVpnIkeDaemonStatus + + View the status of the Internet Key Exchange (IKE) daemon. + + + + + Get + LmVpnIkeDaemonStatus + + + + Run this command to check the status of the IKE daemon. + + + + Get-LmVpnIkeDaemonStatus + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmVpnIkeDaemonStatus + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmVpnIkeDaemonStatus + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{IkeDaemonStatus=Down} + + + + + + + + + + + + + + + + + Get-LmWuiSetting + + Retrieve the LoadMaster Web User Interface (WUI) settings. + + + + + Get + LmWuiSetting + + + + This command returns the WUI settings, such as the Message of the Day and the Statistics Display Size. + + + + Get-LmWuiSetting + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LmWuiSetting + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmWuiSetting + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Parameters=} +Param........: @{motd=Example Message of the Day; hoverhelp=no} + + + + + + + + + + + + + + + + + Get-LogEmailConfiguration + + Allows you to view the values of the email logging options. + + + + + Get + LogEmailConfiguration + + + + Allows you to view the values of the email logging options. + + + + Get-LogEmailConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LogEmailConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LogEmailConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{EmailConfiguration=} +Param........: @{EmailEnable=yes; EmailServer=10.154.22.132; EmailPort=80; EmailUser=test; EmailPassword=********; EmailDomain=ExampleDomain; EmailSSLMo +de=1; EmailEmergency=; EmailCritical=; EmailError=; EmailWarn=; EmailNotice=; EmailInfo=} + + +EmailEnable : yes +EmailServer : 10.154.22.132 +EmailPort : 80 +EmailUser : test +EmailPassword : ******** +EmailDomain : ExampleDomain +EmailSSLMode : 1 +EmailEmergency : +EmailCritical : +EmailError : +EmailWarn : +EmailNotice : +EmailInfo : + + + + + + + + + + + + + + + + + Get-LogSplitInterval + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcL7LogInsightSplitConfiguration + + + + + Get + LogSplitInterval + + + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcL7LogInsightSplitConfiguration + + + + Get-LogSplitInterval + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LogSplitInterval + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-LogStatistics + + Returns statistics and some settings for each of the services. + + + + + Get + LogStatistics + + + + Returns statistics and some settings for each of the services. + + + + Get-LogStatistics + + VirtualService + + Enable this option to only retrieve statistics for Virtual Services. + + SwitchParameter + + + RealServer + + Enable this option to only retrieve statistics for Real Servers on the LoadMaster. + + SwitchParameter + + + Totals + + Enable this to get all statistics from the LoadMaster. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LogStatistics + + VirtualService + + Enable this option to only retrieve statistics for Virtual Services. + + SwitchParameter + + + RealServer + + Enable this option to only retrieve statistics for Real Servers on the LoadMaster. + + SwitchParameter + + + Totals + + Enable this to get all statistics from the LoadMaster. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + Enable this option to only retrieve statistics for Virtual Services. + + SwitchParameter + + SwitchParameter + + + + + + RealServer + + Enable this option to only retrieve statistics for Real Servers on the LoadMaster. + + SwitchParameter + + SwitchParameter + + + + + + Totals + + Enable this to get all statistics from the LoadMaster. + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If you run the Get-Statistics command on the admin node when using LoadMaster clustering – the output will show the combined totals of all machines. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LogStatistics + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Vs=System.Object[]; VStotals=; CPU=; Network=; Memory=; TPS=; ChangeTime=1492771843} +Vs : {@{VSAddress=10.154.11.181; VSPort=69; VSProt=udp; Index=1; Status=down; ErrorCode=0; Enable=1; TotalConns=0; TotalPkts=0; TotalBytes=0; + TotalBits=0; ActiveConns=0; BytesRead=0; BytesWritten=0; ConnsPerSec=0; WafEnable=0}, @{VSAddress=10.154.11.181; VSPort=8081; VSProt=tcp; + Index=3; Status=down; ErrorCode=0; Enable=1; TotalConns=0; TotalPkts=0; TotalBytes=0; TotalBits=0; ActiveConns=0; BytesRead=0; + BytesWritten=0; ConnsPerSec=0; WafEnable=0}, @{VSAddress=10.154.11.182; VSPort=69; VSProt=tcp; Index=2; Status=down; ErrorCode=0; + Enable=1; TotalConns=0; TotalPkts=0; TotalBytes=0; TotalBits=0; ActiveConns=0; BytesRead=0; BytesWritten=0; ConnsPerSec=0; WafEnable=0}, + @{VSAddress=10.154.11.182; VSPort=8081; VSProt=tcp; Index=4; Status=down; ErrorCode=0; Enable=1; TotalConns=0; TotalPkts=0; TotalBytes=0; + TotalBits=0; ActiveConns=0; BytesRead=0; BytesWritten=0; ConnsPerSec=0; WafEnable=0}} +VStotals : @{ConnsPerSec=0; TotalConns=0; BitsPerSec=0; TotalBits=0; BytesPerSec=0; TotalBytes=0; PktsPerSec=0; TotalPackets=0} +CPU : @{total=; cpu0=; cpu1=} +Network : @{bnd0=; eth1=; eth1.1=; eth1.vxlan1=} +Memory : @{memused=332188; percentmemused=16; memfree=1724424; percentmemfree=84} +TPS : @{Total=0; SSL=0} +ChangeTime : 1492771843 + + + + + + + + + + + + + + + + + Get-LogSyslogConfiguration + + Allows you to view which hosts the various Syslog messages get sent to. + + + + + Get + LogSyslogConfiguration + + + + Allows you to view which hosts the various Syslog messages get sent to. + + + + Get-LogSyslogConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-LogSyslogConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LogSyslogConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{SyslogSettings=} +Param........: @{SyslogEmergency=; SyslogCritical=; SyslogError=; SyslogWarn=; SyslogNotice=; SyslogInfo=10.154.153.94; SyslogPort=60} +SyslogEmergency : +SyslogCritical : +SyslogError : +SyslogWarn : +SyslogNotice : +SyslogInfo : 10.154.153.94 +SyslogPort : 60 + + + + + + + + + + + + + + + + + Get-NetworkConfiguration + + Allows you to view the values of some networking options. + + + + + Get + NetworkConfiguration + + + + Allows you to view the values of some networking options. + + + + Get-NetworkConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-NetworkConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and does not return all of the available parameters. Please refer to the Get-Help of the Get-Parameter command to view a full list of parameters that can be returned. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-NetworkConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{NetworkConfiguration=} +Param........: @{snat=yes; allowupload=no; conntimeout=660; keepalive=yes; multigw=no; nonlocalrs=no; onlydefaultroutes=no; resetclose=no; subnetorigin= +yes; subnetoriginating=yes; tcptimestamp=no; routefilter=no; dhkeysize=2048; http_proxy=} +snat : yes +allowupload : no +conntimeout : 660 +keepalive : yes +multigw : no +nonlocalrs : no +onlydefaultroutes : no +resetclose : no +subnetorigin : yes +subnetoriginating : yes +tcptimestamp : no +routefilter : no +dhkeysize : 2048 +http_proxy : + + + + + + + + + + + + + + + + + Get-NetworkDNSConfiguration + + Allows you to retrieve the values of the DNS Configuration options. + + + + + Get + NetworkDNSConfiguration + + + + Allows you to retrieve the values of the DNS Configuration options. + + + + Get-NetworkDNSConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-NetworkDNSConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and does not return all of the available parameters. Please refer to the Get-Help of the Get-Parameter command to view a full list of parameters that can be returned. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-NetworkDNSConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{NetworkDNSConfiguration=} +Param........: @{Hostname=lb100; NamServer=10.154.75.25; SearchList= KEMP.LAB.INTRA} +Hostname : lb100 +NamServer : 10.154.75.25 +SearchList : KEMP.LAB.INTRA + + + + + + + + + + + + + + + + + Get-NetworkInterface + + Retreive details about all interfaces or a specific interface. + + + + + Get + NetworkInterface + + + + Specify the InterfaceID to retreive details for a particular interface. Otherwise, all interface details are displayed. + + + + Get-NetworkInterface + + InterfaceID + + The Interface ID to get settings for. If this parameter is omitted, it will default to eth0. +To view the interface ID for each of the interfaces, run the Get-Statistics command. The interface ID is the first number displayed in each interface row. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-NetworkInterface + + InterfaceID + + The Interface ID to get settings for. If this parameter is omitted, it will default to eth0. +To view the interface ID for each of the interfaces, run the Get-Statistics command. The interface ID is the first number displayed in each interface row. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The Interface ID to get settings for. If this parameter is omitted, it will default to eth0. +To view the interface ID for each of the interfaces, run the Get-Statistics command. The interface ID is the first number displayed in each interface row. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-NetworkInterface + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Id : 0 +IPAddress : 10.154.11.180/16 +Mtu : 1500 +InterfaceType : Port +GeoTrafficEnable : yes +DefaultInterface : yes + +Id : 1 +IPAddress : 10.154.11.180/16 +Mtu : 1500 +InterfaceType : Port +GeoTrafficEnable : no +DefaultInterface : no + + + + + + + + + + + + + + + + + Get-NetworkOptions + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkConfiguration + + + + + Get + NetworkOptions + + + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkConfiguration + + + + Get-NetworkOptions + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-NetworkOptions + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-NetworkRoute + + Allows you to view the details of all Additional Routes. + + + + + Get + NetworkRoute + + + + Allows you to view the details of all Additional Routes. + + + + Get-NetworkRoute + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-NetworkRoute + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-NetworkRoute + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Route : @{Destination=10.154.11.24/32; Gateway=10.154.2.32} + + + + + + + + + + + + + + + + + Get-NetworkSNMPConfiguration + + Allows you to view the values of the various SNMP options. + + + + + Get + NetworkSNMPConfiguration + + + + Allows you to view the values of the various SNMP options. + + + + Get-NetworkSNMPConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-NetworkSNMPConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-NetworkSNMPConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +SNMPEnable : yes +SNMPv3enable : no +SNMPClient : +SNMPCommunity : +SNMPContact : +SNMPLocation : +SNMPTrapEnable : no + + + + + + + + + + + + + + + + + Get-PacketFilterOptionACL + + Retrieves the value of the Packet Routing Filter option. + + + + + Get + PacketFilterOptionACL + + + + Retrieves the value of the Packet Routing Filter option. This can also be used to determine whether packet filtering is enabled. + + + + Get-PacketFilterOptionACL + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-PacketFilterOptionACL + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-PacketFilterOptionACL + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{PacketFilterConfiguration=} +Param........: @{aclstatus=enable; aclmethod=reply; aclblockall=free} + + + + + + + + + + + + + + + + + Get-Parameter + + WARNING: This function is deprecated. Use the following command instead: +Get-LmParameter + + + + + Get + Parameter + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmParameter + + + + Get-Parameter + + Param + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-Parameter + + Param + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Param + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-RealServer + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcRealServer + + + + + Get + RealServer + + + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcRealServer + + + + Get-RealServer + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RSPort + + + + Int32 + + + RSIndex + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-RealServer + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RSPort + + + + Int32 + + + RSIndex + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + RealServer + + + + String + + String + + + + + + RSPort + + + + Int32 + + Int32 + + + + + + RSIndex + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-Route + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkRoute + + + + + Get + Route + + + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkRoute + + + + Get-Route + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-Route + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-Rule + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcContentRule + + + + + Get + Rule + + + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcContentRule + + + + Get-Rule + + RuleName + + + + String + + + RuleType + + + + String + + + All + + + + SwitchParameter + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-Rule + + RuleName + + + + String + + + RuleType + + + + String + + + All + + + + SwitchParameter + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RuleName + + + + String + + String + + + + + + RuleType + + + + String + + String + + + + + + All + + + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-SAMLDomain + + Retrieve details about the specified SAML SSO domain. + + + + + Get + SAMLDomain + + + + Retrieve the parameter values for a SAML SSO domain. + + + + Get-SAMLDomain + + Domain + + The name of the SAML SSO domain to retrieve the details for. If the Domain is not specified, the command returns all the available SAML domains. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SAMLDomain + + Domain + + The name of the SAML SSO domain to retrieve the details for. If the Domain is not specified, the command returns all the available SAML domains. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + The name of the SAML SSO domain to retrieve the details for. If the Domain is not specified, the command returns all the available SAML domains. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SAMLDomain + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Domain=System.Object[]} +Param........: +Id : 9 +Name : EXAMPLE2.COM +server : 10.154.45.22 +auth_type : SAML +idp_entity_id : +idp_sso_url : +idp_logoff_url : +idp_cert : +sp_entity_id : idp-3.example.com +sp_cert : UseSelfSigned +sess_tout_type : idle time +sess_tout_idle_pub : 900 +sess_tout_duration_pub : 1800 + + + + + + + + + + + + + + + + + GetSDNController + + WARNING: This function is deprecated. Use the following command instead: +Get-SdnController + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-SdnController + + + + GetSDNController + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + GetSDNController + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-SdnController + + WARNING: This function is deprecated. Use the following command instead: +Get-SdnController + + + + + Get + SdnController + + + + WARNING: This function is deprecated. Use the following command instead: +Get-SdnController + + + + Get-SdnController + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SdnController + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SdnController + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=Data} +Return Code..: 200 +Response.....: Command successfully executed. +Param........: cluster cluster + +id controller +-- ---------- +1 controller +3 controller + + + + + + + + + + + + + + + + + Get-SecAdminAccess + + Retrieve the admin access settings. + + + + + Get + SecAdminAccess + + + + This command returns the admin access settings (WuiDefaultGateway, WuiNetworkInterfaceId, WuiPort). + + + + Get-SecAdminAccess + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SecAdminAccess + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SecAdminAccess + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{SecAdminAccessConfiguration=} +Param........: @{WuiDefaultGateway=; WuiNetworkInterfaceId=0; WuiPort=443} + + + + + + + + + + + + + + + + + Get-SecAdminWuiConfiguration + + Retrieve the admin Web User Interface (WUI) access settings. + + + + + Get + SecAdminWuiConfiguration + + + + Displays these settings, including the supported TLS protocols and WUI cipher set. + + + + Get-SecAdminWuiConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SecAdminWuiConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SecAdminWuiConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{SecAdminWuiConfiguration=} +Param........: @{WUITLSProtocols=0; WUICipherset=; sessioncontrol=yes; sessionbasicauth=no; sessionmaxfailattempts=0; sessionidletime=0; sessionconcurre +nt=0; wuipreauth=} + + + + + + + + + + + + + + + + + Get-SecRemoteAccess + + Allows you to view Remote Access options. + + + + + Get + SecRemoteAccess + + + + Allows you to view Remote Access options. + + + + Get-SecRemoteAccess + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SecRemoteAccess + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and does not return all of the available parameters. Please refer to the Get-Help of the Get-Parameter command to view a full list of parameters that can be returned. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SecRemoteAccess + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Param........: @{sshaccess=yes; sshiface=all; sshport=22; wuiaccess=yes; enableapi=yes; geoclients=; geopartners=10.154.11.190; geosshport=22; geosshifa +ce=0; MultiHomedWui=no; SSHPreAuthBanner=; AllowUpdateChecks=yes} + + + + + + + + + + + + + + + + + Get-SecRemoteAccessLoginMethod + + Retrieve the Admin Login Method. + + + + + Get + SecRemoteAccessLoginMethod + + + + This command returns the Admin Login Method for the WUI, for example, "Password or Client certificate" or "Password Only Access (default)". + + + + Get-SecRemoteAccessLoginMethod + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SecRemoteAccessLoginMethod + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SecRemoteAccessLoginMethod + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{LoginMethod=PasswordOrClientCertificate} +Param........: PasswordOrClientCertificate +PasswordOrClientCertificate + + + + + + + + + + + + + + + + + Get-SecUser + + Displays permissions for a user, or users. + + + + + Get + SecUser + + + + Specifying a username for the User parameter displays details for that partiular user. Omitting the User parameter will return details for all users. + + + + Get-SecUser + + User + + Username of the relevant user. If this parameter is omitted, permissions for all users will be returned. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SecUser + + User + + Username of the relevant user. If this parameter is omitted, permissions for all users will be returned. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + User + + Username of the relevant user. If this parameter is omitted, permissions for all users will be returned. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SecUser + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + +Name Perms +---- ----- +Example +K360Central_10.154.172.215_158 root +K360Central_10.154.153.94_14 root +example2 + + + + + + + + + + + + + + + + + Get-SecWuiAuthentication + + View the values of WUI Authentication and Authorization options. + + + + + Get + SecWuiAuthentication + + + + Returns details such as the RADIUS configuration. + + + + Get-SecWuiAuthentication + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SecWuiAuthentication + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SecWuiAuthentication + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{SecWuiAuthenticationConfiguration=} +Param........: @{radiusserver=; radiusport=0; radiussecret=********; radiusrevalidateinterval=60; radiusbackupserver=; radiusbackupport=0; radiusbackups +ecret=********; wuildapep=; sessionlocalauth=no; sessionauthmode=0} + + + + + + + + + + + + + + + + + Get-ServiceHealth + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcServiceHealth + + + + + Get + ServiceHealth + + + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcServiceHealth + + + + Get-ServiceHealth + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-ServiceHealth + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-SNMPOption + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkSNMPConfiguration + + + + + Get + SNMPOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-NetworkSNMPConfiguration + + + + Get-SNMPOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SNMPOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-SSODomain + + Returns a list of any SSO domains that exist and their settings. + + + + + Get + SSODomain + + + + Returns a list of any SSO domains that exist and their settings. + + + + Get-SSODomain + + Domain + + To retrieve details about a particular domain, specify the domain name using this parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SSODomain + + Domain + + To retrieve details about a particular domain, specify the domain name using this parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + To retrieve details about a particular domain, specify the domain name using this parameter. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SSODomain + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Param........: @{Id=9; Name=EXAMPLE2.COM; testuser=; ldap_version=3; server_side=0; auth_type=RSA-SECURID; logon_fmt=Principalname; logon_fmt2=Principal +name; logon_transcode=1; logon_domain=; idp_entity_id=; idp_sso_url=; idp_logoff_url=; idp_cert=; sp_entity_id=; sp_cert=UseSelfSigned; kerberos_domain= +; kerberos_kdc=; kcd_username=; max_failed_auths=0; reset_fail_tout=60; unblock_tout=1800; sess_tout_type=idle time; sess_tout_idle_pub=900; sess_tout_d +uration_pub=1800; sess_tout_idle_priv=900; sess_tout_duration_priv=28800; cert_check_asi=0; cert_check_cn=0} + + +Id : 9 +Name : EXAMPLE2.COM +testuser : +ldap_version : 3 +server_side : 0 +auth_type : RSA-SECURID +logon_fmt : Principalname +logon_fmt2 : Principalname +logon_transcode : 1 +logon_domain : +idp_entity_id : +idp_sso_url : +idp_logoff_url : +idp_cert : +sp_entity_id : +sp_cert : UseSelfSigned +kerberos_domain : +kerberos_kdc : +kcd_username : +max_failed_auths : 0 +reset_fail_tout : 60 +unblock_tout : 1800 +sess_tout_type : idle time +sess_tout_idle_pub : 900 +sess_tout_duration_pub : 1800 +sess_tout_idle_priv : 900 +sess_tout_duration_priv : 28800 +cert_check_asi : 0 +cert_check_cn : 0 + + + + + + + + + + + + + + + + + Get-SSODomainLockedUser + + Displays a list of users who are currently blocked from accessing the SSO domain. + + + + + Get + SSODomainLockedUser + + + + Displays a list of users who are currently blocked from accessing the SSO domain. + + + + Get-SSODomainLockedUser + + Domain + + The name of the SSO domain. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SSODomainLockedUser + + Domain + + The name of the SSO domain. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + The name of the SSO domain. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SSODomainLockedUser -Domain example2.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{LockedUsers=} +Param........: @{domainid=1; user=ruth@qasp.com; locktime=Mon Apr 24 13:38:14 2017} +domainid : 1 +user : ruth@qasp.com +locktime : Mon Apr 24 13:38:14 2017 + + + + + + + + + + + + + + + + + Get-SSODomainSession + + Retrieve details of an open SSO domain session, or sessions. + + + + + Get + SSODomainSession + + + + Retrieve details of an open SSO domain session, or sessions. + + + + Get-SSODomainSession + + Domain + + Specify the name of the SSO domain to retrieve the details for. + + String + + + User + + To retrieve a list of all open sessions for the specified SSO domain, leave this parameter blank. To narrow down the list to only retrieve sessions for a particular user, specify the username here. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SSODomainSession + + Domain + + Specify the name of the SSO domain to retrieve the details for. + + String + + + User + + To retrieve a list of all open sessions for the specified SSO domain, leave this parameter blank. To narrow down the list to only retrieve sessions for a particular user, specify the username here. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + Specify the name of the SSO domain to retrieve the details for. + + String + + String + + + + + + User + + To retrieve a list of all open sessions for the specified SSO domain, leave this parameter blank. To narrow down the list to only retrieve sessions for a particular user, specify the username here. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SSODomainSession -Domain qasp.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{SSOSession=} +Param........: @{NumberOfSessions=1; Session=} +NumberOfSessions : 1 +Session : @{User=ruth@qasp.com; Client=10.0.70.230:40696; Destination=172.20.0.125; Created=2017-04-24 13:16:03; Expires=2017-04-24 13:46:03; + Cookie=-} + + + + + + + + + + + + + + + + + Get-Statistics + + WARNING: This function is deprecated. Use the following command instead: +Get-LogStatistics + + + + + Get + Statistics + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LogStatistics + + + + Get-Statistics + + VirtualService + + + + SwitchParameter + + + RealServer + + + + SwitchParameter + + + Totals + + + + SwitchParameter + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-Statistics + + VirtualService + + + + SwitchParameter + + + RealServer + + + + SwitchParameter + + + Totals + + + + SwitchParameter + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + + + SwitchParameter + + SwitchParameter + + + + + + RealServer + + + + SwitchParameter + + SwitchParameter + + + + + + Totals + + + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-SyslogOption + + WARNING: This function is deprecated. Use the following command instead: +Get-LogSyslogConfiguration + + + + + Get + SyslogOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LogSyslogConfiguration + + + + Get-SyslogOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-SyslogOption + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-Template + + Retrieve a list of installed templates. + + + + + Get + Template + + + + This command will return a list of templates and related details. + + + + Get-Template + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-Template + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-Template + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{name=TFTP; comment=Handles TFTP over port 69 (Version 1.0); certified=yes} + + + + + + + + + + + + + + + + + Get-TlsCertificate + + List the currently installed certificates and their fingerprints. + + + + + Get + TlsCertificate + + + + A list of certificates and fingerprints is displayed. + + + + Get-TlsCertificate + + CertName + + To retreive details for a particular certificate, specify the name using the CertName parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-TlsCertificate + + CertName + + To retreive details for a particular certificate, specify the name using the CertName parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + CertName + + To retreive details for a particular certificate, specify the name using the CertName parameter. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Outform + + Specify the format - either PEM or DER. DER is Base64-encoded because it is a binary format. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-TlsCertificate + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + +name modulus +---- ------- +Example C89E5A8F8B1FCD8F366D3DE3350B17BA44A18892DECE87B1149F26B849BA9581EFC281FBC9584F763430EF3EAC42E9F63866080766070A60C9314F10C0A07D3CE833928... +2 C89E5A8F8B1FCD8F366D3DE3350B17BA44A18892DECE87B1149F26B849BA9581EFC281FBC9584F763430EF3EAC42E9F63866080766070A60C9314F10C0A07D3CE833928... +ExampleCert2 C89E5A8F8B1FCD8F366D3DE3350B17BA44A18892DECE87B1149F26B849BA9581EFC281FBC9584F763430EF3EAC42E9F63866080766070A60C9314F10C0A07D3CE833928... + + + + + + + + + + + + + + + + + Get-TlsCipherSet + + Retrieve the list of ciphers in a cipher set. + + + + + Get + TlsCipherSet + + + + Retrieves the list of ciphers which are in a specified system-defined or custom cipher set. + + + + Get-TlsCipherSet + + Name + + The name of the cipher set. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-TlsCipherSet + + Name + + The name of the cipher set. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the cipher set. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-TlsCipherSet -Name Default + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +ECDHE-RSA-AES256-SHA384 +ECDHE-ECDSA-AES256-SHA384 +DHE-RSA-AES256-SHA256 +DHE-DSS-AES256-SHA256 +DH-RSA-AES256-SHA256 +DH-DSS-AES256-SHA256 +ECDH-RSA-AES256-SHA384 +ECDH-ECDSA-AES256-SHA384 +AES256-SHA256 +AES256-SHA +ECDHE-RSA-AES128-SHA256 +ECDHE-ECDSA-AES128-SHA256 +DHE-RSA-AES128-SHA256 +DHE-DSS-AES128-SHA256 +DH-RSA-AES128-SHA256 +DH-DSS-AES128-SHA256 +ECDH-RSA-AES128-SHA256 +ECDH-ECDSA-AES128-SHA256 +AES128-SHA256 +AES128-SHA +DES-CBC3-SHA + + + + + + + + + + + + + + + + + Get-TlsHSM + + Displays the HSM configuration settings. + + + + + Get + TlsHSM + + + + Displays the HSM configuration settings. + + + + Get-TlsHSM + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-TlsHSM + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-TlsHSM + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{engine=cavhsm; addr=10.154.11.129; user=ExampleUser; enable=0} + + + + + + + + + + + + + + + + + Get-TlsIntermediateCertificate + + Retrieve a list of intedmediate certificates currently installed on the LoadMaster. + + + + + Get + TlsIntermediateCertificate + + + + Retrieve a list of intedmediate certificates currently installed on the LoadMaster. + + + + Get-TlsIntermediateCertificate + + CertName + + To retrieve details for a particular intermediate certificate, specify the certificate name using the CertName parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-TlsIntermediateCertificate + + CertName + + To retrieve details for a particular intermediate certificate, specify the certificate name using the CertName parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + CertName + + To retrieve details for a particular intermediate certificate, specify the certificate name using the CertName parameter. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Outform + + Specify the format - either PEM or DER. DER is Base64-encoded because it is a binary format. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-TlsIntermediateCertificate + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +1 C29073E67DD34ABC117326F05B3A6EBC7610ADF0C57D6731B705E56768C36CDA211FD4C21E1FE7D6E08986B2F72973C22E4AA1B5238FE2738C3F5A7202D67BE291C6CAEDA866... +Exam... C89E5A8F8B1FCD8F366D3DE3350B17BA44A18892DECE87B1149F26B849BA9581EFC281FBC9584F763430EF3EAC42E9F63866080766070A60C9314F10C0A07D3CE833928F431D... + + + + + + + + + + + + + + + + + Get-VirtualService + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcVirtualService + + + + + Get + VirtualService + + + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcVirtualService + + + + Get-VirtualService + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-VirtualService + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-VSPacketFilterACL + + Displays the addresses on the black or white list for a Virtual Service. + + + + + Get + VSPacketFilterACL + + + + Lists the host and network IP addresses on the black or white access control list for a specific Virtual Service. Note that black and white lists are only enabled when packet filtering is enabled. + + + + Get-VSPacketFilterACL + + VirtualService + + Specifies the Virtual Service IP address. + + String + + + VSPort + + Specifies the Virtual Service port number. + + Int32 + + + VSProtocol + + Specifies the Virtual Service protocol: "tcp" or "udp". + + String + + + Type + + Specify the type of list: +- black: blocked addresses +- white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-VSPacketFilterACL + + VirtualService + + Specifies the Virtual Service IP address. + + String + + + VSPort + + Specifies the Virtual Service port number. + + Int32 + + + VSProtocol + + Specifies the Virtual Service protocol: "tcp" or "udp". + + String + + + Type + + Specify the type of list: +- black: blocked addresses +- white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + Specifies the Virtual Service IP address. + + String + + String + + + + + + VSPort + + Specifies the Virtual Service port number. + + Int32 + + Int32 + + + + + + VSProtocol + + Specifies the Virtual Service protocol: "tcp" or "udp". + + String + + String + + + + + + Type + + Specify the type of list: +- black: blocked addresses +- white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-VSPacketFilterACL -VSPort 80 -VSProtocol tcp -Type black -VirtualService 10.35.47.16 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +10.35.47.16 80 tcp @{addr=10.145.33.4/32; comment=} + + + + + + + + + + + + + + + + + Get-WafAuditFiles + + Returns a list of the WAF audit file names. + + + + + Get + WafAuditFiles + + + + Returns a list of the WAF audit file names. + + + + Get-WafAuditFiles + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-WafAuditFiles + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-WafAuditFiles + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +File1 : wafaudit.1 + + + + + + + + + + + + + + + + + GetWafChangeLog + + WARNING: This function is deprecated. Use the following command instead: +Export-WafChangeLog + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Export-WafChangeLog + + + + GetWafChangeLog + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + GetWafChangeLog + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-WafRules + + Displays details about all installed Web Application Firewall (WAF) rules (commercial and custom). + + + + + Get + WafRules + + + + Displays details about all installed Web Application Firewall (WAF) rules (commercial and custom). It also shows if the rules are active or not. Active rules are ones that have been assigned to one or more Virtual Services. + + + + Get-WafRules + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-WafRules + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-WafRules + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + +Inactive1 : Generic/ip_reputation +Inactive2 : Generic/known_vulns +Inactive3 : Generic/malware_detection +Inactive4 : Generic/botnet_attacks +Inactive5 : Generic/creditcard_known +Inactive6 : Generic/creditcard_track_pan +Inactive7 : ApplicationSpecific/cpanel_attacks +Inactive8 : ApplicationSpecific/drupal_attacks +Inactive9 : ApplicationSpecific/joomla_attacks +Inactive10 : ApplicationSpecific/modx_attacks +Inactive11 : ApplicationSpecific/netcat_attacks +Inactive12 : ApplicationSpecific/oscommerce_attacks +Inactive13 : ApplicationSpecific/phpbb_attacks +Inactive14 : ApplicationSpecific/sharepoint_attacks +Inactive15 : ApplicationSpecific/typo3_attacks +Inactive16 : ApplicationSpecific/vbulletin_attacks +Inactive17 : ApplicationSpecific/wordpress_attacks +Inactive18 : ApplicationSpecific/owa_attacks +Inactive19 : ApplicationSpecific/iis_attacks +Inactive20 : ApplicationGeneric/lfi_attacks +Inactive21 : ApplicationGeneric/rfi_attacks +Inactive22 : ApplicationGeneric/sqli_attacks +Inactive23 : ApplicationGeneric/xss_attacks + + + + + + + + + + + + + + + + + Get-WafRulesAutoUpdateConfiguration + + Displays the values of the Web Application Firewall (WAF) auto-update configuration. + + + + + Get + WafRulesAutoUpdateConfiguration + + + + Displays the values of the WAF configuration relating to the automatic updating of commercial rules. + + + + Get-WafRulesAutoUpdateConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-WafRulesAutoUpdateConfiguration + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-WafRulesAutoUpdateConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +AutoUpdate : 0 +AutoInstall : 1 +InstallTimeHour : 4 +LastUpdated : 2017-04-05 + + + + + + + + + + + + + + + + + GetWafSettings + + WARNING: This function is deprecated. Use the following command instead: +Get-WafRulesAutoUpdateConfiguration + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-WafRulesAutoUpdateConfiguration + + + + GetWafSettings + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + GetWafSettings + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-WUIAuth + + WARNING: This function is deprecated. Use the following command instead: +Get-SecWuiAuthentication + + + + + Get + WUIAuth + + + + WARNING: This function is deprecated. Use the following command instead: +Get-SecWuiAuthentication + + + + Get-WUIAuth + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-WUIAuth + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get-WUISetting + + WARNING: This function is deprecated. Use the following command instead: +Get-SecAdminWuiConfiguration + + + + + Get + WUISetting + + + + WARNING: This function is deprecated. Use the following command instead: +Get-SecAdminWuiConfiguration + + + + Get-WUISetting + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Get-WUISetting + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HSMConfigure + + WARNING: This function is deprecated. Use the following command instead: +Set-TlsHSM + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-TlsHSM + + + + HSMConfigure + + Sethsm + + + + String + + + Safeaddr + + + + String + + + Clpass + + + + String + + + Enable + + + + Boolean + + + Cavhsmaddr + + + + String + + + Cavhsmpasswd + + + + String + + + Cavhsmuser + + + + String + + + Cavhsmenable + + + + Boolean + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + HSMConfigure + + Sethsm + + + + String + + + Safeaddr + + + + String + + + Clpass + + + + String + + + Enable + + + + Boolean + + + Cavhsmaddr + + + + String + + + Cavhsmpasswd + + + + String + + + Cavhsmuser + + + + String + + + Cavhsmenable + + + + Boolean + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Sethsm + + + + String + + String + + + + + + Safeaddr + + + + String + + String + + + + + + Clpass + + + + String + + String + + + + + + Enable + + + + Boolean + + Boolean + + + + + + Cavhsmaddr + + + + String + + String + + + + + + Cavhsmpasswd + + + + String + + String + + + + + + Cavhsmuser + + + + String + + String + + + + + + Cavhsmenable + + + + Boolean + + Boolean + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HSMGenerateClientCert + + WARNING: This function is deprecated. Use the following command instead: +New-TlsHSMClientCert + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-TlsHSMClientCert + + + + HSMGenerateClientCert + + Path + + + + String + + + Clcertname + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + HSMGenerateClientCert + + Path + + + + String + + + Clcertname + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + Clcertname + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HSMShow + + WARNING: This function is deprecated. Use the following command instead: +Get-TlsHSM + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-TlsHSM + + + + HSMShow + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + HSMShow + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HSMUploadCACert + + WARNING: This function is deprecated. Use the following command instead: +Import-TlsHSMCACert + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Import-TlsHSMCACert + + + + HSMUploadCACert + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + HSMUploadCACert + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Import-GeoDNSSECKeySigningKey + + Import the GEO DNSSEC Key Signing Keys (KSKs). + + + + + Import + GeoDNSSECKeySigningKey + + + + This command uploads both KSK files at the same time. + + + + Import-GeoDNSSECKeySigningKey + + privateKeyFile + + The path to the private key file to upload. + + String + + + publicKeyFile + + The path to the public key file to upload. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Import-GeoDNSSECKeySigningKey + + privateKeyFile + + The path to the private key file to upload. + + String + + + publicKeyFile + + The path to the public key file to upload. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + privateKeyFile + + The path to the private key file to upload. + + String + + String + + + + + + publicKeyFile + + The path to the public key file to upload. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Import-GeoDNSSECKeySigningKey -privateKeyFile .\key.private -publicKeyFile .\public.key + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Import-TlsHSMCACert + + Upload the Certificate Authority (CA) certificate that has been downloaded from the Hardware Security Module (HSM). + + + + + Import + TlsHSMCACert + + + + Upload the CA certificate that has been downloaded from the HSM. + + + + Import-TlsHSMCACert + + Path + + The path to the certificate file followed by a backslash and the certificate file name followed by the file extension (.pem). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Import-TlsHSMCACert + + Path + + The path to the certificate file followed by a backslash and the certificate file name followed by the file extension (.pem). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to the certificate file followed by a backslash and the certificate file name followed by the file extension (.pem). + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Import-TlsHSMCACert –Path c:\CertificateFileName.pem + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Initialize-LmConnectionParameters + + Specify the connection parameters to use for the session. + + + + + Initialize + LmConnectionParameters + + + + To run PowerShell API commands, you need to establish authentication with the LoadMaster. There are two ways to establish authentication: +• Using credentials; a LoadMaster username (Credential) and password +• Using certificate-based authentication +Whichever option you use, you can either specify the parameters when running individual commands, or using the Initialize-LmConnectionParameters command. +You can also globally set the KEMP LoadMaster IP address that you are directing the commands to by using the Initialize-LmConnectionParameters command, for example: +Initialize-LmConnectionParameters -Address 10.11.0.60 -LBPort 443 -Credential bal +You can either enter a username for the LoadMaster or provide a PSCredential object. When you enter a username, a prompt appears asking for the password. You can override the globally-provided LoadBalancer address and username on each individual command by using the LoadBalancer or Credential parameter within the command. +Similarly, you can specify the details to use certificate-based authentication using the Initialize-LmConnectionParameters command. For further information on the various steps involved to configure certificate-based authentication, refer to the PowerShell Interface Description document. + + + + Initialize-LmConnectionParameters + + Address + + Specify the address of the LoadMaster to run commands on. +Use this command to specify the LoadMaster address to be used for this session. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Use this command to specify the LoadMaster port to be used for the session. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Use this command to specify the username for the session. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Initialize-LmConnectionParameters + + Address + + Specify the address of the LoadMaster to run commands on. +Use this command to specify the LoadMaster address to be used for this session. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Use this command to specify the LoadMaster port to be used for the session. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Use this command to specify the CertificateStoreLocation for the session. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Use this command to specify the SubjectCN for the session. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Address + + Specify the address of the LoadMaster to run commands on. +Use this command to specify the LoadMaster address to be used for this session. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Use this command to specify the LoadMaster port to be used for the session. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Use this command to specify the username for the session. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Use this command to specify the CertificateStoreLocation for the session. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Use this command to specify the SubjectCN for the session. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Initialize-LmConnectionParameters -Address 10.154.11.180 -Credential bal + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Initialize-LoadBalancer + + WARNING: This function is deprecated. Use the following command instead: +Initialize-LmConnectionParameters + + + + + Initialize + LoadBalancer + + + + WARNING: This function is deprecated. Use the following command instead: +Initialize-LmConnectionParameters + + + + Initialize-LoadBalancer + + Address + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Initialize-LoadBalancer + + Address + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Address + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Install-GeoIPBlacklistDatabase + + Install any downloaded updates now. + + + + + Install + GeoIPBlacklistDatabase + + + + Run this command to install any updates to the GEO IP blacklist database which have been downloaded. + + + + Install-GeoIPBlacklistDatabase + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Install-GeoIPBlacklistDatabase + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Install-GeoIPBlacklistDatabase + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Install-LmAddon + + Allows you to upload an add-on pack. + + + + + Install + LmAddon + + + + Allows you to upload an add-on pack. + + + + Install-LmAddon + + Path + + The path to the add-on file followed by a backslash and then the filename, for example C:\Users\ExampleUser\Desktop\Akami.7.1-22b.20141204-1618 + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Install-LmAddon + + Path + + The path to the add-on file followed by a backslash and then the filename, for example C:\Users\ExampleUser\Desktop\Akami.7.1-22b.20141204-1618 + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to the add-on file followed by a backslash and then the filename, for example C:\Users\ExampleUser\Desktop\Akami.7.1-22b.20141204-1618 + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Install-LmAddon -Path C:\Temp\SMART.7.2.39.0.15038.DEV.20170424-0907 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Package=Addon Package \'SMART\' Correctly installed - Please reboot to activate it.} + + + + + + + + + + + + + + + + + Install-LmPatch + + Allows you to update the LoadMaster with a patch to the firmware. + + + + + Install + LmPatch + + + + Allows you to update the LoadMaster with a patch to the firmware. You will be asked to restart the LoadMaster for the command to complete. + + + + Install-LmPatch + + Path + + The local path to the LoadMaster patch file that should be uploaded. This parameter is required. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Install-LmPatch + + Path + + The local path to the LoadMaster patch file that should be uploaded. This parameter is required. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The local path to the LoadMaster patch file that should be uploaded. This parameter is required. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Install-LmPatch -Path c:\SoftwareUpdate\7.0-10.20130507-1024-32bit + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{PatchData=Patch successfully installed. Please reboot the LM to apply the new software.} + + + + + + + + + + + + + + + + + Install-Patch + + WARNING: This function is deprecated. Use the following command instead: +Install-LmPatch + + + + + Install + Patch + + + + WARNING: This function is deprecated. Use the following command instead: +Install-LmPatch + + + + Install-Patch + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Install-Patch + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Install-SAMLIdpMetafile + + Upload an Identity Provider (IdP) metadata file. + + + + + Install + SAMLIdpMetafile + + + + This simplifies the configuration of the IdP attributes, including the IdP Entity ID, IdP SSO URL and IdP Logoff URL. The metadata file can be downloaded from the IdP. + + + + Install-SAMLIdpMetafile + + Domain + + The name of the SSO domain to upload the mdetadata file to. + + String + + + Path + + The path to the metadata file to be uploaded, followed by the filename and extension, for example, C:\ExampleFolder\ExampleIdPMetaDataFile.xml. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Install-SAMLIdpMetafile + + Domain + + The name of the SSO domain to upload the mdetadata file to. + + String + + + Path + + The path to the metadata file to be uploaded, followed by the filename and extension, for example, C:\ExampleFolder\ExampleIdPMetaDataFile.xml. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + The name of the SSO domain to upload the mdetadata file to. + + String + + String + + + + + + Path + + The path to the metadata file to be uploaded, followed by the filename and extension, for example, C:\ExampleFolder\ExampleIdPMetaDataFile.xml. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Install-SAMLIdpMetafile -Domain example2.com -Path C:\Temp\federationmetadata.xml.zip + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Domain=} +Param........: @{Id=9; Name=EXAMPLE2.COM; server=10.154.45.22; auth_type=SAML; idp_entity_id=; idp_sso_url=; idp_logoff_url=; idp_cert=; sp_entity_id=; +sp_cert=UseSelfSigned; sess_tout_type=idle time; sess_tout_idle_pub=900; sess_tout_duration_pub=1800} + + +Id : 9 +Name : EXAMPLE2.COM +server : 10.154.45.22 +auth_type : SAML +idp_entity_id : +idp_sso_url : +idp_logoff_url : +idp_cert : +sp_entity_id : +sp_cert : UseSelfSigned +sess_tout_type : idle time +sess_tout_idle_pub : 900 +sess_tout_duration_pub : 1800 + + + + + + + + + + + + + + + + + Install-SSORSAConfigurationFile + + Allows you to upload the RSA configuration file. + + + + + Install + SSORSAConfigurationFile + + + + If using RSA-SECURID as the authtype, a configuration file needs to be uploaded to the LoadMaster in order for the authentication to work. +The Install-SSORSAConfigurationFile command can be used to upload these files. + + + + Install-SSORSAConfigurationFile + + Path + + The path to the RSA configuration file, followed by a backslash and then the filename.extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Install-SSORSAConfigurationFile + + Path + + The path to the RSA configuration file, followed by a backslash and then the filename.extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to the RSA configuration file, followed by a backslash and then the filename.extension. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Install-SSORSAConfigurationFile -Path C:\examplefolder.AM_Config.zip + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Authentication Manager Config successfully loaded.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Authentication Manager Config successfully loaded. + + + + + + + + + + + + + + + + + Install-SSORSANodeSecretAndPassword + + Allows you to upload the node secret file. + + + + + Install + SSORSANodeSecretAndPassword + + + + If using RSA-SECURID as the authtype, a node secret file needs to be uploaded to the LoadMaster in order for the authentication to work. +To upload the node secret file, run the Install-SSORSANodeSecretAndPassword command. + + + + Install-SSORSANodeSecretAndPassword + + Password + + The password to decrypt the node secret. + + String + + + Path + + The path to the node secret file, followed by a backslash and then the filename.extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Install-SSORSANodeSecretAndPassword + + Password + + The password to decrypt the node secret. + + String + + + Path + + The path to the node secret file, followed by a backslash and then the filename.extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Password + + The password to decrypt the node secret. + + String + + String + + + + + + Path + + The path to the node secret file, followed by a backslash and then the filename.extension. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Install-SSORSANodeSecretAndPassword -Password examplepassword -Path C:\examplefolder\LM_NodeSecret.zip + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Node Secret successfully loaded.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Node Secret successfully loaded. + + + + + + + + + + + + + + + + + Install-Template + + Allows you to upload a template to the LoadMaster. + + + + + Install + Template + + + + Allows you to upload a template to the LoadMaster. + + + + Install-Template + + Path + + The path to the template location followed by a backslash and the filename of the template.tmpl. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Install-Template + + Path + + The path to the template location followed by a backslash and the filename of the template.tmpl. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to the template location followed by a backslash and the filename of the template.tmpl. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Install-Template –Path “C:\ Exchange2013Additional v1.6.4.tmpl” + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + +TemplateData +------------ +Installed 1 new KEMP certified templates. + + + + + + + + + + + + + + + + + Install-WafRulesDatabase + + Manually install the latest commercial Web Application Firewall (WAF) rules. + + + + + Install + WafRulesDatabase + + + + Manually install the (previously downloaded) latest commercial WAF rules. + + + + Install-WafRulesDatabase + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Install-WafRulesDatabase + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Install-WafRulesDatabase + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + IsGEOEnabled + + WARNING: This function is deprecated. Use the following command instead: +Test-LmGeoEnabled + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Test-LmGeoEnabled + + + + IsGEOEnabled + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + IsGEOEnabled + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Join-Cluster + + Initiates a node joining a cluster. + + + + + Join + Cluster + + + + This makes the node LoadMaster available to be added. To finish adding the node, please run the New-ClusterNode command on the shared IP address immediately after running the Join-Cluster command in a different console window. + + + + Join-Cluster + + LoadBalancer + + Specify the shared address of the cluster to run the command on. +Note: The address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Join-Cluster + + LoadBalancer + + Specify the shared address of the cluster to run the command on. +Note: The address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the shared address of the cluster to run the command on. +Note: The address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Join-Cluster + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + ListAddons + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAddOn + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAddOn + + + + ListAddons + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListAddons + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ListCert + + WARNING: This function is deprecated. Use the following command instead: +Get-TlsCertificate + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-TlsCertificate + + + + ListCert + + CertName + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListCert + + CertName + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + CertName + + + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ListCert + + + + + Example Command: +cert +---- +ExampleCertificate + + + + + + + + + + + + + + + + + ListCustomLocation + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoCustomLocation + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoCustomLocation + + + + ListCustomLocation + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListCustomLocation + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ListFQDNs + + Displays each of the FQDNs and their settings. + + + + + + + + + + Displays each of the FQDNs and their settings. + + + + ListFQDNs + + FQDN + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListFQDNs + + FQDN + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ListFQDNs + + + + + Example Output: +Mapping : 0 +IsolatedIPs : Y +SiteRecoveryMode : auto +FailTime : 300 +Failover : 0 +SelectionCriteria : rr +FullyQualifiedDomainName : www.example3.com. + +Mapping : 0 +IsolatedIPs : Y +SiteRecoveryMode : auto +FailTime : 0 +Failover : 0 +SelectionCriteria : rr +FullyQualifiedDomainName : 10.154.60.65. + +Mapping : 0 +IsolatedIPs : Y +SiteRecoveryMode : auto +FailTime : 0 +Failover : 0 +SelectionCriteria : rr +FullyQualifiedDomainName : example4.com. + + + + + + + + + + + + + + + + + ListIfconfig + + WARNING: This function is deprecated. Use the following command instead: +Get-LmNetworkInterface + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmNetworkInterface + + + + ListIfconfig + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListIfconfig + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ListIfconfig + + + + + Example Output: +Network +------- +0eth010002718138020260710800up1462801058,1eth11000171006002076800up1462801058,2bnd21000206736002035771400up1462801058,3bnd31000206748402135745000up1462801058 + + + + + + + + + + + + + + + + + ListIPs + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoIpRange + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoIpRange + + + + ListIPs + + IP + + + + String + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + + + Int32 + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListIPs + + IP + + + + String + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ListIPs + + + + + Example Output: +Longitude : 1234 +Ip : 10.154.11.29 +Used : Y +IsCustom : Y +Mask : 32 +Index : 1 +CustomLocation : ExampleLocation2 +IPAddress : 10.154.11.29 +Latitude : 1234 + +Ip : 10.154.11.30 +Used : Y +IsCustom : N +Mask : 32 +Index : 2 +IPAddress : 10.154.11.30 +country : IE,Ireland + + + + + + + + + + + + + + + + + ListMiscParameters + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoMiscParameter + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoMiscParameter + + + + ListMiscParameters + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListMiscParameters + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ListTemplates + + WARNING: This function is deprecated. Use the following command instead: +Get-Template + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-Template + + + + ListTemplates + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListTemplates + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ListVpns + + WARNING: This function is deprecated. Use the following command instead: +Get-LmVpnConnection + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmVpnConnection + + + + ListVpns + + Name + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListVpns + + Name + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ListVpns + + + + + Example Output: +pfs : disabled +localIP : 10.154.11.10 +remoteSubnet : 10.154.11.30/32 +remoteIP : 10.154.11.20 +name : Example +remoteID : 10.154.11.20 +localID : 10.154.11.10 +status : Down +localSubnet : 10.154.11.10/32 +key : + + + + + + + + + + + + + + + + + ListWafAuditFiles + + WARNING: This function is deprecated. Use the following command instead: +Get-WafAuditFiles + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-WafAuditFiles + + + + ListWafAuditFiles + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListWafAuditFiles + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ListWafRules + + WARNING: This function is deprecated. Use the following command instead: +Get-WafRules + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-WafRules + + + + ListWafRules + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ListWafRules + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LocationDataUpdate + + WARNING: This function is deprecated. Use the following command instead: +Update-GeoDatabase + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Update-GeoDatabase + + + + LocationDataUpdate + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + LocationDataUpdate + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ManInstallWafRules + + WARNING: This function is deprecated. Use the following command instead: +Install-WafRulesDatabase + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Install-WafRulesDatabase + + + + ManInstallWafRules + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ManInstallWafRules + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An error message will be displayed if any problems occur while installing the rules. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ManInstallWafRules + + Example Output: +ok + + + + + + + + + + + + + + + + + + + + ModifyCipherset + + WARNING: This function is deprecated. Use the following command instead: +Set-TlsCipherSet + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-TlsCipherSet + + + + ModifyCipherset + + Name + + + + String + + + Value + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ModifyCipherset + + Name + + + + String + + + Value + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + Value + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModifyCluster + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoCluster + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoCluster + + + + ModifyCluster + + ClusterIp + + + + String + + + ClusterName + + + + String + + + Type + + + + String + + + Checker + + + + String + + + CheckerPort + + + + Int32 + + + Enable + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ModifyCluster + + ClusterIp + + + + String + + + ClusterName + + + + String + + + Type + + + + String + + + Checker + + + + String + + + CheckerPort + + + + Int32 + + + Enable + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + + + String + + String + + + + + + ClusterName + + + + String + + String + + + + + + Type + + + + String + + String + + + + + + Checker + + + + String + + String + + + + + + CheckerPort + + + + Int32 + + Int32 + + + + + + Enable + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModifyFQDN + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDN + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDN + + + + ModifyFQDN + + FQDN + + + + String + + + SelectionCriteria + + + + String + + + SiteFailureDelay + + + + Int32 + + + SiteRecoveryMode + + + + String + + + PublicRequest + + + + String + + + PrivateRequest + + + + String + + + Failover + + + + String + + + LocalSettings + + + + Boolean + + + localttl + + + + Int32 + + + localsticky + + + + Int32 + + + UnanimousChecks + + + + Boolean + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ModifyFQDN + + FQDN + + + + String + + + SelectionCriteria + + + + String + + + SiteFailureDelay + + + + Int32 + + + SiteRecoveryMode + + + + String + + + PublicRequest + + + + String + + + PrivateRequest + + + + String + + + Failover + + + + String + + + LocalSettings + + + + Boolean + + + localttl + + + + Int32 + + + localsticky + + + + Int32 + + + UnanimousChecks + + + + Boolean + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + SelectionCriteria + + + + String + + String + + + + + + SiteFailureDelay + + + + Int32 + + Int32 + + + + + + SiteRecoveryMode + + + + String + + String + + + + + + PublicRequest + + + + String + + String + + + + + + PrivateRequest + + + + String + + String + + + + + + Failover + + + + String + + String + + + + + + LocalSettings + + + + Boolean + + Boolean + + + + + + localttl + + + + Int32 + + Int32 + + + + + + localsticky + + + + Int32 + + Int32 + + + + + + UnanimousChecks + + + + Boolean + + Boolean + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModifyIPLocation + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoIPRangeCoordinates + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoIPRangeCoordinates + + + + ModifyIPLocation + + IP + + + + String + + + Lat + + + + Int32 + + + Long + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ModifyIPLocation + + IP + + + + String + + + Lat + + + + Int32 + + + Long + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + Lat + + + + Int32 + + Int32 + + + + + + Long + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModifyMap + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDNSiteAddress + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoFQDNSiteAddress + + + + ModifyMap + + FQDN + + + + String + + + SiteAddress + + + + String + + + Checker + + + + String + + + Weight + + + + Int32 + + + Enable + + + + String + + + Cluster + + + + String + + + Mapaddress + + + + String + + + Mapport + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ModifyMap + + FQDN + + + + String + + + SiteAddress + + + + String + + + Checker + + + + String + + + Weight + + + + Int32 + + + Enable + + + + String + + + Cluster + + + + String + + + Mapaddress + + + + String + + + Mapport + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + SiteAddress + + + + String + + String + + + + + + Checker + + + + String + + String + + + + + + Weight + + + + Int32 + + Int32 + + + + + + Enable + + + + String + + String + + + + + + Cluster + + + + String + + String + + + + + + Mapaddress + + + + String + + String + + + + + + Mapport + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModifyMiscParameters + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoMiscParameter + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-GeoMiscParameter + + + + ModifyMiscParameters + + SourceOfAuthority + + + + String + + + NameSrv + + + + String + + + SOAEmail + + + + String + + + TTL + + + + String + + + Persist + + + + String + + + CheckInterval + + + + String + + + ConnTimeout + + + + String + + + RetryAttempts + + + + String + + + Zone + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ModifyMiscParameters + + SourceOfAuthority + + + + String + + + NameSrv + + + + String + + + SOAEmail + + + + String + + + TTL + + + + String + + + Persist + + + + String + + + CheckInterval + + + + String + + + ConnTimeout + + + + String + + + RetryAttempts + + + + String + + + Zone + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SourceOfAuthority + + + + String + + String + + + + + + NameSrv + + + + String + + String + + + + + + SOAEmail + + + + String + + String + + + + + + TTL + + + + String + + String + + + + + + Persist + + + + String + + String + + + + + + CheckInterval + + + + String + + String + + + + + + ConnTimeout + + + + String + + String + + + + + + RetryAttempts + + + + String + + String + + + + + + Zone + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModifySDNController + + WARNING: This function is deprecated. Use the following command instead: +Set-SdnController + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-SdnController + + + + ModifySDNController + + Cid + + + + Int32 + + + Clid + + + + Int32 + + + IPV4 + + + + String + + + Port + + + + Int32 + + + Https + + + + Boolean + + + User + + + + String + + + Password + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ModifySDNController + + Cid + + + + Int32 + + + Clid + + + + Int32 + + + IPV4 + + + + String + + + Port + + + + Int32 + + + Https + + + + Boolean + + + User + + + + String + + + Password + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Cid + + + + Int32 + + Int32 + + + + + + Clid + + + + Int32 + + Int32 + + + + + + IPV4 + + + + String + + String + + + + + + Port + + + + Int32 + + Int32 + + + + + + Https + + + + Boolean + + Boolean + + + + + + User + + + + String + + String + + + + + + Password + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New-AdcContentRule + + Allows you to add a new rule to the LoadMaster. + + + + + New + AdcContentRule + + + + Allows you to add a new Content Rule rule. + + + + New-AdcContentRule + + RuleName + + The desired name for the new content rule. + + String + + + MatchType + + Specifies whether the rule matches on a regular expression (regex), prefix, or postfix. This parameter defaults to regex, but will also accept prefix or postfix. + + String + + + IncHost + + Specifies whether to include the host in the URL. This is disabled by default. + + Boolean + + + NoCase + + Specifies whether to ignore case/capitalization. This is disabled by default. + + Boolean + + + Negate + + Specifies whether to invert the case of the match. This is disabled by default. + + Boolean + + + IncQuery + + Specifies whether to include the query string in the match. This is disabled by default. + + Boolean + + + Header + + Specifies the header that a match should be performed on. Set this to body to match on the body of a request. + + String + + + Pattern + + Specifies the pattern to search for. + + String + + + Replacement + + Specifies the replacement string for the pattern. You can enter a maximum of 255 characters in this parameter. + + String + + + Type + + The type of content rule: +0 - Content Matching +1 - Add Header +2 - Delete Header +3 - Replace Header +4 - Modify URL +5 - Replace String in Response Body +When creating a Rule - if the "type" is not specified, it will default to zero, that is, a Content Matching rule. The other parameters available for the New-AdcContentRule command depend on the "type" of content rule being added. + + Int32 + + + MustFail + + If this rule is matched, then always fail to connect. +0 - Disabled (do not fail to connect) +1 - Enabled (fail to connect) + + Int32 + + + OnlyOnFlag + + Only try to execute this rule if the specified flag is set by another rule (the OnlyOnFlag parameter is used in conjunction with the SetFlagOnMatch parameter). +Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched ('chaining' rules). For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/ +Valid values: 0-9 + + Int32 + + + SetFlagOnMatch + + If the rule is successfully matched, set the specified flag. Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched. For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/. +Valid values: 0-9 + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcContentRule + + RuleName + + The desired name for the new content rule. + + String + + + MatchType + + Specifies whether the rule matches on a regular expression (regex), prefix, or postfix. This parameter defaults to regex, but will also accept prefix or postfix. + + String + + + IncHost + + Specifies whether to include the host in the URL. This is disabled by default. + + Boolean + + + NoCase + + Specifies whether to ignore case/capitalization. This is disabled by default. + + Boolean + + + Negate + + Specifies whether to invert the case of the match. This is disabled by default. + + Boolean + + + IncQuery + + Specifies whether to include the query string in the match. This is disabled by default. + + Boolean + + + Header + + Specifies the header that a match should be performed on. Set this to body to match on the body of a request. + + String + + + Pattern + + Specifies the pattern to search for. + + String + + + Replacement + + Specifies the replacement string for the pattern. You can enter a maximum of 255 characters in this parameter. + + String + + + Type + + The type of content rule: +0 - Content Matching +1 - Add Header +2 - Delete Header +3 - Replace Header +4 - Modify URL +5 - Replace String in Response Body +When creating a Rule - if the "type" is not specified, it will default to zero, that is, a Content Matching rule. The other parameters available for the New-AdcContentRule command depend on the "type" of content rule being added. + + Int32 + + + MustFail + + If this rule is matched, then always fail to connect. +0 - Disabled (do not fail to connect) +1 - Enabled (fail to connect) + + Int32 + + + OnlyOnFlag + + Only try to execute this rule if the specified flag is set by another rule (the OnlyOnFlag parameter is used in conjunction with the SetFlagOnMatch parameter). +Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched ('chaining' rules). For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/ +Valid values: 0-9 + + Int32 + + + SetFlagOnMatch + + If the rule is successfully matched, set the specified flag. Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched. For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/. +Valid values: 0-9 + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RuleName + + The desired name for the new content rule. + + String + + String + + + + + + MatchType + + Specifies whether the rule matches on a regular expression (regex), prefix, or postfix. This parameter defaults to regex, but will also accept prefix or postfix. + + String + + String + + + + + + IncHost + + Specifies whether to include the host in the URL. This is disabled by default. + + Boolean + + Boolean + + + + + + NoCase + + Specifies whether to ignore case/capitalization. This is disabled by default. + + Boolean + + Boolean + + + + + + Negate + + Specifies whether to invert the case of the match. This is disabled by default. + + Boolean + + Boolean + + + + + + IncQuery + + Specifies whether to include the query string in the match. This is disabled by default. + + Boolean + + Boolean + + + + + + Header + + Specifies the header that a match should be performed on. Set this to body to match on the body of a request. + + String + + String + + + + + + Pattern + + Specifies the pattern to search for. + + String + + String + + + + + + Replacement + + Specifies the replacement string for the pattern. You can enter a maximum of 255 characters in this parameter. + + String + + String + + + + + + Type + + The type of content rule: +0 - Content Matching +1 - Add Header +2 - Delete Header +3 - Replace Header +4 - Modify URL +5 - Replace String in Response Body +When creating a Rule - if the "type" is not specified, it will default to zero, that is, a Content Matching rule. The other parameters available for the New-AdcContentRule command depend on the "type" of content rule being added. + + Int32 + + Int32 + + + + + + MustFail + + If this rule is matched, then always fail to connect. +0 - Disabled (do not fail to connect) +1 - Enabled (fail to connect) + + Int32 + + Int32 + + + + + + OnlyOnFlag + + Only try to execute this rule if the specified flag is set by another rule (the OnlyOnFlag parameter is used in conjunction with the SetFlagOnMatch parameter). +Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched ('chaining' rules). For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/ +Valid values: 0-9 + + Int32 + + Int32 + + + + + + SetFlagOnMatch + + If the rule is successfully matched, set the specified flag. Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched. For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/. +Valid values: 0-9 + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Name + + The name of the rule. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcContentRule -Name ExampleRule -MatchType regex -Pattern ExamplePattern -Replacement ExampleReplacement + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-AdcHttpCacheException + + Add an extension to the "Do Not Cache" extension list. + + + + + New + AdcHttpCacheException + + + + Add the specified extension to the list. + + + + New-AdcHttpCacheException + + Extension + + The file extension that should not be cached, for example, .jpg. The extension must start with a full stop (.). A collection of extensions can be provided through the pipeline. + + String[] + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcHttpCacheException + + Extension + + The file extension that should not be cached, for example, .jpg. The extension must start with a full stop (.). A collection of extensions can be provided through the pipeline. + + String[] + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Extension + + The file extension that should not be cached, for example, .jpg. The extension must start with a full stop (.). A collection of extensions can be provided through the pipeline. + + String[] + + String[] + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcHttpCacheException -Extension .mp4 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-AdcHttpCompressionException + + Allows you to add an extension to the "Do Not Compress" extension list. + + + + + New + AdcHttpCompressionException + + + + Add the specified extension. + + + + New-AdcHttpCompressionException + + Extension + + The file extension that should not be compressed, for example,.jpg. The extension must start with a full stop (.). A collection of extensions can be provided through the pipeline. This parameter is required. + + String[] + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcHttpCompressionException + + Extension + + The file extension that should not be compressed, for example,.jpg. The extension must start with a full stop (.). A collection of extensions can be provided through the pipeline. This parameter is required. + + String[] + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Extension + + The file extension that should not be compressed, for example,.jpg. The extension must start with a full stop (.). A collection of extensions can be provided through the pipeline. This parameter is required. + + String[] + + String[] + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcHttpCompressionException -Extension .mp4 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-AdcRealServer + + Add a new Real Server configuration. + + + + + New + AdcRealServer + + + + Configures a new Real Server that can handle traffic for a service. + + + + New-AdcRealServer + + VirtualService + + The IP address of the Virtual Service. + + String + + + VSPort + + The port of the Virtual Service to add the Real Server to. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to add the Real Server to. + + String + + + VSIndex + + The index number of the Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The IP address that the Real Server being defined listens on. + + String + + + RealServerPort + + The port that the Real Server will be listening on. + + Int32 + + + Weight + + The Real Server's weight. This is weight of the Real Server, as used by the Weighted Round Robin, Weighted Least Connection and Adaptive scheduling methods. The default initial value for the weight is 1000, the maximum is 65535 and the minimum is 1. + + Int32 + + + Forward + + Either NAT (Network Address Translation) or Route (Direct) forwarding. The available options are dependent on the other modes configured for the service. + + String + + + Enable + + Specifies if the Real Server is enabled or disabled. Pass in a value of TRUE ($true) for enabled, and FALSE ($false) for disabled. + + Boolean + + + Non_Local + + By default only Real Servers on local networks can be assigned to a Virtual Service. Enabling this option will allow a non-local Real Server to be assigned to the Virtual Service. + Note: This option will only be available if nonlocalrs has been enabled and the Transparent option has been disabled on the relevant Virtual Service. + + Boolean + + + Limit + + The maximum number of open connections that a Real Server will accept before it is taken out of the rotation. This is only available for Layer 7 traffic. + + Int64 + + + Critical + + True or false to indicate whether this Real Server is required for the Virtual Service to be available. + + Boolean + + + Follow + + Specify what Real Server the health check is based on by setting this parameter to the RsIndex of the Real Server to be followed. This can either be set to the RsIndex of the same Real Server in order to health check based on that particular Real Server status, or another Real Server can be specified. For example – if Real Server 1 is down, any Real Servers which have their health check based on Real Server 1 will also be marked as down, regardless of their actual Real Server status. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcRealServer + + VirtualService + + The IP address of the Virtual Service. + + String + + + VSPort + + The port of the Virtual Service to add the Real Server to. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to add the Real Server to. + + String + + + VSIndex + + The index number of the Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The IP address that the Real Server being defined listens on. + + String + + + RealServerPort + + The port that the Real Server will be listening on. + + Int32 + + + Weight + + The Real Server's weight. This is weight of the Real Server, as used by the Weighted Round Robin, Weighted Least Connection and Adaptive scheduling methods. The default initial value for the weight is 1000, the maximum is 65535 and the minimum is 1. + + Int32 + + + Forward + + Either NAT (Network Address Translation) or Route (Direct) forwarding. The available options are dependent on the other modes configured for the service. + + String + + + Enable + + Specifies if the Real Server is enabled or disabled. Pass in a value of TRUE ($true) for enabled, and FALSE ($false) for disabled. + + Boolean + + + Non_Local + + By default only Real Servers on local networks can be assigned to a Virtual Service. Enabling this option will allow a non-local Real Server to be assigned to the Virtual Service. + Note: This option will only be available if nonlocalrs has been enabled and the Transparent option has been disabled on the relevant Virtual Service. + + Boolean + + + Limit + + The maximum number of open connections that a Real Server will accept before it is taken out of the rotation. This is only available for Layer 7 traffic. + + Int64 + + + Critical + + True or false to indicate whether this Real Server is required for the Virtual Service to be available. + + Boolean + + + Follow + + Specify what Real Server the health check is based on by setting this parameter to the RsIndex of the Real Server to be followed. This can either be set to the RsIndex of the same Real Server in order to health check based on that particular Real Server status, or another Real Server can be specified. For example – if Real Server 1 is down, any Real Servers which have their health check based on Real Server 1 will also be marked as down, regardless of their actual Real Server status. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The IP address of the Virtual Service. + + String + + String + + + + + + VSPort + + The port of the Virtual Service to add the Real Server to. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the Virtual Service to add the Real Server to. + + String + + String + + + + + + VSIndex + + The index number of the Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + Int32 + + + + + + RealServer + + The IP address that the Real Server being defined listens on. + + String + + String + + + + + + RealServerPort + + The port that the Real Server will be listening on. + + Int32 + + Int32 + + + + + + Weight + + The Real Server's weight. This is weight of the Real Server, as used by the Weighted Round Robin, Weighted Least Connection and Adaptive scheduling methods. The default initial value for the weight is 1000, the maximum is 65535 and the minimum is 1. + + Int32 + + Int32 + + + + + + Forward + + Either NAT (Network Address Translation) or Route (Direct) forwarding. The available options are dependent on the other modes configured for the service. + + String + + String + + + + + + Enable + + Specifies if the Real Server is enabled or disabled. Pass in a value of TRUE ($true) for enabled, and FALSE ($false) for disabled. + + Boolean + + Boolean + + + + + + Non_Local + + By default only Real Servers on local networks can be assigned to a Virtual Service. Enabling this option will allow a non-local Real Server to be assigned to the Virtual Service. + Note: This option will only be available if nonlocalrs has been enabled and the Transparent option has been disabled on the relevant Virtual Service. + + Boolean + + Boolean + + + + + + Limit + + The maximum number of open connections that a Real Server will accept before it is taken out of the rotation. This is only available for Layer 7 traffic. + + Int64 + + Int64 + + + + + + Critical + + True or false to indicate whether this Real Server is required for the Virtual Service to be available. + + Boolean + + Boolean + + + + + + Follow + + Specify what Real Server the health check is based on by setting this parameter to the RsIndex of the Real Server to be followed. This can either be set to the RsIndex of the same Real Server in order to health check based on that particular Real Server status, or another Real Server can be specified. For example – if Real Server 1 is down, any Real Servers which have their health check based on Real Server 1 will also be marked as down, regardless of their actual Real Server status. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + The port that the Virtual Service is listening on. + + int32 + + int32 + + + + + + Protocol + + Specify if the service is using TCP or UDP protocols. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcRealServer -Port 443 -Protocol tcp -RealServer 10.154.11.85 -RealServerPort 443 -VirtualService 10.154.11.181 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{RsSettings=} +Param........: @{Status=Down; VSIndex=1; RsIndex=7; Addr=10.154.11.85; Port=443; DnsName=; Forward=nat; Weight=1000; Limit=0; Follow=0; Enable=Y; Critic +al=N} + + + + + + + + + + + + + + + + + New-AdcRealServerRule + + Allows you to add a preconfigured rule to a Real Server. + + + + + New + AdcRealServerRule + + + + Allows you to add a preconfigured rule to a Real Server or a SubVS. + + + + New-AdcRealServerRule + + VirtualService + + The IP Address of the Virtual Service this rule should be applied to. + + String + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The Real Server to which this Virtual Service connects to. + + String + + + RSPort + + The port on which the Real Server accepts connections for this Virtual Service. + + Int32 + + + RSIndex + + The index number of the Real Server or SubVS to add the rule to. To retrieve the Real Server index, run the Get-VirtualService command. + + Int32 + + + RuleName + + The name of the rule that should be applied to the Virtual Service. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcRealServerRule + + VirtualService + + The IP Address of the Virtual Service this rule should be applied to. + + String + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The Real Server to which this Virtual Service connects to. + + String + + + RSPort + + The port on which the Real Server accepts connections for this Virtual Service. + + Int32 + + + RSIndex + + The index number of the Real Server or SubVS to add the rule to. To retrieve the Real Server index, run the Get-VirtualService command. + + Int32 + + + RuleName + + The name of the rule that should be applied to the Virtual Service. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The IP Address of the Virtual Service this rule should be applied to. + + String + + String + + + + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + String + + + + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + Int32 + + + + + + RealServer + + The Real Server to which this Virtual Service connects to. + + String + + String + + + + + + RSPort + + The port on which the Real Server accepts connections for this Virtual Service. + + Int32 + + Int32 + + + + + + RSIndex + + The index number of the Real Server or SubVS to add the rule to. To retrieve the Real Server index, run the Get-VirtualService command. + + Int32 + + Int32 + + + + + + RuleName + + The name of the rule that should be applied to the Virtual Service. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + The port on which this Virtual Service accepts connections. + + int32 + + int32 + + + + + + Protocol + + The protocol for communication. Accepts either TCP or UDP. This is not case sensitive. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcRealServerRule -Port 80 -Protocol tcp -RealServer 10.11.0.24 -RSPort 80 -RuleName TestRule2 -VirtualService 10.11.0.200 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-AdcSubVirtualService + + Add a new SubVS. + + + + + New + AdcSubVirtualService + + + + This command adds a SubVS to the specified Virtual Service. + + + + New-AdcSubVirtualService + + VirtualService + + The address of the Virtual Service to add the SubVS to. + + String + + + VSPort + + The port of the Virtual Service to add the SubVS to. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to add the SubVS to. + + String + + + VSIndex + + The ID number of the Virtual Service to add the SubVS to. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcSubVirtualService + + VirtualService + + The address of the Virtual Service to add the SubVS to. + + String + + + VSPort + + The port of the Virtual Service to add the SubVS to. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to add the SubVS to. + + String + + + VSIndex + + The ID number of the Virtual Service to add the SubVS to. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The address of the Virtual Service to add the SubVS to. + + String + + String + + + + + + VSPort + + The port of the Virtual Service to add the SubVS to. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the Virtual Service to add the SubVS to. + + String + + String + + + + + + VSIndex + + The ID number of the Virtual Service to add the SubVS to. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcSubVirtualService -VirtualService 10.154.11.90 -VSPort 80 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Status : Down +Index : 1 +VSAddress : 10.154.11.90 +VSPort : 80 +Layer : 7 +Enable : Y +SSLReverse : N +SSLReencrypt : N +Intercept : N +InterceptOpts : @{Opt=System.Object[]} +AlertThreshold : 0 +Transactionlimit : 0 +Transparent : Y +SubnetOriginating : N +ServerInit : 0 +StartTLSMode : 0 +Idletime : 660 +Cache : N +Compress : N +Verify : 0 +UseforSnat : N +ForceL4 : N +ForceL7 : Y +MultiConnect : N +ClientCert : 0 +ErrorCode : 0 +CheckUse1.1 : N +MatchLen : 0 +CheckUseGet : 0 +SSLRewrite : 0 +VStype : http +FollowVSID : 0 +Protocol : tcp +Schedule : rr +CheckType : http +Persist : header +PersistTimeout : 360 +CheckPort : 0 +NRules : 0 +NRequestRules : 0 +NResponseRules : 0 +NPreProcessRules : 0 +EspEnabled : N +InputAuthMode : 0 +OutputAuthMode : 0 +MasterVS : 1 +MasterVSID : 0 +IsTransparent : 0 +AddVia : 0 +QoS : 0 +TlsType : 0 +NeedHostName : N +OCSPVerify : N +AllowHTTP2 : N +RsMinimum : 0 +NumberOfRSs : 1 +SubVS : @{Status=Down; VSIndex=2; RsIndex=1; Name=-; Forward=nat; Weight=1000; Limit=0; Follow=0; Enable=Y; Critical=N} + + + + + + + + + + + + + + + + + New-AdcVirtualService + + Create and configure a new Virtual Service. + + + + + New + AdcVirtualService + + + + Creates a new Virtual Service that can accept requests and send them to available Real Servers. + + + + New-AdcVirtualService + + VirtualService + + The IP address for the Virtual Service. + + String + + + VSPort + + The port of the new Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the new Virtual Service. + + String + + + AddVia + + Specifies which headers are added to the HTTP stream. Choose the number of the option to use. + 0 - Legacy Operation(XXX) +1 - None +2 - X-Forwarded-For +3 - X-Forwarded-For (No Via) +4 - X-ClientSide +5 - X-ClientSide (No Via) +6 - Via Only + + Int16 + + + Template + + Specifies a template name. + + String + + + Cache + + Enables or disables caching on this Virtual Service. + + Boolean + + + CertFile + + Specifies the name of the certificate file to use that is already installed on the load balancer. Note: This will NOT upload a certificate file to the load balancer. + + String + + + CheckType + + Specifies the protocol to use to check if the service is up. Valid options are "tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", or "none". + + String + + + CheckHost + + The address to use to check if the service is up. + + String + + + CheckPattern + + A regular expression string that can be validate on a 200 reply to determine if the service is up. + + String + + + CheckUrl + + The URL to check if the service is up. The maximum character length for the CheckUrl parameter value is 126 characters. + + String + + + CheckHeaders + + Specify up to four additional headers/fields which will be sent with each health check request. Separate the pairs with a pipe, for example; Host:xyc|UserAgent:prq. + + String + + + LdapEndpoint + + Specify the name of an LDAP endpoint to use for the health checks. If LDAP is selected as the CheckType, the server IP address (or addresses) and ports from the LDAP endpoint configuration are used instead of the Real Server IP address and port. + + String + + + MatchLen + + This parameter is only relevant when the CheckType is set to "bdata". Specify the number of bytes to find the CheckPattern within. + + String + + + CheckUse1_1 + + Specifies that the health checker use HTTP/1.1 instead of HTTP/1.0. +0 - HTTP/1.0 +1 - HTTP/1.1 + + Int32 + + + CheckPort + + The port to use to check if the service is up. + + Int32 + + + EnhancedHealthChecks + + Enables or disables Enhanced Health Check Options for the Virtual Service. + + Boolean + + + RsMinimum + + Specifies the minimum number of Real Servers that are required to be active for the Virtual Service to be considered up. + + Int32 + + + ClientCert + + Specify how client certificates should be used. Valid values are 0, 1, or 2. Zero indicates that client certificates are not use. One indicates that client certificates are required. Two indicates that client certificates are required and additional HEAD information is being sent. + + Int16 + + + Compress + + Enable or disable file compression for the Virtual Service. + + Boolean + + + Cookie + + Specifies a cookie name. This parameter is only relevant when the persistence mode is set to "cookie", "active-cookie", "cookie-src" or "active-cook-src". + + String + + + CachePercent + + Specifies the maximum cache usage for this Virtual Service. Note: Setting two Virtual Services using 50% of cache will use 100% of all cache storage. This parameter accepts values from 0 to 100. + + Int16 + + + DefaultGW + + Specifies a Virtual Service-specific default gateway to be used to send responses back to clients. If not set, the global default gateway will be used. + + String + + + Enable + + Enables or disables the Virtual Service. + + Boolean + + + ErrorCode + + If no Real Servers are available, the LoadMaster can terminate the connection with an HTTP error code. Specify the error code number in this parameter. + + String + + + ErrorUrl + + When no Real Servers are available and an error response is sent back to the client, a redirect URL can also be specified. + + String + + + PortFollow + + This parameter was depreciated as of 7.1-24. For LoadMasters with version 7.1-24 or higher, use the FollowVSID parameter to set port following. + + Int32 + + + ForceL7 + + Enabling ForceL7 means the Virtual Service runs at Layer 7 and not Layer 4. This may be needed for various reasons, including that only Layer 7 services can be non-transparent. + + Boolean + + + Idletime + + Specifies the length of time (in seconds) that a connection may remain idle before it is closed. The range for this parameter is 0 to 86400. There are some special values that can be set for this parameter: +- 0: Ensures the default L7 connection timeout is used. The default timeout value can be modified by setting the conntimeout parameter. +- 1: Discards the connection after the packet is first forwarded – a response is not expected or handled. +- 2: Uses a DNS-type of operation. The connection is dropped after the reply message. +Setting it to 1 or 2 enables better performance and memory usage for UDP connections and they correspond better to how UDP is used. + + Int32 + + + LocalBindAddresses + + Specifies a space separated list of IP addresses. This corresponds to the Alternate Source Address in the Advanced Properties section of the WUI. Allow connections scaling over 64K Connections needs to be enabled in L7 Configuration for this feature to work. + + String[] + + + VSType + + Specifies the type of service being load balanced: + gen - Generic +http - HTTP/HTTPS +ts - Remote Terminal +tls – STARTTLS protocols +log – Log Insight + + String + + + Nickname + + Specifies the "friendly" name of the service. In addition to the usual alphanumeric characters, the following "special" characters can be used as part of the Service Name: + . @ - _ + However, there must be at least one alphanumeric character before the special characters. + + String + + + Persist + + Specifies the type of persistence (stickiness) to be used for this Virtual Service. + The following persistence values are supported: ssl, cookie, active-cookie, cookie-src, active-cook-src, cookie-hash, cookie-hash-src, url, query-hash, host, header, super, super-src, src, rdp, rdp-src, rdp-sb, rdp-sb-src and udpsip. + Note: If setting the persistence mode to an option that requires a cookie (or query-hash), the cookie parameter must also be set. + + String + + + PersistTimeout + + The length of time (in seconds) after the last connection that the LoadMaster will remember the persistence information. Timeout values are rounded down to an even number of minutes. Setting a value that is not a number of whole minutes results in the excess being ignored. Setting a value to less than 60 seconds results in a value of 0 being set, which disables persistency. + + Int32 + + + QueryTag + + This is the query tag to be matched if the Persist type is set to query-hash. + + String + + + CipherSet + + Specifies a cipher set name. + + String + + + SSLReencrypt + + This parameter is only relevant if SSL Acceleration is enabled. When this option is enabled, the SSL data stream is re-encrypted before sending to the Real Server. + + Boolean + + + SSLReverse + + Enabling this parameter means that the data from the LoadMaster to the Real Server is re-encrypted. + + Boolean + + + SSLRewrite + + When the Real Server rejects a request with an HTTP redirect, the requesting Location URL may need to be converted to specify HTTPS instead of HTTP (and vice versa). + + String + + + ReverseSNIHostname + + If this option is enabled, the host name is required to be sent in the TLS client hello message. If it is not sent the connection will be dropped. + + String + + + Schedule + + Specifies the type of scheduling of new connections to Real Servers that is to be performed. The following values are supported: + rr = round robin +wrr = weighted round robin +lc = least connection +wlc = weighted least connection +fixed = fixed weighting +adaptive = resource based (adaptive) +sh = source IP hash +dl = weighted response time +sdn-adaptive = resource based (SDN adaptive) + + String + + + ServerInit + + Specifies one of the following values: + 0 = Normal Protocols +1 = SMTP +2 = SSH +3 = Other Server Initiating +4 = IMAP4 +5 = MySQL +6 = POP3 + + Int16 + + + SSLAcceleration + + Specifies whether to enable SSL handling on the Virtual Service. + + Boolean + + + StandByAddr + + Specifies the IP address of the "Sorry" server that is to be used when no other Real Servers are available. This server will not be health checked and is assumed to be always available. + + String + + + StandByPort + + Specifies the port of the "Sorry" server. + + String + + + TransactionLimit + + This is a legacy parameter that should no longer be used. It was used previously when the SSL proxy was limited to 6K total connections. The transaction limit was used to limit one Virtual Service to only handle so many connections out of this 6K. On newer systems, where the limit is greater than 64K - this feature is no longer required. + + Int32 + + + Transparent + + When using Layer 7, when this is enabled - the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent, which means that the connections at the Real Server appear to come from the LoadMaster. +0 - Disabled +1 - Enabled +If a Virtual Service (with or without a SubVS) has SSL re-encrypt enabled, the transparency flag of the Virtual Service has no meaning (re-encryption forces transparency to be off). The transparency setting can still be modified by the API, and is honored when re-encrypt is disabled on the Virtual Service. + + Boolean + + + SubnetOriginating + + When transparency is not enabled, the source IP address of connections to the Real Servers is that of the Virtual Service. When transparency is enabled, the source IP address will be the IP address that is initiating connection to the Virtual Service. If the Real Server is on a subnet, and the Subnet Originating Requests option is enabled, then the subnet address of the LoadMaster will be used as the source IP address. + + Boolean + + + UseforSnat + + By default, when the LoadMaster is being used to NAT Real Servers, the source IP address used on the Internet is that of the LoadMaster. Enabling this option allows the Real Servers configured to use the Virtual Service as the source IP address instead. If the Real Servers are configured on more than one Virtual Service which has this option set, only connections to destination port 80 will use this Virtual Service as the source IP address. + + Boolean + + + QoS + + Specifies the Quality of Service. The following values are supported: + 0 - Normal-Service +1 - Minimize-Cost +2 - Maximize-Reliability +4 - Maximize-Throughput +8 - Minimize-Delay + + String + + + CheckUseGet + + When accessing the health check URL - the system can use the HEAD, the GET or the POST method: +0 - HEAD +1 - GET +2 - POST + + Int32 + + + Verify + + Specifies a verification bitmask. The valid values of the Verify parameter are as follows: + Bit 0: set this to 1 to enable detection intrusion. + Note: Bit 0 needs to be set to 1 in order to use the other two bits. + Bit 1: Determines whether to reject or drop a connection. Setting it to 1 will drop the connection. + Bit 2: Determines whether to give just warnings on bad requests or also on malicious (but not invalid) requests. + The following table lists the valid integers and the values they set the fields to when used: +Integer Detect Malicious Requests Intrusion Handling Warnings Checkbox +0 Disabled N/A N/A +1 Enabled Drop Connection Unchecked +2 Enabled Send Reject Unchecked +3 Enabled Send Reject Unchecked +4 Enabled Drop Connection Checked +5 Enabled Drop Connection Checked +6 Enabled Send Reject Checked +7 Enabled Send Reject Checked + + Int16 + + + ExtraHdrKey + + Specifies the key for the extra header to be inserted into every request sent to the Real Servers. + + String + + + ExtraHdrValue + + Specifies the value for the extra header to be inserted into every request sent to the Real Servers. + + String + + + AllowedHosts + + This parameter is only relevant when ESP is enabled. Specifies all the virtual hosts that can be accessed via this Virtual Service. + + String + + + AllowedDirectories + + This parameter is only relevant when ESP is enabled. Specifies all the virtual directories that can be accessed via this Virtual Service. + + String + + + AllowedGroups + + Specifies the groups that are allowed to access this Virtual Service. + + String + + + GroupSIDs + + Specify the group security identifier (SIDs) that are allowed to access this Virtual Service. Each group must be separated by a semicolon. + + String + + + SteeringGroups + + Enter the Active Directory group names that will be used for steering traffic. Use a semi-colon to separate multiple group names. The steering group index number corresponds to the location of the group in this list. + + String + + + IncludeNestedGroups + + Specify if nested groups should be included in the authentication attempt. + + Boolean + + + DisplayPubPriv + + Display the public/private option on the login page. Based on the option the user selects on the login form, the session timeout value will be set to the value specified for either the public or private timeout. + + Boolean + + + DisablePasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + Boolean + + + Domain + + Specifies the Single Sign On (SSO) domain in which this Virtual Service will operate. + + String + + + AltDomains + + Specifies alternative domains to be assigned to a Virtual Service when configuring multi-domain authentication. To specify multiple alternative domains use a space-separated list. + + String + + + Logoff + + This parameter is only relevant when ESP is enabled and when the Client Authentication Mode is set to Form Based. Specify the string that the LoadMaster should use to detect a logout event. Multiple logoff strings can be specified by using a space-separated list. + If the URL to be matched contains sub-directories before the specified string, the Logoff String will not be matched. Therefore the LoadMaster will not log the user off. + + String + + + ESPLogs + + Enable ESP logging. Valid values are below: + 0 - Logging off +1 - User Access +2 - Security +3 - User Access and Security +4 - Connection +5 - User Access and Connection +6 - Security and connection +7 - User Access, Security and Connection + Note: The only valid values for SMTP services are 0 and 4. For SMTP services, security issues are always logged. Nothing is logged for user access because there are no logins. + + Int16 + + + SMTPAllowedDomains + + Specifies all the permitted domains that are allowed to be received by this Virtual Service. + + String + + + ESPEnabled + + Specifies whether to enable or disable the Edge Security Pack (ESP) features. + + Boolean + + + UserPwdChangeUrl + + This is relevant when using form-based or LDAP authentication. Specify the URL that users can use to change their password. If a user’s password has expired, or if they must reset their password, this URL and the UserPwdChangeMsg is displayed on the login form. +This URL must be put into the exception list for authentication, if required. + + String + + + UserPwdChangeMsg + + This parameter is only relevant if the UserPwdChangeURL parameter is set. Specify the text to be displayed on the login form when the user must reset their password. + + String + + + SecurityHeaderOptions + + Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). +0 - Don't add the Strict Transport Security Header (default value) +1 - Add the Strict Transport Security Header - no subdomains +2 - Add the Strict Transport Security Header - include subdomains Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). + + Int16 + + + InputAuthMode + + Specifies the client authentication method to be used: + 0 - Delegate to Server +1 - Basic Authentication +2 - Form Based +4 - Client Certificate +5 - NTLM +6 - SAML + + Int16 + + + OutConf + + + + String + + + OutputAuthMode + + Specifies the server authentication mode to be used: + 0 - None +1 - Basic Authentication +2 - Form Based +2 - KCD + + Int16 + + + StartTLSMode + + 0 - HTTP/HTTPS (the Service Type needs to be set to HTTP/HTTPS for this to work) + The Virtual Service Type must be set to STARTTLS for the remaining values to be set: + 1 - SMTP (STARTTLS if requested) +2 - SMTP (STARTTLS always) +3 - FTP +4 - IMAP +6 - POP3 + + Int16 + + + ExtraPorts + + Specifies extra ports that the Virtual Service will listen to. + + String + + + AltAddress + + Specifies the alternate address for this Virtual Service. + + String + + + MultiConnect + + Enabling this option permits the LoadMaster to manage connection handling between the LoadMaster and the Real Servers. Requests from multiple clients will be sent over the same TCP connection. + Multiplexing only works for simple HTTP GET operations. This parameter cannot be enabled in certain situations, for example if WAF, ESP or SSL Acceleration is enabled. + + Boolean + + + SingleSignOnDir + + This parameter relates to the SSO Image Set drop-down in the ESP Options section of the modify Virtual Service screen. Specify the name of the image set to be used for the login screen. If no image set is specified, the default Exchange image set will be used. + + String + + + OCSPVerify + + Specifies whether to verify (via Online Certificate Status Protocol (OCSP)) that the client certificate is valid. + + String + + + FollowVSID + + Specifies the ID of the Virtual Service to follow. + + Int32 + + + TlsType + + Specify which of the following protocols to support; SSLv3, TLS1.0, TLS1.1 or TLS1.2. By default, TLS1.1 and TLS1.2 are enabled. The protocols can be enabled and disabled using a bitmask value. Refer to the table below to find out what number corresponds to which settings. + Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + + Int32 + + + CheckPostData + + This parameter is only relevant if the HTTP Method is set to POST. When using the POST method, up to 2047 characters of POST data can be sent to the server. + + String + + + CheckCodes + + A space-separated list of HTTP status codes that should be treated as successful when received from the Real Server. +Range: 300-599 + + String + + + PreProcPrecedence + + This parameter should be used in conjunction with PreProcPrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. This parameter relates to Content Matching Rules only. + + String + + + PreProcPrecedencePos + + This parameter, in conjunction with the PreProcPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. This parameter relates to the Content Matching Rules only. + + Int16 + + + RequestPrecedence + + This parameter should be used in conjunction with RequestPrecedencePos. This parameter is used to specify the name of the existing request rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header +Modify URL + + String + + + RequestPrecedencePos + + This parameter, in conjunction with the RequestPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. + + Int16 + + + ResponsePrecedence + + This parameter should be used in conjunction with ResponsePrecedencePos. This parameter is used to specify the name of the existing response rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header + + String + + + ResponsePrecedencePos + + This parameter, in conjunction with the ResponsePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + RsRulePrecedence + + This parameter should be used in conjunction with RSRulePrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. + + String + + + RsRulePrecedencePos + + This parameter, in conjunction with the RSRulePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + NeedHostName + + When this parameter is enabled, the hostname is always required to be sent in the TLS client hello message. If it is not sent, the connection is dropped. +Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + CopyHdrFrom + + This is the name of the source header field to copy into the new header field before the request is sent to the Real Servers. + + String + + + CopyHdrTo + + This parameter is used in conjunction with the CopyHdrFrom parameter. +The name of the header field into which the source header is to be copied. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcVirtualService + + VirtualService + + The IP address for the Virtual Service. + + String + + + VSPort + + The port of the new Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the new Virtual Service. + + String + + + AddVia + + Specifies which headers are added to the HTTP stream. Choose the number of the option to use. + 0 - Legacy Operation(XXX) +1 - None +2 - X-Forwarded-For +3 - X-Forwarded-For (No Via) +4 - X-ClientSide +5 - X-ClientSide (No Via) +6 - Via Only + + Int16 + + + Template + + Specifies a template name. + + String + + + Cache + + Enables or disables caching on this Virtual Service. + + Boolean + + + CertFile + + Specifies the name of the certificate file to use that is already installed on the load balancer. Note: This will NOT upload a certificate file to the load balancer. + + String + + + CheckType + + Specifies the protocol to use to check if the service is up. Valid options are "tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", or "none". + + String + + + CheckHost + + The address to use to check if the service is up. + + String + + + CheckPattern + + A regular expression string that can be validate on a 200 reply to determine if the service is up. + + String + + + CheckUrl + + The URL to check if the service is up. The maximum character length for the CheckUrl parameter value is 126 characters. + + String + + + CheckHeaders + + Specify up to four additional headers/fields which will be sent with each health check request. Separate the pairs with a pipe, for example; Host:xyc|UserAgent:prq. + + String + + + LdapEndpoint + + Specify the name of an LDAP endpoint to use for the health checks. If LDAP is selected as the CheckType, the server IP address (or addresses) and ports from the LDAP endpoint configuration are used instead of the Real Server IP address and port. + + String + + + MatchLen + + This parameter is only relevant when the CheckType is set to "bdata". Specify the number of bytes to find the CheckPattern within. + + String + + + CheckUse1_1 + + Specifies that the health checker use HTTP/1.1 instead of HTTP/1.0. +0 - HTTP/1.0 +1 - HTTP/1.1 + + Int32 + + + CheckPort + + The port to use to check if the service is up. + + Int32 + + + EnhancedHealthChecks + + Enables or disables Enhanced Health Check Options for the Virtual Service. + + Boolean + + + RsMinimum + + Specifies the minimum number of Real Servers that are required to be active for the Virtual Service to be considered up. + + Int32 + + + ClientCert + + Specify how client certificates should be used. Valid values are 0, 1, or 2. Zero indicates that client certificates are not use. One indicates that client certificates are required. Two indicates that client certificates are required and additional HEAD information is being sent. + + Int16 + + + Compress + + Enable or disable file compression for the Virtual Service. + + Boolean + + + Cookie + + Specifies a cookie name. This parameter is only relevant when the persistence mode is set to "cookie", "active-cookie", "cookie-src" or "active-cook-src". + + String + + + CachePercent + + Specifies the maximum cache usage for this Virtual Service. Note: Setting two Virtual Services using 50% of cache will use 100% of all cache storage. This parameter accepts values from 0 to 100. + + Int16 + + + DefaultGW + + Specifies a Virtual Service-specific default gateway to be used to send responses back to clients. If not set, the global default gateway will be used. + + String + + + Enable + + Enables or disables the Virtual Service. + + Boolean + + + ErrorCode + + If no Real Servers are available, the LoadMaster can terminate the connection with an HTTP error code. Specify the error code number in this parameter. + + String + + + ErrorUrl + + When no Real Servers are available and an error response is sent back to the client, a redirect URL can also be specified. + + String + + + PortFollow + + This parameter was depreciated as of 7.1-24. For LoadMasters with version 7.1-24 or higher, use the FollowVSID parameter to set port following. + + Int32 + + + ForceL7 + + Enabling ForceL7 means the Virtual Service runs at Layer 7 and not Layer 4. This may be needed for various reasons, including that only Layer 7 services can be non-transparent. + + Boolean + + + Idletime + + Specifies the length of time (in seconds) that a connection may remain idle before it is closed. The range for this parameter is 0 to 86400. There are some special values that can be set for this parameter: +- 0: Ensures the default L7 connection timeout is used. The default timeout value can be modified by setting the conntimeout parameter. +- 1: Discards the connection after the packet is first forwarded – a response is not expected or handled. +- 2: Uses a DNS-type of operation. The connection is dropped after the reply message. +Setting it to 1 or 2 enables better performance and memory usage for UDP connections and they correspond better to how UDP is used. + + Int32 + + + LocalBindAddresses + + Specifies a space separated list of IP addresses. This corresponds to the Alternate Source Address in the Advanced Properties section of the WUI. Allow connections scaling over 64K Connections needs to be enabled in L7 Configuration for this feature to work. + + String[] + + + VSType + + Specifies the type of service being load balanced: + gen - Generic +http - HTTP/HTTPS +ts - Remote Terminal +tls – STARTTLS protocols +log – Log Insight + + String + + + Nickname + + Specifies the "friendly" name of the service. In addition to the usual alphanumeric characters, the following "special" characters can be used as part of the Service Name: + . @ - _ + However, there must be at least one alphanumeric character before the special characters. + + String + + + Persist + + Specifies the type of persistence (stickiness) to be used for this Virtual Service. + The following persistence values are supported: ssl, cookie, active-cookie, cookie-src, active-cook-src, cookie-hash, cookie-hash-src, url, query-hash, host, header, super, super-src, src, rdp, rdp-src, rdp-sb, rdp-sb-src and udpsip. + Note: If setting the persistence mode to an option that requires a cookie (or query-hash), the cookie parameter must also be set. + + String + + + PersistTimeout + + The length of time (in seconds) after the last connection that the LoadMaster will remember the persistence information. Timeout values are rounded down to an even number of minutes. Setting a value that is not a number of whole minutes results in the excess being ignored. Setting a value to less than 60 seconds results in a value of 0 being set, which disables persistency. + + Int32 + + + QueryTag + + This is the query tag to be matched if the Persist type is set to query-hash. + + String + + + CipherSet + + Specifies a cipher set name. + + String + + + SSLReencrypt + + This parameter is only relevant if SSL Acceleration is enabled. When this option is enabled, the SSL data stream is re-encrypted before sending to the Real Server. + + Boolean + + + SSLReverse + + Enabling this parameter means that the data from the LoadMaster to the Real Server is re-encrypted. + + Boolean + + + SSLRewrite + + When the Real Server rejects a request with an HTTP redirect, the requesting Location URL may need to be converted to specify HTTPS instead of HTTP (and vice versa). + + String + + + ReverseSNIHostname + + If this option is enabled, the host name is required to be sent in the TLS client hello message. If it is not sent the connection will be dropped. + + String + + + Schedule + + Specifies the type of scheduling of new connections to Real Servers that is to be performed. The following values are supported: + rr = round robin +wrr = weighted round robin +lc = least connection +wlc = weighted least connection +fixed = fixed weighting +adaptive = resource based (adaptive) +sh = source IP hash +dl = weighted response time +sdn-adaptive = resource based (SDN adaptive) + + String + + + ServerInit + + Specifies one of the following values: + 0 = Normal Protocols +1 = SMTP +2 = SSH +3 = Other Server Initiating +4 = IMAP4 +5 = MySQL +6 = POP3 + + Int16 + + + SSLAcceleration + + Specifies whether to enable SSL handling on the Virtual Service. + + Boolean + + + StandByAddr + + Specifies the IP address of the "Sorry" server that is to be used when no other Real Servers are available. This server will not be health checked and is assumed to be always available. + + String + + + StandByPort + + Specifies the port of the "Sorry" server. + + String + + + TransactionLimit + + This is a legacy parameter that should no longer be used. It was used previously when the SSL proxy was limited to 6K total connections. The transaction limit was used to limit one Virtual Service to only handle so many connections out of this 6K. On newer systems, where the limit is greater than 64K - this feature is no longer required. + + Int32 + + + Transparent + + When using Layer 7, when this is enabled - the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent, which means that the connections at the Real Server appear to come from the LoadMaster. +0 - Disabled +1 - Enabled +If a Virtual Service (with or without a SubVS) has SSL re-encrypt enabled, the transparency flag of the Virtual Service has no meaning (re-encryption forces transparency to be off). The transparency setting can still be modified by the API, and is honored when re-encrypt is disabled on the Virtual Service. + + Boolean + + + SubnetOriginating + + When transparency is not enabled, the source IP address of connections to the Real Servers is that of the Virtual Service. When transparency is enabled, the source IP address will be the IP address that is initiating connection to the Virtual Service. If the Real Server is on a subnet, and the Subnet Originating Requests option is enabled, then the subnet address of the LoadMaster will be used as the source IP address. + + Boolean + + + UseforSnat + + By default, when the LoadMaster is being used to NAT Real Servers, the source IP address used on the Internet is that of the LoadMaster. Enabling this option allows the Real Servers configured to use the Virtual Service as the source IP address instead. If the Real Servers are configured on more than one Virtual Service which has this option set, only connections to destination port 80 will use this Virtual Service as the source IP address. + + Boolean + + + QoS + + Specifies the Quality of Service. The following values are supported: + 0 - Normal-Service +1 - Minimize-Cost +2 - Maximize-Reliability +4 - Maximize-Throughput +8 - Minimize-Delay + + String + + + CheckUseGet + + When accessing the health check URL - the system can use the HEAD, the GET or the POST method: +0 - HEAD +1 - GET +2 - POST + + Int32 + + + Verify + + Specifies a verification bitmask. The valid values of the Verify parameter are as follows: + Bit 0: set this to 1 to enable detection intrusion. + Note: Bit 0 needs to be set to 1 in order to use the other two bits. + Bit 1: Determines whether to reject or drop a connection. Setting it to 1 will drop the connection. + Bit 2: Determines whether to give just warnings on bad requests or also on malicious (but not invalid) requests. + The following table lists the valid integers and the values they set the fields to when used: +Integer Detect Malicious Requests Intrusion Handling Warnings Checkbox +0 Disabled N/A N/A +1 Enabled Drop Connection Unchecked +2 Enabled Send Reject Unchecked +3 Enabled Send Reject Unchecked +4 Enabled Drop Connection Checked +5 Enabled Drop Connection Checked +6 Enabled Send Reject Checked +7 Enabled Send Reject Checked + + Int16 + + + ExtraHdrKey + + Specifies the key for the extra header to be inserted into every request sent to the Real Servers. + + String + + + ExtraHdrValue + + Specifies the value for the extra header to be inserted into every request sent to the Real Servers. + + String + + + AllowedHosts + + This parameter is only relevant when ESP is enabled. Specifies all the virtual hosts that can be accessed via this Virtual Service. + + String + + + AllowedDirectories + + This parameter is only relevant when ESP is enabled. Specifies all the virtual directories that can be accessed via this Virtual Service. + + String + + + AllowedGroups + + Specifies the groups that are allowed to access this Virtual Service. + + String + + + GroupSIDs + + Specify the group security identifier (SIDs) that are allowed to access this Virtual Service. Each group must be separated by a semicolon. + + String + + + SteeringGroups + + Enter the Active Directory group names that will be used for steering traffic. Use a semi-colon to separate multiple group names. The steering group index number corresponds to the location of the group in this list. + + String + + + IncludeNestedGroups + + Specify if nested groups should be included in the authentication attempt. + + Boolean + + + DisplayPubPriv + + Display the public/private option on the login page. Based on the option the user selects on the login form, the session timeout value will be set to the value specified for either the public or private timeout. + + Boolean + + + DisablePasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + Boolean + + + Domain + + Specifies the Single Sign On (SSO) domain in which this Virtual Service will operate. + + String + + + AltDomains + + Specifies alternative domains to be assigned to a Virtual Service when configuring multi-domain authentication. To specify multiple alternative domains use a space-separated list. + + String + + + Logoff + + This parameter is only relevant when ESP is enabled and when the Client Authentication Mode is set to Form Based. Specify the string that the LoadMaster should use to detect a logout event. Multiple logoff strings can be specified by using a space-separated list. + If the URL to be matched contains sub-directories before the specified string, the Logoff String will not be matched. Therefore the LoadMaster will not log the user off. + + String + + + ESPLogs + + Enable ESP logging. Valid values are below: + 0 - Logging off +1 - User Access +2 - Security +3 - User Access and Security +4 - Connection +5 - User Access and Connection +6 - Security and connection +7 - User Access, Security and Connection + Note: The only valid values for SMTP services are 0 and 4. For SMTP services, security issues are always logged. Nothing is logged for user access because there are no logins. + + Int16 + + + SMTPAllowedDomains + + Specifies all the permitted domains that are allowed to be received by this Virtual Service. + + String + + + ESPEnabled + + Specifies whether to enable or disable the Edge Security Pack (ESP) features. + + Boolean + + + UserPwdChangeUrl + + This is relevant when using form-based or LDAP authentication. Specify the URL that users can use to change their password. If a user’s password has expired, or if they must reset their password, this URL and the UserPwdChangeMsg is displayed on the login form. +This URL must be put into the exception list for authentication, if required. + + String + + + UserPwdChangeMsg + + This parameter is only relevant if the UserPwdChangeURL parameter is set. Specify the text to be displayed on the login form when the user must reset their password. + + String + + + SecurityHeaderOptions + + Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). +0 - Don't add the Strict Transport Security Header (default value) +1 - Add the Strict Transport Security Header - no subdomains +2 - Add the Strict Transport Security Header - include subdomains Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). + + Int16 + + + InputAuthMode + + Specifies the client authentication method to be used: + 0 - Delegate to Server +1 - Basic Authentication +2 - Form Based +4 - Client Certificate +5 - NTLM +6 - SAML + + Int16 + + + OutConf + + + + String + + + OutputAuthMode + + Specifies the server authentication mode to be used: + 0 - None +1 - Basic Authentication +2 - Form Based +2 - KCD + + Int16 + + + StartTLSMode + + 0 - HTTP/HTTPS (the Service Type needs to be set to HTTP/HTTPS for this to work) + The Virtual Service Type must be set to STARTTLS for the remaining values to be set: + 1 - SMTP (STARTTLS if requested) +2 - SMTP (STARTTLS always) +3 - FTP +4 - IMAP +6 - POP3 + + Int16 + + + ExtraPorts + + Specifies extra ports that the Virtual Service will listen to. + + String + + + AltAddress + + Specifies the alternate address for this Virtual Service. + + String + + + MultiConnect + + Enabling this option permits the LoadMaster to manage connection handling between the LoadMaster and the Real Servers. Requests from multiple clients will be sent over the same TCP connection. + Multiplexing only works for simple HTTP GET operations. This parameter cannot be enabled in certain situations, for example if WAF, ESP or SSL Acceleration is enabled. + + Boolean + + + SingleSignOnDir + + This parameter relates to the SSO Image Set drop-down in the ESP Options section of the modify Virtual Service screen. Specify the name of the image set to be used for the login screen. If no image set is specified, the default Exchange image set will be used. + + String + + + OCSPVerify + + Specifies whether to verify (via Online Certificate Status Protocol (OCSP)) that the client certificate is valid. + + String + + + FollowVSID + + Specifies the ID of the Virtual Service to follow. + + Int32 + + + TlsType + + Specify which of the following protocols to support; SSLv3, TLS1.0, TLS1.1 or TLS1.2. By default, TLS1.1 and TLS1.2 are enabled. The protocols can be enabled and disabled using a bitmask value. Refer to the table below to find out what number corresponds to which settings. + Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + + Int32 + + + CheckPostData + + This parameter is only relevant if the HTTP Method is set to POST. When using the POST method, up to 2047 characters of POST data can be sent to the server. + + String + + + CheckCodes + + A space-separated list of HTTP status codes that should be treated as successful when received from the Real Server. +Range: 300-599 + + String + + + PreProcPrecedence + + This parameter should be used in conjunction with PreProcPrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. This parameter relates to Content Matching Rules only. + + String + + + PreProcPrecedencePos + + This parameter, in conjunction with the PreProcPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. This parameter relates to the Content Matching Rules only. + + Int16 + + + RequestPrecedence + + This parameter should be used in conjunction with RequestPrecedencePos. This parameter is used to specify the name of the existing request rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header +Modify URL + + String + + + RequestPrecedencePos + + This parameter, in conjunction with the RequestPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. + + Int16 + + + ResponsePrecedence + + This parameter should be used in conjunction with ResponsePrecedencePos. This parameter is used to specify the name of the existing response rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header + + String + + + ResponsePrecedencePos + + This parameter, in conjunction with the ResponsePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + RsRulePrecedence + + This parameter should be used in conjunction with RSRulePrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. + + String + + + RsRulePrecedencePos + + This parameter, in conjunction with the RSRulePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + NeedHostName + + When this parameter is enabled, the hostname is always required to be sent in the TLS client hello message. If it is not sent, the connection is dropped. +Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + CopyHdrFrom + + This is the name of the source header field to copy into the new header field before the request is sent to the Real Servers. + + String + + + CopyHdrTo + + This parameter is used in conjunction with the CopyHdrFrom parameter. +The name of the header field into which the source header is to be copied. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The IP address for the Virtual Service. + + String + + String + + + + + + VSPort + + The port of the new Virtual Service. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the new Virtual Service. + + String + + String + + + + + + AddVia + + Specifies which headers are added to the HTTP stream. Choose the number of the option to use. + 0 - Legacy Operation(XXX) +1 - None +2 - X-Forwarded-For +3 - X-Forwarded-For (No Via) +4 - X-ClientSide +5 - X-ClientSide (No Via) +6 - Via Only + + Int16 + + Int16 + + + + + + Template + + Specifies a template name. + + String + + String + + + + + + Cache + + Enables or disables caching on this Virtual Service. + + Boolean + + Boolean + + + + + + CertFile + + Specifies the name of the certificate file to use that is already installed on the load balancer. Note: This will NOT upload a certificate file to the load balancer. + + String + + String + + + + + + CheckType + + Specifies the protocol to use to check if the service is up. Valid options are "tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", or "none". + + String + + String + + + + + + CheckHost + + The address to use to check if the service is up. + + String + + String + + + + + + CheckPattern + + A regular expression string that can be validate on a 200 reply to determine if the service is up. + + String + + String + + + + + + CheckUrl + + The URL to check if the service is up. The maximum character length for the CheckUrl parameter value is 126 characters. + + String + + String + + + + + + CheckHeaders + + Specify up to four additional headers/fields which will be sent with each health check request. Separate the pairs with a pipe, for example; Host:xyc|UserAgent:prq. + + String + + String + + + + + + LdapEndpoint + + Specify the name of an LDAP endpoint to use for the health checks. If LDAP is selected as the CheckType, the server IP address (or addresses) and ports from the LDAP endpoint configuration are used instead of the Real Server IP address and port. + + String + + String + + + + + + MatchLen + + This parameter is only relevant when the CheckType is set to "bdata". Specify the number of bytes to find the CheckPattern within. + + String + + String + + + + + + CheckUse1_1 + + Specifies that the health checker use HTTP/1.1 instead of HTTP/1.0. +0 - HTTP/1.0 +1 - HTTP/1.1 + + Int32 + + Int32 + + + + + + CheckPort + + The port to use to check if the service is up. + + Int32 + + Int32 + + + + + + EnhancedHealthChecks + + Enables or disables Enhanced Health Check Options for the Virtual Service. + + Boolean + + Boolean + + + + + + RsMinimum + + Specifies the minimum number of Real Servers that are required to be active for the Virtual Service to be considered up. + + Int32 + + Int32 + + + + + + ClientCert + + Specify how client certificates should be used. Valid values are 0, 1, or 2. Zero indicates that client certificates are not use. One indicates that client certificates are required. Two indicates that client certificates are required and additional HEAD information is being sent. + + Int16 + + Int16 + + + + + + Compress + + Enable or disable file compression for the Virtual Service. + + Boolean + + Boolean + + + + + + Cookie + + Specifies a cookie name. This parameter is only relevant when the persistence mode is set to "cookie", "active-cookie", "cookie-src" or "active-cook-src". + + String + + String + + + + + + CachePercent + + Specifies the maximum cache usage for this Virtual Service. Note: Setting two Virtual Services using 50% of cache will use 100% of all cache storage. This parameter accepts values from 0 to 100. + + Int16 + + Int16 + + + + + + DefaultGW + + Specifies a Virtual Service-specific default gateway to be used to send responses back to clients. If not set, the global default gateway will be used. + + String + + String + + + + + + Enable + + Enables or disables the Virtual Service. + + Boolean + + Boolean + + + + + + ErrorCode + + If no Real Servers are available, the LoadMaster can terminate the connection with an HTTP error code. Specify the error code number in this parameter. + + String + + String + + + + + + ErrorUrl + + When no Real Servers are available and an error response is sent back to the client, a redirect URL can also be specified. + + String + + String + + + + + + PortFollow + + This parameter was depreciated as of 7.1-24. For LoadMasters with version 7.1-24 or higher, use the FollowVSID parameter to set port following. + + Int32 + + Int32 + + + + + + ForceL7 + + Enabling ForceL7 means the Virtual Service runs at Layer 7 and not Layer 4. This may be needed for various reasons, including that only Layer 7 services can be non-transparent. + + Boolean + + Boolean + + + + + + Idletime + + Specifies the length of time (in seconds) that a connection may remain idle before it is closed. The range for this parameter is 0 to 86400. There are some special values that can be set for this parameter: +- 0: Ensures the default L7 connection timeout is used. The default timeout value can be modified by setting the conntimeout parameter. +- 1: Discards the connection after the packet is first forwarded – a response is not expected or handled. +- 2: Uses a DNS-type of operation. The connection is dropped after the reply message. +Setting it to 1 or 2 enables better performance and memory usage for UDP connections and they correspond better to how UDP is used. + + Int32 + + Int32 + + + + + + LocalBindAddresses + + Specifies a space separated list of IP addresses. This corresponds to the Alternate Source Address in the Advanced Properties section of the WUI. Allow connections scaling over 64K Connections needs to be enabled in L7 Configuration for this feature to work. + + String[] + + String[] + + + + + + VSType + + Specifies the type of service being load balanced: + gen - Generic +http - HTTP/HTTPS +ts - Remote Terminal +tls – STARTTLS protocols +log – Log Insight + + String + + String + + + + + + Nickname + + Specifies the "friendly" name of the service. In addition to the usual alphanumeric characters, the following "special" characters can be used as part of the Service Name: + . @ - _ + However, there must be at least one alphanumeric character before the special characters. + + String + + String + + + + + + Persist + + Specifies the type of persistence (stickiness) to be used for this Virtual Service. + The following persistence values are supported: ssl, cookie, active-cookie, cookie-src, active-cook-src, cookie-hash, cookie-hash-src, url, query-hash, host, header, super, super-src, src, rdp, rdp-src, rdp-sb, rdp-sb-src and udpsip. + Note: If setting the persistence mode to an option that requires a cookie (or query-hash), the cookie parameter must also be set. + + String + + String + + + + + + PersistTimeout + + The length of time (in seconds) after the last connection that the LoadMaster will remember the persistence information. Timeout values are rounded down to an even number of minutes. Setting a value that is not a number of whole minutes results in the excess being ignored. Setting a value to less than 60 seconds results in a value of 0 being set, which disables persistency. + + Int32 + + Int32 + + + + + + QueryTag + + This is the query tag to be matched if the Persist type is set to query-hash. + + String + + String + + + + + + CipherSet + + Specifies a cipher set name. + + String + + String + + + + + + SSLReencrypt + + This parameter is only relevant if SSL Acceleration is enabled. When this option is enabled, the SSL data stream is re-encrypted before sending to the Real Server. + + Boolean + + Boolean + + + + + + SSLReverse + + Enabling this parameter means that the data from the LoadMaster to the Real Server is re-encrypted. + + Boolean + + Boolean + + + + + + SSLRewrite + + When the Real Server rejects a request with an HTTP redirect, the requesting Location URL may need to be converted to specify HTTPS instead of HTTP (and vice versa). + + String + + String + + + + + + ReverseSNIHostname + + If this option is enabled, the host name is required to be sent in the TLS client hello message. If it is not sent the connection will be dropped. + + String + + String + + + + + + Schedule + + Specifies the type of scheduling of new connections to Real Servers that is to be performed. The following values are supported: + rr = round robin +wrr = weighted round robin +lc = least connection +wlc = weighted least connection +fixed = fixed weighting +adaptive = resource based (adaptive) +sh = source IP hash +dl = weighted response time +sdn-adaptive = resource based (SDN adaptive) + + String + + String + + + + + + ServerInit + + Specifies one of the following values: + 0 = Normal Protocols +1 = SMTP +2 = SSH +3 = Other Server Initiating +4 = IMAP4 +5 = MySQL +6 = POP3 + + Int16 + + Int16 + + + + + + SSLAcceleration + + Specifies whether to enable SSL handling on the Virtual Service. + + Boolean + + Boolean + + + + + + StandByAddr + + Specifies the IP address of the "Sorry" server that is to be used when no other Real Servers are available. This server will not be health checked and is assumed to be always available. + + String + + String + + + + + + StandByPort + + Specifies the port of the "Sorry" server. + + String + + String + + + + + + TransactionLimit + + This is a legacy parameter that should no longer be used. It was used previously when the SSL proxy was limited to 6K total connections. The transaction limit was used to limit one Virtual Service to only handle so many connections out of this 6K. On newer systems, where the limit is greater than 64K - this feature is no longer required. + + Int32 + + Int32 + + + + + + Transparent + + When using Layer 7, when this is enabled - the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent, which means that the connections at the Real Server appear to come from the LoadMaster. +0 - Disabled +1 - Enabled +If a Virtual Service (with or without a SubVS) has SSL re-encrypt enabled, the transparency flag of the Virtual Service has no meaning (re-encryption forces transparency to be off). The transparency setting can still be modified by the API, and is honored when re-encrypt is disabled on the Virtual Service. + + Boolean + + Boolean + + + + + + SubnetOriginating + + When transparency is not enabled, the source IP address of connections to the Real Servers is that of the Virtual Service. When transparency is enabled, the source IP address will be the IP address that is initiating connection to the Virtual Service. If the Real Server is on a subnet, and the Subnet Originating Requests option is enabled, then the subnet address of the LoadMaster will be used as the source IP address. + + Boolean + + Boolean + + + + + + UseforSnat + + By default, when the LoadMaster is being used to NAT Real Servers, the source IP address used on the Internet is that of the LoadMaster. Enabling this option allows the Real Servers configured to use the Virtual Service as the source IP address instead. If the Real Servers are configured on more than one Virtual Service which has this option set, only connections to destination port 80 will use this Virtual Service as the source IP address. + + Boolean + + Boolean + + + + + + QoS + + Specifies the Quality of Service. The following values are supported: + 0 - Normal-Service +1 - Minimize-Cost +2 - Maximize-Reliability +4 - Maximize-Throughput +8 - Minimize-Delay + + String + + String + + + + + + CheckUseGet + + When accessing the health check URL - the system can use the HEAD, the GET or the POST method: +0 - HEAD +1 - GET +2 - POST + + Int32 + + Int32 + + + + + + Verify + + Specifies a verification bitmask. The valid values of the Verify parameter are as follows: + Bit 0: set this to 1 to enable detection intrusion. + Note: Bit 0 needs to be set to 1 in order to use the other two bits. + Bit 1: Determines whether to reject or drop a connection. Setting it to 1 will drop the connection. + Bit 2: Determines whether to give just warnings on bad requests or also on malicious (but not invalid) requests. + The following table lists the valid integers and the values they set the fields to when used: +Integer Detect Malicious Requests Intrusion Handling Warnings Checkbox +0 Disabled N/A N/A +1 Enabled Drop Connection Unchecked +2 Enabled Send Reject Unchecked +3 Enabled Send Reject Unchecked +4 Enabled Drop Connection Checked +5 Enabled Drop Connection Checked +6 Enabled Send Reject Checked +7 Enabled Send Reject Checked + + Int16 + + Int16 + + + + + + ExtraHdrKey + + Specifies the key for the extra header to be inserted into every request sent to the Real Servers. + + String + + String + + + + + + ExtraHdrValue + + Specifies the value for the extra header to be inserted into every request sent to the Real Servers. + + String + + String + + + + + + AllowedHosts + + This parameter is only relevant when ESP is enabled. Specifies all the virtual hosts that can be accessed via this Virtual Service. + + String + + String + + + + + + AllowedDirectories + + This parameter is only relevant when ESP is enabled. Specifies all the virtual directories that can be accessed via this Virtual Service. + + String + + String + + + + + + AllowedGroups + + Specifies the groups that are allowed to access this Virtual Service. + + String + + String + + + + + + GroupSIDs + + Specify the group security identifier (SIDs) that are allowed to access this Virtual Service. Each group must be separated by a semicolon. + + String + + String + + + + + + SteeringGroups + + Enter the Active Directory group names that will be used for steering traffic. Use a semi-colon to separate multiple group names. The steering group index number corresponds to the location of the group in this list. + + String + + String + + + + + + IncludeNestedGroups + + Specify if nested groups should be included in the authentication attempt. + + Boolean + + Boolean + + + + + + DisplayPubPriv + + Display the public/private option on the login page. Based on the option the user selects on the login form, the session timeout value will be set to the value specified for either the public or private timeout. + + Boolean + + Boolean + + + + + + DisablePasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + Boolean + + Boolean + + + + + + Domain + + Specifies the Single Sign On (SSO) domain in which this Virtual Service will operate. + + String + + String + + + + + + AltDomains + + Specifies alternative domains to be assigned to a Virtual Service when configuring multi-domain authentication. To specify multiple alternative domains use a space-separated list. + + String + + String + + + + + + Logoff + + This parameter is only relevant when ESP is enabled and when the Client Authentication Mode is set to Form Based. Specify the string that the LoadMaster should use to detect a logout event. Multiple logoff strings can be specified by using a space-separated list. + If the URL to be matched contains sub-directories before the specified string, the Logoff String will not be matched. Therefore the LoadMaster will not log the user off. + + String + + String + + + + + + ESPLogs + + Enable ESP logging. Valid values are below: + 0 - Logging off +1 - User Access +2 - Security +3 - User Access and Security +4 - Connection +5 - User Access and Connection +6 - Security and connection +7 - User Access, Security and Connection + Note: The only valid values for SMTP services are 0 and 4. For SMTP services, security issues are always logged. Nothing is logged for user access because there are no logins. + + Int16 + + Int16 + + + + + + SMTPAllowedDomains + + Specifies all the permitted domains that are allowed to be received by this Virtual Service. + + String + + String + + + + + + ESPEnabled + + Specifies whether to enable or disable the Edge Security Pack (ESP) features. + + Boolean + + Boolean + + + + + + UserPwdChangeUrl + + This is relevant when using form-based or LDAP authentication. Specify the URL that users can use to change their password. If a user’s password has expired, or if they must reset their password, this URL and the UserPwdChangeMsg is displayed on the login form. +This URL must be put into the exception list for authentication, if required. + + String + + String + + + + + + UserPwdChangeMsg + + This parameter is only relevant if the UserPwdChangeURL parameter is set. Specify the text to be displayed on the login form when the user must reset their password. + + String + + String + + + + + + SecurityHeaderOptions + + Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). +0 - Don't add the Strict Transport Security Header (default value) +1 - Add the Strict Transport Security Header - no subdomains +2 - Add the Strict Transport Security Header - include subdomains Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). + + Int16 + + Int16 + + + + + + InputAuthMode + + Specifies the client authentication method to be used: + 0 - Delegate to Server +1 - Basic Authentication +2 - Form Based +4 - Client Certificate +5 - NTLM +6 - SAML + + Int16 + + Int16 + + + + + + OutConf + + + + String + + String + + + + + + OutputAuthMode + + Specifies the server authentication mode to be used: + 0 - None +1 - Basic Authentication +2 - Form Based +2 - KCD + + Int16 + + Int16 + + + + + + StartTLSMode + + 0 - HTTP/HTTPS (the Service Type needs to be set to HTTP/HTTPS for this to work) + The Virtual Service Type must be set to STARTTLS for the remaining values to be set: + 1 - SMTP (STARTTLS if requested) +2 - SMTP (STARTTLS always) +3 - FTP +4 - IMAP +6 - POP3 + + Int16 + + Int16 + + + + + + ExtraPorts + + Specifies extra ports that the Virtual Service will listen to. + + String + + String + + + + + + AltAddress + + Specifies the alternate address for this Virtual Service. + + String + + String + + + + + + MultiConnect + + Enabling this option permits the LoadMaster to manage connection handling between the LoadMaster and the Real Servers. Requests from multiple clients will be sent over the same TCP connection. + Multiplexing only works for simple HTTP GET operations. This parameter cannot be enabled in certain situations, for example if WAF, ESP or SSL Acceleration is enabled. + + Boolean + + Boolean + + + + + + SingleSignOnDir + + This parameter relates to the SSO Image Set drop-down in the ESP Options section of the modify Virtual Service screen. Specify the name of the image set to be used for the login screen. If no image set is specified, the default Exchange image set will be used. + + String + + String + + + + + + OCSPVerify + + Specifies whether to verify (via Online Certificate Status Protocol (OCSP)) that the client certificate is valid. + + String + + String + + + + + + FollowVSID + + Specifies the ID of the Virtual Service to follow. + + Int32 + + Int32 + + + + + + TlsType + + Specify which of the following protocols to support; SSLv3, TLS1.0, TLS1.1 or TLS1.2. By default, TLS1.1 and TLS1.2 are enabled. The protocols can be enabled and disabled using a bitmask value. Refer to the table below to find out what number corresponds to which settings. + Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + + Int32 + + Int32 + + + + + + CheckPostData + + This parameter is only relevant if the HTTP Method is set to POST. When using the POST method, up to 2047 characters of POST data can be sent to the server. + + String + + String + + + + + + CheckCodes + + A space-separated list of HTTP status codes that should be treated as successful when received from the Real Server. +Range: 300-599 + + String + + String + + + + + + PreProcPrecedence + + This parameter should be used in conjunction with PreProcPrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. This parameter relates to Content Matching Rules only. + + String + + String + + + + + + PreProcPrecedencePos + + This parameter, in conjunction with the PreProcPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. This parameter relates to the Content Matching Rules only. + + Int16 + + Int16 + + + + + + RequestPrecedence + + This parameter should be used in conjunction with RequestPrecedencePos. This parameter is used to specify the name of the existing request rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header +Modify URL + + String + + String + + + + + + RequestPrecedencePos + + This parameter, in conjunction with the RequestPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. + + Int16 + + Int16 + + + + + + ResponsePrecedence + + This parameter should be used in conjunction with ResponsePrecedencePos. This parameter is used to specify the name of the existing response rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header + + String + + String + + + + + + ResponsePrecedencePos + + This parameter, in conjunction with the ResponsePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + Int16 + + + + + + RsRulePrecedence + + This parameter should be used in conjunction with RSRulePrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. + + String + + String + + + + + + RsRulePrecedencePos + + This parameter, in conjunction with the RSRulePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + Int16 + + + + + + NeedHostName + + When this parameter is enabled, the hostname is always required to be sent in the TLS client hello message. If it is not sent, the connection is dropped. +Valid values: +0 - Disabled +1 - Enabled + + Boolean + + Boolean + + + + + + CopyHdrFrom + + This is the name of the source header field to copy into the new header field before the request is sent to the Real Servers. + + String + + String + + + + + + CopyHdrTo + + This parameter is used in conjunction with the CopyHdrFrom parameter. +The name of the header field into which the source header is to be copied. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + The port that the Virtual Service is listening on. + + int32 + + int32 + + + + + + Protocol + + Specify if the service is using TCP or UDP protocols. + + string + + string + + + + + + DisplayPasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + boolean + + boolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcVirtualService -Port 80 -Protocol tcp -VirtualService 10.154.11.234 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-AdcVirtualServiceResponseBodyRule + + + + + + + New + AdcVirtualServiceResponseBodyRule + + + + + + + + New-AdcVirtualServiceResponseBodyRule + + VSIndex + + + + Int32 + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcVirtualServiceResponseBodyRule + + VSIndex + + + + Int32 + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + RuleName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New-AdcVirtualServiceRule + + Add a content rule to a Virtual Service. + + + + + New + AdcVirtualServiceRule + + + + Add the specified content rule to a Virtual Service. + + + + New-AdcVirtualServiceRule + + VirtualService + + The IP address of the Virtual Service to add the content rule to. + + String + + + VSPort + + The port of the Virtual Service to add the content rule to. + + Int32 + + + VSProtocol + + The port of the Virtual Service to add the content rule to. + + String + + + VSIndex + + The index number of the Virtual Service to add the content rule to. + + Int32 + + + RuleType + + The type of content rule to add to the Virtual Service. + + String + + + RuleName + + The name of the content rule to add to the Virtual Service. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcVirtualServiceRule + + VirtualService + + The IP address of the Virtual Service to add the content rule to. + + String + + + VSPort + + The port of the Virtual Service to add the content rule to. + + Int32 + + + VSProtocol + + The port of the Virtual Service to add the content rule to. + + String + + + VSIndex + + The index number of the Virtual Service to add the content rule to. + + Int32 + + + RuleType + + The type of content rule to add to the Virtual Service. + + String + + + RuleName + + The name of the content rule to add to the Virtual Service. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The IP address of the Virtual Service to add the content rule to. + + String + + String + + + + + + VSPort + + The port of the Virtual Service to add the content rule to. + + Int32 + + Int32 + + + + + + VSProtocol + + The port of the Virtual Service to add the content rule to. + + String + + String + + + + + + VSIndex + + The index number of the Virtual Service to add the content rule to. + + Int32 + + Int32 + + + + + + RuleType + + The type of content rule to add to the Virtual Service. + + String + + String + + + + + + RuleName + + The name of the content rule to add to the Virtual Service. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcVirtualServiceRule -RuleName ActiveSync_1041 -RuleType request -VirtualService 10.154.11.181 -VSPort 443 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-AdcVsWafRule + + Assigns Web Application Firewall (WAF) rules to the specified Virtual Service. + + + + + New + AdcVsWafRule + + + + Add the specified WAF rule to the specified Virtual Service. + + + + New-AdcVsWafRule + + VS + + The IP address of the relevant Virtual Service. + + String + + + VSPort + + Specifies the port on which this Virtual Service accepts connections. + + String + + + VSProtocol + + Specifies the communication protocol of the Virtual Service. Valid options are TCP or UDP (not case sensitive). + + String + + + Rule + + Specify the name of the rule to be assigned. +The rule name must be preceded with a letter/word and a forward slash. The letter used depends on the type of rule being added: + - C or Custom + - Z or ApplicationGeneric + - A or ApplicationSpecific + - G or Generic + + String + + + Enablerules + + Specific rules can be enabled per ruleset by specifying the rule IDs to be enabled. Multiple rules can be enabled by using a comma-separated list. To retrieve the rule IDs, run the Get-WAFVSRules command. +To only update rules (and not rulesets), run the New-AdcWafRule command with a blank Rule parameter. +To enable all rules, run the New-AdcWafRule command with blank rule and disablerules parameters. + + String + + + Disablerules + + Specific rules can be disabled per ruleset by specifying the rule IDs to be disabled. Multiple rules can be disabled by using a comma-separated list. To retrieve the rule IDs, run the Get-WAFVSRules command. +To only update rules (and not rulesets), run the Add-AdcWafRule command with a blank Rule parameter. +To remove all disabled rules (i.e. enable all rules), run the Add-AdcWafRule command with blank rule and disablerules parameters. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-AdcVsWafRule + + VS + + The IP address of the relevant Virtual Service. + + String + + + VSPort + + Specifies the port on which this Virtual Service accepts connections. + + String + + + VSProtocol + + Specifies the communication protocol of the Virtual Service. Valid options are TCP or UDP (not case sensitive). + + String + + + Rule + + Specify the name of the rule to be assigned. +The rule name must be preceded with a letter/word and a forward slash. The letter used depends on the type of rule being added: + - C or Custom + - Z or ApplicationGeneric + - A or ApplicationSpecific + - G or Generic + + String + + + Enablerules + + Specific rules can be enabled per ruleset by specifying the rule IDs to be enabled. Multiple rules can be enabled by using a comma-separated list. To retrieve the rule IDs, run the Get-WAFVSRules command. +To only update rules (and not rulesets), run the New-AdcWafRule command with a blank Rule parameter. +To enable all rules, run the New-AdcWafRule command with blank rule and disablerules parameters. + + String + + + Disablerules + + Specific rules can be disabled per ruleset by specifying the rule IDs to be disabled. Multiple rules can be disabled by using a comma-separated list. To retrieve the rule IDs, run the Get-WAFVSRules command. +To only update rules (and not rulesets), run the Add-AdcWafRule command with a blank Rule parameter. +To remove all disabled rules (i.e. enable all rules), run the Add-AdcWafRule command with blank rule and disablerules parameters. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VS + + The IP address of the relevant Virtual Service. + + String + + String + + + + + + VSPort + + Specifies the port on which this Virtual Service accepts connections. + + String + + String + + + + + + VSProtocol + + Specifies the communication protocol of the Virtual Service. Valid options are TCP or UDP (not case sensitive). + + String + + String + + + + + + Rule + + Specify the name of the rule to be assigned. +The rule name must be preceded with a letter/word and a forward slash. The letter used depends on the type of rule being added: + - C or Custom + - Z or ApplicationGeneric + - A or ApplicationSpecific + - G or Generic + + String + + String + + + + + + Enablerules + + Specific rules can be enabled per ruleset by specifying the rule IDs to be enabled. Multiple rules can be enabled by using a comma-separated list. To retrieve the rule IDs, run the Get-WAFVSRules command. +To only update rules (and not rulesets), run the New-AdcWafRule command with a blank Rule parameter. +To enable all rules, run the New-AdcWafRule command with blank rule and disablerules parameters. + + String + + String + + + + + + Disablerules + + Specific rules can be disabled per ruleset by specifying the rule IDs to be disabled. Multiple rules can be disabled by using a comma-separated list. To retrieve the rule IDs, run the Get-WAFVSRules command. +To only update rules (and not rulesets), run the Add-AdcWafRule command with a blank Rule parameter. +To remove all disabled rules (i.e. enable all rules), run the Add-AdcWafRule command with blank rule and disablerules parameters. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcVsWafRule -Rule G/ip_reputation -VS 10.35.47.86 -VSPort 80 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed + + + + + + + + + + + + + + + + + New-Certificate + + WARNING: This function is deprecated. Use the following command instead: +New-TlsCertificate + + + + + New + Certificate + + + + WARNING: This function is deprecated. Use the following command instead: +New-TlsCertificate + + + + New-Certificate + + Name + + + + String + + + Password + + + + String + + + Replace + + + + SwitchParameter + + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-Certificate + + Name + + + + String + + + Password + + + + String + + + Replace + + + + SwitchParameter + + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + Password + + + + String + + String + + + + + + Replace + + + + SwitchParameter + + SwitchParameter + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New-Cluster + + Converts the LoadMaster to cluster mode. + + + + + New + Cluster + + + + Converts the LoadMaster to cluster mode. + + + + New-Cluster + + SharedAddress + + The initial shared IP address of the cluster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-Cluster + + SharedAddress + + The initial shared IP address of the cluster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SharedAddress + + The initial shared IP address of the cluster. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-Cluster -SharedAddress 10.11.0.31 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-ClusterNode + + Adds a LoadMaster to a cluster. + + + + + New + ClusterNode + + + + Adds a single node LoadMaster (which is available to be added) to the cluster. + Before running this command, run the Join-Cluster command on the LoadMaster node to be added to the cluster in a different console window. This makes the node LoadMaster available to be added. To finish adding the node, then run the New-ClusterNode command on the shared IP address immediately after running the Join-Cluster command in a different console window. + + + + New-ClusterNode + + Address + + The IP address of the node LoadMaster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-ClusterNode + + Address + + The IP address of the node LoadMaster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Address + + The IP address of the node LoadMaster. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-ClusterNode -Address 10.35.47.15 -LoadBalancer -10.35.47.100 -Credential bal + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-GeoCluster + + Add a new GEO cluster. + + + + + New + GeoCluster + + + + Run this command to add a new GEO cluster to the LoadMaster. + + + + New-GeoCluster + + ClusterIp + + The IP address of the GEO cluster. + + String + + + ClusterName + + The name of the GEO cluster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-GeoCluster + + ClusterIp + + The IP address of the GEO cluster. + + String + + + ClusterName + + The name of the GEO cluster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + The IP address of the GEO cluster. + + String + + String + + + + + + ClusterName + + The name of the GEO cluster. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-GeoCluster -ClusterIp 10.34.52.56 -ClusterName ExampleCluster2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-GeoCustomLocation + + Add a new custom location. + + + + + New + GeoCustomLocation + + + + Creates a custom GEO location which can be selected when using the Location Based selection criteria. + + + + New-GeoCustomLocation + + Location + + The name of the custom location. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-GeoCustomLocation + + Location + + The name of the custom location. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Location + + The name of the custom location. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-GeoCustomLocation -Location "New York" + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-GeoDNSSECKeySigningKey + + Generate the Key Signing Key (KSK). + + + + + New + GeoDNSSECKeySigningKey + + + + Generate the KSK. + + + + New-GeoDNSSECKeySigningKey + + SigningAlgorithm + + Specify the cryptographic algorithm to use. If this parameter is omitted, the default value is used. +Valid values are: +RSASHA256 +NSEC3RSASHA1 +NSEC3RSASHA1 + The default value is RSASHA256. + + String + + + SigningKeySize + + Specify the key size (in bits). If this parameter is omitted, the default value is used. +Valid values are: +1024 +2048 +4096 + The default value is 2048. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-GeoDNSSECKeySigningKey + + SigningAlgorithm + + Specify the cryptographic algorithm to use. If this parameter is omitted, the default value is used. +Valid values are: +RSASHA256 +NSEC3RSASHA1 +NSEC3RSASHA1 + The default value is RSASHA256. + + String + + + SigningKeySize + + Specify the key size (in bits). If this parameter is omitted, the default value is used. +Valid values are: +1024 +2048 +4096 + The default value is 2048. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SigningAlgorithm + + Specify the cryptographic algorithm to use. If this parameter is omitted, the default value is used. +Valid values are: +RSASHA256 +NSEC3RSASHA1 +NSEC3RSASHA1 + The default value is RSASHA256. + + String + + String + + + + + + SigningKeySize + + Specify the key size (in bits). If this parameter is omitted, the default value is used. +Valid values are: +1024 +2048 +4096 + The default value is 2048. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-GeoDNSSECKeySigningKey -SigningAlgorithm RSASHA512 -SigningKeySize 2048 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-GeoFQDN + + Add an FQDN. + + + + + New + GeoFQDN + + + + Add a new GEO FQDN. + + + + New-GeoFQDN + + FQDN + + The name of the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-GeoFQDN + + FQDN + + The name of the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-GeoFQDN -FQDN ExampleFQDN.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Added FQDN ExampleFQDN.com; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Added FQDN ExampleFQDN.com + + + + + + + + + + + + + + + + + New-GeoFQDNSiteAddress + + Add an IP address to an FQDN. + + + + + New + GeoFQDNSiteAddress + + + + Run this command to add the specified IP address to the relevant GEO FQDN. + + + + New-GeoFQDNSiteAddress + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + The address to be added to the FQDN. + + String + + + Cluster + + If needed, enter the cluster name where the IP address is located. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-GeoFQDNSiteAddress + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + The address to be added to the FQDN. + + String + + + Cluster + + If needed, enter the cluster name where the IP address is located. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + SiteAddress + + The address to be added to the FQDN. + + String + + String + + + + + + Cluster + + If needed, enter the cluster name where the IP address is located. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-GeoFQDNSiteAddress -FQDN Example.com -SiteAddress 10.134.33.2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Added site 10.134.33.3 to FQDN Example.com; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Added site 10.134.33.3 to FQDN Example.com + + + + + + + + + + + + + + + + + New-GeoIpRange + + Add an IP address to the IP range selection criteria list. + + + + + New + GeoIpRange + + + + Add an IP address to the IP range selection criteria list. + + + + New-GeoIpRange + + IP + + String IP address of the IP range. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-GeoIpRange + + IP + + String IP address of the IP range. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + String IP address of the IP range. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-GeoIpRange -IP 10.145.32.4 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. IP range added; Data=} +Return Code..: 200 +Response.....: Command successfully executed. IP range added + + + + + + + + + + + + + + + + + New-GeoIPWhitelist + + Add an IP address or network to the whitelist. + + + + + New + GeoIPWhitelist + + + + Run this command to add an IP address or network to the user-defined whitelist. The whitelist entries override the blacklist. + + + + New-GeoIPWhitelist + + Addr + + The address or network to be added to the GEO Access Control whitelist. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-GeoIPWhitelist + + Addr + + The address or network to be added to the GEO Access Control whitelist. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Addr + + The address or network to be added to the GEO Access Control whitelist. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-GeoIPWhitelist -Addr 10.145.33.22 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. 10.145.33.22 was successfully added to GEO ACL white list.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. 10.145.33.22 was successfully added to GEO ACL white list. + + + + + + + + + + + + + + + + + New-GlobalPacketFilterACL + + Adds an address to the global black or white list. + + + + + New + GlobalPacketFilterACL + + + + Adds a host or network IP address to the global black or white Access Control List (ACL). Note that black and white lists are only enabled when packet filtering is enabled. + + + + New-GlobalPacketFilterACL + + Type + + Specifies the access control list type: black or white. + + String + + + Address + + Specifies a host or network IP address to add to the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + + Comment + + Optionally add a comment about the entry. This parameter accepts a maximum of 127 characters. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-GlobalPacketFilterACL + + Type + + Specifies the access control list type: black or white. + + String + + + Address + + Specifies a host or network IP address to add to the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + + Comment + + Optionally add a comment about the entry. This parameter accepts a maximum of 127 characters. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Type + + Specifies the access control list type: black or white. + + String + + String + + + + + + Address + + Specifies a host or network IP address to add to the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + String + + + + + + Comment + + Optionally add a comment about the entry. This parameter accepts a maximum of 127 characters. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-GlobalPacketFilterACL -Type black -Address 10.35.47.16 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-HostsEntry + + Adds a host IP address and host FQDN. + + + + + New + HostsEntry + + + + Add a new address for local resolution. + + + + New-HostsEntry + + HostIP + + Specify the IP address for the entry. + + String + + + HostFQDN + + Specify the host FQDN for the entry. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-HostsEntry + + HostIP + + Specify the IP address for the entry. + + String + + + HostFQDN + + Specify the host FQDN for the entry. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + HostIP + + Specify the IP address for the entry. + + String + + String + + + + + + HostFQDN + + Specify the host FQDN for the entry. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-HostsEntry -HostFQDN example2.com -HostIP 10.154.11.38 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-IntermediateCertificate + + WARNING: This function is deprecated. Use the following command instead: +New-TlsIntermediateCertificate + + + + + New + IntermediateCertificate + + + + WARNING: This function is deprecated. Use the following command instead: +New-TlsIntermediateCertificate + + + + New-IntermediateCertificate + + Name + + + + String + + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-IntermediateCertificate + + Name + + + + String + + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New-LdapEndpoint + + Add a new LDAP endpoint. + + + + + New + LdapEndpoint + + + + These LDAP endpoints may be used in three different areas: +• Health checks +• SSO domains +• WUI authentication + + + + New-LdapEndpoint + + Name + + The desired name for the new LDAP endpoint. This name cannot contain any spaces. + + String + + + Server + + Specify the address, or addresses, of the LDAP server to be used. You can also specify a port number, if desired. Separate multiple addresses with a space. + + String + + + LdapProtocol + + Specify the transport protocol to use when communicating with the LDAP server. Valid values are: +Unencrypted (default) +StartTLS +LDAPS + + String + + + VInterval + + Specify how often to revalidate the user the with the LDAP server. +Range: 10 – 86400 seconds +Default: 60 + + Int16 + + + ReferralCount + + To disable referral chasing, set this to 0. To enable referral chasing, set this to a value between 1 and 10. Referral chasing limits the number of hops. +Note: Multiple hops may increase authentication latency. + + Int16 + + + AdminUser + + Specify the username of an administrator user. The username that will be used to check the LDAP server. + + String + + + AdminPass + + Specify the password for the specified administrator user. The password that will be used to check the LDAP server. + + String + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-LdapEndpoint + + Name + + The desired name for the new LDAP endpoint. This name cannot contain any spaces. + + String + + + Server + + Specify the address, or addresses, of the LDAP server to be used. You can also specify a port number, if desired. Separate multiple addresses with a space. + + String + + + LdapProtocol + + Specify the transport protocol to use when communicating with the LDAP server. Valid values are: +Unencrypted (default) +StartTLS +LDAPS + + String + + + VInterval + + Specify how often to revalidate the user the with the LDAP server. +Range: 10 – 86400 seconds +Default: 60 + + Int16 + + + ReferralCount + + To disable referral chasing, set this to 0. To enable referral chasing, set this to a value between 1 and 10. Referral chasing limits the number of hops. +Note: Multiple hops may increase authentication latency. + + Int16 + + + AdminUser + + Specify the username of an administrator user. The username that will be used to check the LDAP server. + + String + + + AdminPass + + Specify the password for the specified administrator user. The password that will be used to check the LDAP server. + + String + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\&lt;CurrentUser&gt;\TrustedPeople. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The desired name for the new LDAP endpoint. This name cannot contain any spaces. + + String + + String + + + + + + Server + + Specify the address, or addresses, of the LDAP server to be used. You can also specify a port number, if desired. Separate multiple addresses with a space. + + String + + String + + + + + + LdapProtocol + + Specify the transport protocol to use when communicating with the LDAP server. Valid values are: +Unencrypted (default) +StartTLS +LDAPS + + String + + String + + + + + + VInterval + + Specify how often to revalidate the user the with the LDAP server. +Range: 10 – 86400 seconds +Default: 60 + + Int16 + + Int16 + + + + + + ReferralCount + + To disable referral chasing, set this to 0. To enable referral chasing, set this to a value between 1 and 10. Referral chasing limits the number of hops. +Note: Multiple hops may increase authentication latency. + + Int16 + + Int16 + + + + + + AdminUser + + Specify the username of an administrator user. The username that will be used to check the LDAP server. + + String + + String + + + + + + AdminPass + + Specify the password for the specified administrator user. The password that will be used to check the LDAP server. + + String + + String + + + + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + String + + + + + + LBPort + + The port of the load balancer. + + Int32 + + Int32 + + + + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\&lt;CurrentUser&gt;\TrustedPeople. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-LdapEndpoint -Name Example3 -AdminPass examplePassword -AdminUser ExampleUser -LdapProtocol StartTLS -Server 10.154.22.11 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-LmIPConnectionLimit + + Add an IP address to be limited. + + + + + New + LmIPConnectionLimit + + + + Specify an IP address to be limited. + + + + New-LmIPConnectionLimit + + L7addr + + Add the IP address or network to be limited. + + String + + + L7limit + + Limit the number of connection attempts (per second) from a specific host/network. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-LmIPConnectionLimit + + L7addr + + Add the IP address or network to be limited. + + String + + + L7limit + + Limit the number of connection attempts (per second) from a specific host/network. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + L7addr + + Add the IP address or network to be limited. + + String + + String + + + + + + L7limit + + Limit the number of connection attempts (per second) from a specific host/network. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-LmIpConnectionLimit -L7addr 10.134.55.23 -L7limit 100 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-LmVpnConnection + + Creates a new Virtual Private Network (VPN) connection. + + + + + New + LmVpnConnection + + + + Run this command to create a new VPN connection. + + + + New-LmVpnConnection + + Name + + The name of the VPN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-LmVpnConnection + + Name + + The name of the VPN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-LmVpnConnection -Name ExampleVPNConnection + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-NetworkBondedInterface + + Add a standalone interface to a bonded interface. + + + + + New + NetworkBondedInterface + + + + The Register-NetworkBondedInterface command must be run before running this command. + + + + New-NetworkBondedInterface + + InterfaceID + + The Interface ID of the Bonded Interface. To view the interface ID for each of the interfaces, run the Get-LmNetworkInterface command. + + Int16 + + + BondID + + The Interface ID of the interface to link to the bonded interface. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-NetworkBondedInterface + + InterfaceID + + The Interface ID of the Bonded Interface. To view the interface ID for each of the interfaces, run the Get-LmNetworkInterface command. + + Int16 + + + BondID + + The Interface ID of the interface to link to the bonded interface. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The Interface ID of the Bonded Interface. To view the interface ID for each of the interfaces, run the Get-LmNetworkInterface command. + + Int16 + + Int16 + + + + + + BondID + + The Interface ID of the interface to link to the bonded interface. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-NetworkBondedInterface -InterfaceID 1 -BondID 2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Interface=} + +Id : 1 +IPAddress : +NBondMembers : 2 +BondMembers : @{RealInterface=System.Object[]} +Mode : 802.3ad +InterfaceType : Bonded +GeoTrafficEnable : no +DefaultInterface : no + + + + + + + + + + + + + + + + + New-NetworkInterfaceAdditionalAddress + + Add an additional address to an interface. + + + + + New + NetworkInterfaceAdditionalAddress + + + + Specify an additional address to be used on the interface. + + + + New-NetworkInterfaceAdditionalAddress + + InterfaceID + + The ID number of the interface to add the additional address to. + + Int16 + + + Address + + The additional address to be added. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-NetworkInterfaceAdditionalAddress + + InterfaceID + + The ID number of the interface to add the additional address to. + + Int16 + + + Address + + The additional address to be added. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The ID number of the interface to add the additional address to. + + Int16 + + Int16 + + + + + + Address + + The additional address to be added. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-NetworkInterfaceAdditionalAddress -Address 10.154.11.22 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Id : 0 +IPAddress : 10.154.11.180/16 +Mtu : 1400 +AdditionalAddresses : @{IPaddress=10.154.11.22/16} +InterfaceType : Port +GeoTrafficEnable : yes +DefaultInterface : yes + + + + + + + + + + + + + + + + + New-NetworkRoute + + Add a new IP route to the load balancer. + + + + + New + NetworkRoute + + + + Adds an IP route to the routing table on the load balancer. + + + + New-NetworkRoute + + Destination + + The destination network that needs to be reached. + + String + + + CIDR + + The subnet mask of the destination address/network. + + Int16 + + + Gateway + + The interface to be used to direct traffic to the desired network. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-NetworkRoute + + Destination + + The destination network that needs to be reached. + + String + + + CIDR + + The subnet mask of the destination address/network. + + Int16 + + + Gateway + + The interface to be used to direct traffic to the desired network. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Destination + + The destination network that needs to be reached. + + String + + String + + + + + + CIDR + + The subnet mask of the destination address/network. + + Int16 + + Int16 + + + + + + Gateway + + The interface to be used to direct traffic to the desired network. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-NetworkRoute -CIDR 16 -Destination 10.154.11.33 -Gateway 10.154.11.23 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Route=System.Object[]} +Destination : 10.154.11.24/16 +Gateway : 10.154.11.44 + +Destination : 10.154.11.33/16 +Gateway : 10.154.11.23 + + + + + + + + + + + + + + + + + New-NetworkVLAN + + Allows you to add a Virtual LAN. + + + + + New + NetworkVLAN + + + + Add a VLAN. + + + + New-NetworkVLAN + + InterfaceID + + The ID of the interface to be added to the VLAN. + + Int16 + + + VLanId + + The ID of the VLAN. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-NetworkVLAN + + InterfaceID + + The ID of the interface to be added to the VLAN. + + Int16 + + + VLanId + + The ID of the VLAN. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The ID of the interface to be added to the VLAN. + + Int16 + + Int16 + + + + + + VLanId + + The ID of the VLAN. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-NetworkVLAN -InterfaceID 1 -VLAN 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Interface=} +Id : 2 +IPAddress : +VlanId : 1 +RealInterface : 1 +InterfaceType : Vlan +GeoTrafficEnable : no +DefaultInterface : no + + + + + + + + + + + + + + + + + New-NetworkVxLAN + + Creates a new VXLAN interface. + + + + + New + NetworkVxLAN + + + + Run this command to create a new VXLAN interface. + + + + New-NetworkVxLAN + + InterfaceID + + The ID of the interface to add the VXLAN to. + + Int16 + + + VNI + + The VxLAN Network Identifier. + + Int32 + + + Addr + + The multicast group or remote address. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-NetworkVxLAN + + InterfaceID + + The ID of the interface to add the VXLAN to. + + Int16 + + + VNI + + The VxLAN Network Identifier. + + Int32 + + + Addr + + The multicast group or remote address. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The ID of the interface to add the VXLAN to. + + Int16 + + Int16 + + + + + + VNI + + The VxLAN Network Identifier. + + Int32 + + Int32 + + + + + + Addr + + The multicast group or remote address. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-NetworkVxLAN -Addr 10.154.11.34 -InterfaceID 1 -VNI 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Interface=} +Id : 2 +IPAddress : +VNI : 1 +RemoteAddress : 10.154.11.34 +RealInterface : 1 +InterfaceType : VXlan +GeoTrafficEnable : no +DefaultInterface : no + + + + + + + + + + + + + + + + + New-RealServer + + WARNING: This function is deprecated. Use the following command instead: +New-AdcRealServer + + + + + New + RealServer + + + + WARNING: This function is deprecated. Use the following command instead: +New-AdcRealServer + + + + New-RealServer + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RealServerPort + + + + Int32 + + + Weight + + + + Int32 + + + Forward + + + + String + + + Enable + + + + Boolean + + + Non_Local + + + + Boolean + + + Limit + + + + Int64 + + + Critical + + + + Boolean + + + Follow + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-RealServer + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RealServerPort + + + + Int32 + + + Weight + + + + Int32 + + + Forward + + + + String + + + Enable + + + + Boolean + + + Non_Local + + + + Boolean + + + Limit + + + + Int64 + + + Critical + + + + Boolean + + + Follow + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + RealServer + + + + String + + String + + + + + + RealServerPort + + + + Int32 + + Int32 + + + + + + Weight + + + + Int32 + + Int32 + + + + + + Forward + + + + String + + String + + + + + + Enable + + + + Boolean + + Boolean + + + + + + Non_Local + + + + Boolean + + Boolean + + + + + + Limit + + + + Int64 + + Int64 + + + + + + Critical + + + + Boolean + + Boolean + + + + + + Follow + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New-RealServerRule + + WARNING: This function is deprecated. Use the following command instead: +New-AdcRealServerRule + + + + + New + RealServerRule + + + + WARNING: This function is deprecated. Use the following command instead: +New-AdcRealServerRule + + + + New-RealServerRule + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RSPort + + + + Int32 + + + RSIndex + + + + Int32 + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-RealServerRule + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RSPort + + + + Int32 + + + RSIndex + + + + Int32 + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + RealServer + + + + String + + String + + + + + + RSPort + + + + Int32 + + Int32 + + + + + + RSIndex + + + + Int32 + + Int32 + + + + + + RuleName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New-Route + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkRoute + + + + + New + Route + + + + WARNING: This function is deprecated. Use the following command instead: +New-NetworkRoute + + + + New-Route + + Destination + + + + String + + + CIDR + + + + Int16 + + + Gateway + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-Route + + Destination + + + + String + + + CIDR + + + + Int16 + + + Gateway + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Destination + + + + String + + String + + + + + + CIDR + + + + Int16 + + Int16 + + + + + + Gateway + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New-Rule + + WARNING: This function is deprecated. Use the following command instead: +New-AdcContentRule + + + + + New + Rule + + + + WARNING: This function is deprecated. Use the following command instead: +New-AdcContentRule + + + + New-Rule + + RuleName + + + + String + + + MatchType + + + + String + + + IncHost + + + + Boolean + + + NoCase + + + + Boolean + + + Negate + + + + Boolean + + + IncQuery + + + + Boolean + + + Header + + + + String + + + Pattern + + + + String + + + Replacement + + + + String + + + Type + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-Rule + + RuleName + + + + String + + + MatchType + + + + String + + + IncHost + + + + Boolean + + + NoCase + + + + Boolean + + + Negate + + + + Boolean + + + IncQuery + + + + Boolean + + + Header + + + + String + + + Pattern + + + + String + + + Replacement + + + + String + + + Type + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RuleName + + + + String + + String + + + + + + MatchType + + + + String + + String + + + + + + IncHost + + + + Boolean + + Boolean + + + + + + NoCase + + + + Boolean + + Boolean + + + + + + Negate + + + + Boolean + + Boolean + + + + + + IncQuery + + + + Boolean + + Boolean + + + + + + Header + + + + String + + String + + + + + + Pattern + + + + String + + String + + + + + + Replacement + + + + String + + String + + + + + + Type + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New-SdnController + + Add an SDN controller to the LoadMaster. + + + + + New + SdnController + + + + Add the specified controller. + + + + New-SdnController + + IPV4 + + The IPv4 address of the SDN controller. + + String + + + Port + + The port of the SDN controller. + + Int32 + + + Clid + + The cluster ID for the new SDN controller. If a number is specified, the SDN controller will be added to the cluster with the relevant ID number. The cluster with the ID number specified must already exist. +If a number is not specified, the SDN controller will be added to a new cluster. + + Int32 + + + Https + + The HTTP method to use. +0 - HTTP +1 - HTTPS + + Boolean + + + User + + The username to be used to access the SDN controller RESTful API. + + String + + + Password + + The password to be used to access the SDN controller RESTful API. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-SdnController + + IPV4 + + The IPv4 address of the SDN controller. + + String + + + Port + + The port of the SDN controller. + + Int32 + + + Clid + + The cluster ID for the new SDN controller. If a number is specified, the SDN controller will be added to the cluster with the relevant ID number. The cluster with the ID number specified must already exist. +If a number is not specified, the SDN controller will be added to a new cluster. + + Int32 + + + Https + + The HTTP method to use. +0 - HTTP +1 - HTTPS + + Boolean + + + User + + The username to be used to access the SDN controller RESTful API. + + String + + + Password + + The password to be used to access the SDN controller RESTful API. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IPV4 + + The IPv4 address of the SDN controller. + + String + + String + + + + + + Port + + The port of the SDN controller. + + Int32 + + Int32 + + + + + + Clid + + The cluster ID for the new SDN controller. If a number is specified, the SDN controller will be added to the cluster with the relevant ID number. The cluster with the ID number specified must already exist. +If a number is not specified, the SDN controller will be added to a new cluster. + + Int32 + + Int32 + + + + + + Https + + The HTTP method to use. +0 - HTTP +1 - HTTPS + + Boolean + + Boolean + + + + + + User + + The username to be used to access the SDN controller RESTful API. + + String + + String + + + + + + Password + + The password to be used to access the SDN controller RESTful API. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-SdnController -IPV4 10.123.2.2 -Port 80 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=Data} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-SecUser + + Allows you to add a new local user. + + + + + New + SecUser + + + + Allows you to add a new local user. + + + + New-SecUser + + User + + Username for the new user. + + String + + + Password + + Password for the new user. + + String + + + Radius + + The radius parameter determines whether the user will use RADIUS server authentication or not when logging in to the LoadMaster. The RADIUS server details must be set up before this option can be used. +0 - Do not use RADIUS authentication +1 - Use RADIUS authentication + + Boolean + + + NoPassword + + This option is only valid if session management is enabled. Set this option to yes to create a user with no password. This can be used to allow certificate-based access. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-SecUser + + User + + Username for the new user. + + String + + + Password + + Password for the new user. + + String + + + Radius + + The radius parameter determines whether the user will use RADIUS server authentication or not when logging in to the LoadMaster. The RADIUS server details must be set up before this option can be used. +0 - Do not use RADIUS authentication +1 - Use RADIUS authentication + + Boolean + + + NoPassword + + This option is only valid if session management is enabled. Set this option to yes to create a user with no password. This can be used to allow certificate-based access. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + User + + Username for the new user. + + String + + String + + + + + + Password + + Password for the new user. + + String + + String + + + + + + Radius + + The radius parameter determines whether the user will use RADIUS server authentication or not when logging in to the LoadMaster. The RADIUS server details must be set up before this option can be used. +0 - Do not use RADIUS authentication +1 - Use RADIUS authentication + + Boolean + + Boolean + + + + + + NoPassword + + This option is only valid if session management is enabled. Set this option to yes to create a user with no password. This can be used to allow certificate-based access. + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-SecUser -Password password1234 -Radius 0 -User ExampleUsername + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-SecUserCertificate + + Generate a new certificate for a user. + + + + + New + SecUserCertificate + + + + Generate a new certificate for a user. + + + + New-SecUserCertificate + + User + + The username of the user to generate the certificate for. + + String + + + Passphrase + + The passphrase is optional. If entered, it will be used to encrypt the private key. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-SecUserCertificate + + User + + The username of the user to generate the certificate for. + + String + + + Passphrase + + The passphrase is optional. If entered, it will be used to encrypt the private key. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + User + + The username of the user to generate the certificate for. + + String + + String + + + + + + Passphrase + + The passphrase is optional. If entered, it will be used to encrypt the private key. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-SecUserCertificate -User Example + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-SSODomain + + Allows you to create a new Single Sign-On (SSO) Domain. + + + + + New + SSODomain + + + + Allows you to create a new Single Sign-On (SSO) Domain. + + + + New-SSODomain + + Domain + + Specifies the name of the SSO domain LoadMaster entry to be modified. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + Specifies the name of the SSO domain LoadMaster entry to be modified. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + You can only use one login method - either certificate or credential. You cannot use both. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-SSODomain -Domain example3.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed (Domain "example3.com" created); Data=} +Return Code..: 200 +Response.....: Command successfully executed (Domain "example3.com" created) + + + + + + + + + + + + + + + + + New-TlsCertificate + + Allows you to add a certificate to the LoadMaster. + + + + + New + TlsCertificate + + + + Allows you to add a certificate to the LoadMaster. + + + + New-TlsCertificate + + Name + + The identifier that the certificate is known as on the LoadMaster. + + String + + + Password + + The password for the certificate file to be uploaded. + + String + + + Replace + + Specifies if this certificate replaces an existing certificate already installed. + + SwitchParameter + + + Path + + The local path to the certificate file. The certificate file can be either .PEM or .PFX (IIS) format + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-TlsCertificate + + Name + + The identifier that the certificate is known as on the LoadMaster. + + String + + + Password + + The password for the certificate file to be uploaded. + + String + + + Replace + + Specifies if this certificate replaces an existing certificate already installed. + + SwitchParameter + + + Path + + The local path to the certificate file. The certificate file can be either .PEM or .PFX (IIS) format + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The identifier that the certificate is known as on the LoadMaster. + + String + + String + + + + + + Password + + The password for the certificate file to be uploaded. + + String + + String + + + + + + Replace + + Specifies if this certificate replaces an existing certificate already installed. + + SwitchParameter + + SwitchParameter + + + + + + Path + + The local path to the certificate file. The certificate file can be either .PEM or .PFX (IIS) format + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-TlsCertificate -Name mycert -Password password -Path "C:\certs\mycert.pem" + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-TlsHSMClientCert + + Generates the local client certificate that is to be uploaded to the HSM. + + + + + New + TlsHSMClientCert + + + + Generates the local client certificate that is to be uploaded to the HSM. + + + + New-TlsHSMClientCert + + Path + + The path to where you want the generated certificate file to be downloaded to. + + String + + + Clcertname + + Provide a name for the generated file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-TlsHSMClientCert + + Path + + The path to where you want the generated certificate file to be downloaded to. + + String + + + Clcertname + + Provide a name for the generated file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to where you want the generated certificate file to be downloaded to. + + String + + String + + + + + + Clcertname + + Provide a name for the generated file. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-TlsHSMClientCert –Clcertname <CertificateName> -Path “<PathToDownloadTheGeneratedFileTo>” + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-TlsIntermediateCertificate + + Allows you to add a certificate to the LoadMaster. + + + + + New + TlsIntermediateCertificate + + + + Allows you to add a certificate to the LoadMaster. + + + + New-TlsIntermediateCertificate + + Name + + The name of the intermediate certificate to be added to the LoadMaster. + + String + + + Path + + The local path to the intermediate certificate file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-TlsIntermediateCertificate + + Name + + The name of the intermediate certificate to be added to the LoadMaster. + + String + + + Path + + The local path to the intermediate certificate file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the intermediate certificate to be added to the LoadMaster. + + String + + String + + + + + + Path + + The local path to the intermediate certificate file. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-TlsIntermediateCertificate -Name certificate.pem -Password password -Path "C:\certs\certificates" + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-VirtualService + + WARNING: This function is deprecated. Use the following command instead: +New-AdcVirtualService + + + + + New + VirtualService + + + + WARNING: This function is deprecated. Use the following command instead: +New-AdcVirtualService + + + + New-VirtualService + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + AddVia + + + + Int16 + + + Template + + + + String + + + Cache + + + + Boolean + + + CertFile + + + + String + + + CheckType + + + + String + + + CheckHost + + + + String + + + CheckPattern + + + + String + + + CheckUrl + + + + String + + + CheckHeaders + + + + String + + + LdapEndpoint + + + + String + + + MatchLen + + + + String + + + CheckUse1_1 + + + + Int32 + + + CheckPort + + + + Int32 + + + EnhancedHealthChecks + + + + Boolean + + + RsMinimum + + + + Int32 + + + ClientCert + + + + Int16 + + + Compress + + + + Boolean + + + Cookie + + + + String + + + CachePercent + + + + Int16 + + + DefaultGW + + + + String + + + Enable + + + + Boolean + + + ErrorCode + + + + String + + + ErrorUrl + + + + String + + + PortFollow + + + + Int32 + + + ForceL7 + + + + Boolean + + + Idletime + + + + Int32 + + + LocalBindAddresses + + + + String[] + + + VSType + + + + String + + + Nickname + + + + String + + + Persist + + + + String + + + PersistTimeout + + + + Int32 + + + QueryTag + + + + String + + + CipherSet + + + + String + + + SSLReencrypt + + + + Boolean + + + SSLReverse + + + + Boolean + + + SSLRewrite + + + + String + + + ReverseSNIHostname + + + + String + + + Schedule + + + + String + + + ServerInit + + + + Int16 + + + SSLAcceleration + + + + Boolean + + + StandByAddr + + + + String + + + StandByPort + + + + String + + + TransactionLimit + + + + Int32 + + + Transparent + + + + Boolean + + + SubnetOriginating + + + + Boolean + + + UseforSnat + + + + Boolean + + + QoS + + + + String + + + CheckUseGet + + + + Int32 + + + Verify + + + + Int16 + + + ExtraHdrKey + + + + String + + + ExtraHdrValue + + + + String + + + AllowedHosts + + + + String + + + AllowedDirectories + + + + String + + + AllowedGroups + + + + String + + + GroupSIDs + + + + String + + + IncludeNestedGroups + + + + Boolean + + + DisplayPubPriv + + + + Boolean + + + DisablePasswordForm + + + + Boolean + + + Domain + + + + String + + + AltDomains + + + + String + + + Logoff + + + + String + + + ESPLogs + + + + Int16 + + + SMTPAllowedDomains + + + + String + + + ESPEnabled + + + + Boolean + + + UserPwdChangeUrl + + + + String + + + UserPwdChangeMsg + + + + String + + + InputAuthMode + + + + Int16 + + + OutputAuthMode + + + + Int16 + + + StartTLSMode + + + + Int16 + + + ExtraPorts + + + + String + + + AltAddress + + + + String + + + MultiConnect + + + + Boolean + + + SingleSignOnDir + + + + String + + + OCSPVerify + + + + String + + + FollowVSID + + + + Int32 + + + TlsType + + + + Boolean + + + CheckPostData + + + + String + + + CheckCodes + + + + String + + + PreProcPrecedence + + + + String + + + PreProcPrecedencePos + + + + Int16 + + + RequestPrecedence + + + + String + + + RequestPrecedencePos + + + + Int16 + + + ResponsePrecedence + + + + String + + + ResponsePrecedencePos + + + + Int16 + + + RsRulePrecedence + + + + String + + + RsRulePrecedencePos + + + + Int16 + + + NeedHostName + + + + Boolean + + + CopyHdrFrom + + + + String + + + CopyHdrTo + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-VirtualService + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + AddVia + + + + Int16 + + + Template + + + + String + + + Cache + + + + Boolean + + + CertFile + + + + String + + + CheckType + + + + String + + + CheckHost + + + + String + + + CheckPattern + + + + String + + + CheckUrl + + + + String + + + CheckHeaders + + + + String + + + LdapEndpoint + + + + String + + + MatchLen + + + + String + + + CheckUse1_1 + + + + Int32 + + + CheckPort + + + + Int32 + + + EnhancedHealthChecks + + + + Boolean + + + RsMinimum + + + + Int32 + + + ClientCert + + + + Int16 + + + Compress + + + + Boolean + + + Cookie + + + + String + + + CachePercent + + + + Int16 + + + DefaultGW + + + + String + + + Enable + + + + Boolean + + + ErrorCode + + + + String + + + ErrorUrl + + + + String + + + PortFollow + + + + Int32 + + + ForceL7 + + + + Boolean + + + Idletime + + + + Int32 + + + LocalBindAddresses + + + + String[] + + + VSType + + + + String + + + Nickname + + + + String + + + Persist + + + + String + + + PersistTimeout + + + + Int32 + + + QueryTag + + + + String + + + CipherSet + + + + String + + + SSLReencrypt + + + + Boolean + + + SSLReverse + + + + Boolean + + + SSLRewrite + + + + String + + + ReverseSNIHostname + + + + String + + + Schedule + + + + String + + + ServerInit + + + + Int16 + + + SSLAcceleration + + + + Boolean + + + StandByAddr + + + + String + + + StandByPort + + + + String + + + TransactionLimit + + + + Int32 + + + Transparent + + + + Boolean + + + SubnetOriginating + + + + Boolean + + + UseforSnat + + + + Boolean + + + QoS + + + + String + + + CheckUseGet + + + + Int32 + + + Verify + + + + Int16 + + + ExtraHdrKey + + + + String + + + ExtraHdrValue + + + + String + + + AllowedHosts + + + + String + + + AllowedDirectories + + + + String + + + AllowedGroups + + + + String + + + GroupSIDs + + + + String + + + IncludeNestedGroups + + + + Boolean + + + DisplayPubPriv + + + + Boolean + + + DisablePasswordForm + + + + Boolean + + + Domain + + + + String + + + AltDomains + + + + String + + + Logoff + + + + String + + + ESPLogs + + + + Int16 + + + SMTPAllowedDomains + + + + String + + + ESPEnabled + + + + Boolean + + + UserPwdChangeUrl + + + + String + + + UserPwdChangeMsg + + + + String + + + InputAuthMode + + + + Int16 + + + OutputAuthMode + + + + Int16 + + + StartTLSMode + + + + Int16 + + + ExtraPorts + + + + String + + + AltAddress + + + + String + + + MultiConnect + + + + Boolean + + + SingleSignOnDir + + + + String + + + OCSPVerify + + + + String + + + FollowVSID + + + + Int32 + + + TlsType + + + + Boolean + + + CheckPostData + + + + String + + + CheckCodes + + + + String + + + PreProcPrecedence + + + + String + + + PreProcPrecedencePos + + + + Int16 + + + RequestPrecedence + + + + String + + + RequestPrecedencePos + + + + Int16 + + + ResponsePrecedence + + + + String + + + ResponsePrecedencePos + + + + Int16 + + + RsRulePrecedence + + + + String + + + RsRulePrecedencePos + + + + Int16 + + + NeedHostName + + + + Boolean + + + CopyHdrFrom + + + + String + + + CopyHdrTo + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + AddVia + + + + Int16 + + Int16 + + + + + + Template + + + + String + + String + + + + + + Cache + + + + Boolean + + Boolean + + + + + + CertFile + + + + String + + String + + + + + + CheckType + + + + String + + String + + + + + + CheckHost + + + + String + + String + + + + + + CheckPattern + + + + String + + String + + + + + + CheckUrl + + + + String + + String + + + + + + CheckHeaders + + + + String + + String + + + + + + LdapEndpoint + + + + String + + String + + + + + + MatchLen + + + + String + + String + + + + + + CheckUse1_1 + + + + Int32 + + Int32 + + + + + + CheckPort + + + + Int32 + + Int32 + + + + + + EnhancedHealthChecks + + + + Boolean + + Boolean + + + + + + RsMinimum + + + + Int32 + + Int32 + + + + + + ClientCert + + + + Int16 + + Int16 + + + + + + Compress + + + + Boolean + + Boolean + + + + + + Cookie + + + + String + + String + + + + + + CachePercent + + + + Int16 + + Int16 + + + + + + DefaultGW + + + + String + + String + + + + + + Enable + + + + Boolean + + Boolean + + + + + + ErrorCode + + + + String + + String + + + + + + ErrorUrl + + + + String + + String + + + + + + PortFollow + + + + Int32 + + Int32 + + + + + + ForceL7 + + + + Boolean + + Boolean + + + + + + Idletime + + + + Int32 + + Int32 + + + + + + LocalBindAddresses + + + + String[] + + String[] + + + + + + VSType + + + + String + + String + + + + + + Nickname + + + + String + + String + + + + + + Persist + + + + String + + String + + + + + + PersistTimeout + + + + Int32 + + Int32 + + + + + + QueryTag + + + + String + + String + + + + + + CipherSet + + + + String + + String + + + + + + SSLReencrypt + + + + Boolean + + Boolean + + + + + + SSLReverse + + + + Boolean + + Boolean + + + + + + SSLRewrite + + + + String + + String + + + + + + ReverseSNIHostname + + + + String + + String + + + + + + Schedule + + + + String + + String + + + + + + ServerInit + + + + Int16 + + Int16 + + + + + + SSLAcceleration + + + + Boolean + + Boolean + + + + + + StandByAddr + + + + String + + String + + + + + + StandByPort + + + + String + + String + + + + + + TransactionLimit + + + + Int32 + + Int32 + + + + + + Transparent + + + + Boolean + + Boolean + + + + + + SubnetOriginating + + + + Boolean + + Boolean + + + + + + UseforSnat + + + + Boolean + + Boolean + + + + + + QoS + + + + String + + String + + + + + + CheckUseGet + + + + Int32 + + Int32 + + + + + + Verify + + + + Int16 + + Int16 + + + + + + ExtraHdrKey + + + + String + + String + + + + + + ExtraHdrValue + + + + String + + String + + + + + + AllowedHosts + + + + String + + String + + + + + + AllowedDirectories + + + + String + + String + + + + + + AllowedGroups + + + + String + + String + + + + + + GroupSIDs + + + + String + + String + + + + + + IncludeNestedGroups + + + + Boolean + + Boolean + + + + + + DisplayPubPriv + + + + Boolean + + Boolean + + + + + + DisablePasswordForm + + + + Boolean + + Boolean + + + + + + Domain + + + + String + + String + + + + + + AltDomains + + + + String + + String + + + + + + Logoff + + + + String + + String + + + + + + ESPLogs + + + + Int16 + + Int16 + + + + + + SMTPAllowedDomains + + + + String + + String + + + + + + ESPEnabled + + + + Boolean + + Boolean + + + + + + UserPwdChangeUrl + + + + String + + String + + + + + + UserPwdChangeMsg + + + + String + + String + + + + + + InputAuthMode + + + + Int16 + + Int16 + + + + + + OutputAuthMode + + + + Int16 + + Int16 + + + + + + StartTLSMode + + + + Int16 + + Int16 + + + + + + ExtraPorts + + + + String + + String + + + + + + AltAddress + + + + String + + String + + + + + + MultiConnect + + + + Boolean + + Boolean + + + + + + SingleSignOnDir + + + + String + + String + + + + + + OCSPVerify + + + + String + + String + + + + + + FollowVSID + + + + Int32 + + Int32 + + + + + + TlsType + + + + Boolean + + Boolean + + + + + + CheckPostData + + + + String + + String + + + + + + CheckCodes + + + + String + + String + + + + + + PreProcPrecedence + + + + String + + String + + + + + + PreProcPrecedencePos + + + + Int16 + + Int16 + + + + + + RequestPrecedence + + + + String + + String + + + + + + RequestPrecedencePos + + + + Int16 + + Int16 + + + + + + ResponsePrecedence + + + + String + + String + + + + + + ResponsePrecedencePos + + + + Int16 + + Int16 + + + + + + RsRulePrecedence + + + + String + + String + + + + + + RsRulePrecedencePos + + + + Int16 + + Int16 + + + + + + NeedHostName + + + + Boolean + + Boolean + + + + + + CopyHdrFrom + + + + String + + String + + + + + + CopyHdrTo + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New-VSPacketFilterACL + + Adds an address to the black or white list for a Virtual Service. + + + + + New + VSPacketFilterACL + + + + Adds a host or network IP address to the black or white access control list for a specific Virtual Service. Note that black and white lists are only enabled when packet filtering is enabled. + + + + New-VSPacketFilterACL + + VirtualService + + Specifies the Virtual Service IP address. + + String + + + VSPort + + Specifies the Virtual Service port number. + + Int32 + + + VSProtocol + + Specifies the Virtual Service protocol. + + String + + + Type + + Specify the type of list: +- black: blocked addresses +- white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + String + + + AclAddress + + Specifies a host or network IP address to add to the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + + AclComment + + Optionally specify a comment in relation to the list entry. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-VSPacketFilterACL + + VirtualService + + Specifies the Virtual Service IP address. + + String + + + VSPort + + Specifies the Virtual Service port number. + + Int32 + + + VSProtocol + + Specifies the Virtual Service protocol. + + String + + + Type + + Specify the type of list: +- black: blocked addresses +- white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + String + + + AclAddress + + Specifies a host or network IP address to add to the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + + AclComment + + Optionally specify a comment in relation to the list entry. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + Specifies the Virtual Service IP address. + + String + + String + + + + + + VSPort + + Specifies the Virtual Service port number. + + Int32 + + Int32 + + + + + + VSProtocol + + Specifies the Virtual Service protocol. + + String + + String + + + + + + Type + + Specify the type of list: +- black: blocked addresses +- white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + String + + String + + + + + + AclAddress + + Specifies a host or network IP address to add to the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + String + + + + + + AclComment + + Optionally specify a comment in relation to the list entry. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-VSPacketFilterACL -AclAddress 10.134.33.2 -Type black -VirtualService 10.35.47.16 -VSPort 80 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-WafCustomRuleData + + Upload a custom rule data file. + + + + + New + WafCustomRuleData + + + + This command allows you to upload a custom rule data file to the LoadMaster. + + + + New-WafCustomRuleData + + Path + + The path where the custom rule data file is stored followed by a back slash and the filename/extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-WafCustomRuleData + + Path + + The path where the custom rule data file is stored followed by a back slash and the filename/extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path where the custom rule data file is stored followed by a back slash and the filename/extension. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Filename + + The filename of the custom rule data file followed by the file extension (.data). + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-WafCustomRuleData -Filename modsecurity_35_bad_robots.data -Path C:\t\modsecurity_35_bad_robots.data + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + New-WafCustomRuleSet + + Upload custom Web Application Firewall (WAF) rule files or a rule set. + + + + + New + WafCustomRuleSet + + + + Upload custom WAF rule files or a rule set to the LoadMaster. + + + + New-WafCustomRuleSet + + Path + + The path to the custom rule file(s) or rule set file followed by a forward slash and then the filename.extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + New-WafCustomRuleSet + + Path + + The path to the custom rule file(s) or rule set file followed by a forward slash and then the filename.extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to the custom rule file(s) or rule set file followed by a forward slash and then the filename.extension. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Filename + + The desired rule name to be displayed on the WUI. This is only relevant for individual rule files. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-WafCustomRuleSet -Filename modsecurity_crs_40_generic_attacks.conf -Path C:\WAF\modsecurity-crs_2.2.5\modsecurity-crs_2.2.5\base_rules\modsecurity_crs_40_generic_attacks.conf + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + NMAddNode + + WARNING: This function is deprecated. Use the following command instead: +New-ClusterNode + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-ClusterNode + + + + NMAddNode + + Address + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + NMAddNode + + Address + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Address + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NMClusterCreate + + WARNING: This function is deprecated. Use the following command instead: +New-Cluster + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-Cluster + + + + NMClusterCreate + + SharedAddress + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + NMClusterCreate + + SharedAddress + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SharedAddress + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NMClusterStatus + + WARNING: This function is deprecated. Use the following command instead: +Get-ClusterStatus + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-ClusterStatus + + + + NMClusterStatus + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + NMClusterStatus + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NMDeleteNode + + WARNING: This function is deprecated. Use the following command instead: +Remove-ClusterNode + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-ClusterNode + + + + NMDeleteNode + + NodeId + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + NMDeleteNode + + NodeId + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + NodeId + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NMDisableNode + + WARNING: This function is deprecated. Use the following command instead: +Disable-ClusterNode + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Disable-ClusterNode + + + + NMDisableNode + + NodeId + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + NMDisableNode + + NodeId + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + NodeId + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NMEnableNode + + WARNING: This function is deprecated. Use the following command instead: +Enable-ClusterNode + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Enable-ClusterNode + + + + NMEnableNode + + NodeId + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + NMEnableNode + + NodeId + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + NodeId + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NMJoinCluster + + WARNING: This function is deprecated. Use the following command instead: +Join-Cluster + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Join-Cluster + + + + NMJoinCluster + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + NMJoinCluster + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ping-Host + + Ping the specified host. + + + + + Ping + Host + + + + The ping command displays whether the destination responded and how long it took to receive a reply. The destination can be an IP address or a Fully Qualified Domain Name (FQDN). + + + + Ping-Host + + Address + + The destination address to ping. The destination can be an IP address or a FQDN. + + String + + + PingClass + + Specify ping for IPv4 addresses or ping6 for IPv6 addresses. + + String + + + Interface + + Specify the ID of the interface from which the ping should be sent from. If the interface is not specified here, the correct interface to ping an address on a particular network will be automatically selected. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Ping-Host + + Address + + The destination address to ping. The destination can be an IP address or a FQDN. + + String + + + PingClass + + Specify ping for IPv4 addresses or ping6 for IPv6 addresses. + + String + + + Interface + + Specify the ID of the interface from which the ping should be sent from. If the interface is not specified here, the correct interface to ping an address on a particular network will be automatically selected. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Address + + The destination address to ping. The destination can be an IP address or a FQDN. + + String + + String + + + + + + PingClass + + Specify ping for IPv4 addresses or ping6 for IPv6 addresses. + + String + + String + + + + + + Interface + + Specify the ID of the interface from which the ping should be sent from. If the interface is not specified here, the correct interface to ping an address on a particular network will be automatically selected. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Ping-Host -Address 10.154.190.207 -PingClass ping + + + + + Example Output: +Full response: @{ReturnCode=422; Response=Command Failed; Data=} +Return Code..: 422 +Response.....: Command Failed +Data field...: @{PingResult=Command Failed: PING 10.35.47.8 (10.35.47.8) 56(84) bytes of data. From 10.35.47.15 icmp_seq=1 Destination Host Unreachable +From 10.35.47.15 icmp_seq=2 Destination Host Unreachable From 10.35.47.15 icmp_seq=3 Destination Host Unreachable; PacketsTransmitted=3 packets transmit +ted; PacketsReceived=0 received; Errors=+3 errors; PacketsLoss=100% packet loss; Time=} + + + + + + + + + + + + + + + + + Read-LicenseEULA + + Displays the EULA and a magic cookie. + + + + + Read + LicenseEULA + + + + The End User License Agreement (EULA) and magic cookie will be displayed. + + + + Read-LicenseEULA + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + $read = Read-LicenseEULA + + + + + Example Output: +Full response: @{MagicString=013b50b2-e3bb-468e-b64a-de78d46cdfb8; Eula=... +Return Code..: 200 +Response.....: Command successfully executed +Data field...: +Eula +---- +@{MagicString=013b50b2-e3bb-468e-b64a-de78d46cdfb8; Eula=... +Param........: +<p style="text-align:center"><h2>LoadMaster End User License Agreement</h2></p> + +<p style="text-align:center">KEMP Technologies END-USER PRODUCT LICENSE AGREEMENT</p> + +<p> +1. READ THE FOLLOWING TERMS AND CONDITIONS CAREFULLY BEFORE INSTALLING THIS PRODUCT ON YOUR NETWORK OR PERSONAL COMPUTER. THIS PRODUCT LICENSE AGREEMENT IS A LEGAL AGREEMENT BETWEEN YOU (EITHE +R ON BEHALF OF YOURSELF AS AN INDIVIDUAL OR ON BEHALF OF AN ENTITY AS ITS AUTHORIZED REPRESENTATIVE) ON THE ONE HAND, AND KEMP Technologies, INC. AND ITS SUBSIDIARIES AND AFFILIATES (COLLECTIV +ELY REFERRED TO AS 'KEMP') ON THE OTHER HAND, FOR THE HARDWARE AND/OR SOFTWARE PRODUCT ENTITLED 'LoadMaster,' WHICH INCLUDES PHYSICAL HARDWARE AND/OR COMPUTER SOFTWARE AND ANY ASSOCIATED MEDIA +, PRINTED MATERIALS, AND/OR 'ONLINE' OR ELECTRONIC DOCUMENTATION (TOGETHER CALLED THE 'PRODUCT'). PLEASE READ THIS AGREEMENT CAREFULLY AND PRINT OUT A COPY FOR YOUR RECORDS. THIS AGREEMENT SUP +ERSEDES PREVIOUS VERSIONS.</p> + +<br /> + +<p>BY INSTALLING, COPYING, OR OTHERWISE USING THE PRODUCT, YOU ACKNOWLEDGE THAT YOU HAVE READ THIS PRODUCT LICENSE AGREEMENT AND AGREE TO BE BOUND BY ITS TERMS. THE PRODUCT IS LICENSED, NOT SO +LD, TO YOU FOR USE ONLY UNDER THE TERMS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO THE TERMS OF THIS PRODUCT LICENSE AGREEMENT, DO NOT INSTALL OR USE THE PRODUCT AND DELETE ALL COPIES IN YOUR P +OSSESSION. </p> + +<br /> + +<p>2. KEMP grants you a non-exclusive, non-transferable license to use one copy of the Product in the country in which you acquired the Product for your own personal or commercial use, but ret +ains all property rights in the Product and all copies thereof. All other rights are expressly reserved by KEMP. You may: (i) use the Product on any supported computer configuration, provided +the Product is used on only one (1) such computer; and (ii) permanently transfer the Product and its documentation to another user provided you retain no copies and the recipient agrees to the + terms of this Agreement. You may not transfer, distribute, rent, sub-license, or lease the Product or documentation, except as provided herein; or alter, modify, or adapt the Product or docum +entation, or any portions thereof.</p> + +<br /> + +<p>3. You acknowledge that the Product in source code form remains a confidential trade secret of KEMP. You agree not to modify or attempt to reverse engineer, decompile, or disassemble the Pr +oduct, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.</p> + +<br /> + +<p>4. OWNERSHIP: All right, title and interest and intellectual property rights in and to the Product (including but not limited to any titles, computer code, concepts, screen images, text and + 'applets,' incorporated into the Product), the accompanying printed materials, and any copies of the Software, are owned by KEMP or its licensors. This Agreement grants you no rights to use s +uch content other than as part of the Product.</p> + +<br /> + +<p>5. This Agreement is effective upon your installation of the Product and shall continue until revoked by KEMP or until you breach any term hereof; upon termination you agree to destroy and/ +or delete all copies of the Product in your possession. </p> + +<br /> + +<p>6. LICENSE RESTRICTIONS: You acknowledge that the foregoing license extends only to your use of the features and functionality of the Product as described in the documentation accompanying +the version of the Software downloaded or Product obtained by you (the "Documentation"), and you agree not to reconfigure or modify the Product in order to enable features or functionality dif +ferent than those described in such Documentation or available in other KEMP products without notifying KEMP and paying the applicable Product upgrade fee. You may not: (i) reverse engineer, d +ecompile, or disassemble the Product; (ii) modify, or create derivative works based upon, the Product in whole or in part; (iii) distribute copies of the Product; (iv) remove any proprietary n +otices or labels on the Product; or (v) resell, lease, rent, transfer, sublicense, or otherwise transfer rights to the Product. Any use in violation of this Section shall immediately terminate + your license to the Product.</p> + +<br /> + +<p>7. TITLE: You agree that no title to the intellectual property in the Product, Subscription Services (as defined), or license keys is transferred to you. Title, ownership, rights, and intel +lectual property rights in and to the Product, Subscription Services, and license keys shall remain in KEMP and/or KEMP's licensors. The Product, Subscription Services and license keys are pro +tected by intellectual property laws of the United States and other countries and by international treaties.</p> + +<br /> + +<p>8. GENERAL: The Product is provided to you at minimal charge. KEMP does not guarantee that use of the Product will be uninterrupted or error-free. You acknowledge that performance of the Pr +oduct may be affected by any number of factors, including without limitation, technical failure of the Product, the acts or omissions of third parties and other causes reasonably beyond the co +ntrol of KEMP. Certain features of the Product may not be forward-compatible with future versions of the Product and use of such features with future versions of the Product may require purcha +se of the applicable future version of the Product.</p> + +<br /> + +<p>9. AS IS SALE: YOU AGREE THAT KEMP AND ITS LICENSORS HAVE MADE NO EXPRESS WARRANTIES, ORAL OR WRITTEN, TO YOU REGARDING THE PRODUCT AND THAT THE PRODUCT IS BEING PROVIDED TO YOU "AS IS" WIT +HOUT WARRANTY OF ANY KIND. YOU ACKNOWLEDGE THAT THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PRODUCT IS WITH YOU. SHOULD THE PRODUCT PROVE DEFECTIVE, YOU (AND NOT KEMP, THE RETAILE +R, OR ANY DISTRIBUTOR) ASSUME THE ENTIRE COST OF ALL NECESSARY REPAIRS.</p> + +<br /> + +<p>10. DISCLAIMER: KEMP DISCLAIMS ANY AND ALL OTHER WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF NONINFRINGEMENT OF THIRD PA +RTY RIGHTS, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. THIS WARRANTY DISCLAIMER AFFECTS YOUR LEGAL RIGHTS, AND YOU MAY ALSO HAVE OTHER RIGHTS WHICH VARY FROM JURISDICTION TO JURISDIC +TION. SOME JURISDICTIONS DO NOT ALLOW EXCLUSIONS OF IMPLIED WARRANTIES OR LIMITATIONS ON HOW LONG AN IMPLIED WARRANTY LASTS, SO THE ABOVE EXCLUSION MAY NOT APPLY TO YOU.</p> + +<br /> + +<p>11. Limitation on Liability. EXCEPT FOR BODILY INJURY OF A PERSON, IN NO EVENT WILL KEMP BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DAMAGES ARISING OUT OF THE SUBJECT MATTER OF THIS AGREEM +ENT, THE PRODUCT OR ANY SERVICES UNDER ANY CONTRACT, NEGLIGENCE, STRICT LIABILITY OR OTHER THEORY, FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES (INCLUDING LOST PROFITS), OR +FOR LOSS OF OR CORRUPTION OF DATA, OR FOR COST OF PROCUREMENT OF SUBSTITUTE GOODS OR TECHNOLOGY, IRRESPECTIVE OF WHETHER KEMP HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. KEMP'S MAXIMU +M LIABILITY FOR DAMAGES SHALL BE LIMITED TO THE LICENSE FEES RECEIVED BY KEMP UNDER THIS LICENSE FOR THE PARTICULAR PRODUCT(S) WHICH CAUSED THE DAMAGES. Some jurisdictions do not allow the exc +lusion or limitation of incidental or consequential damages, so the above limitation or exclusion may not apply to You.</p> + +<br /> + +<p>12. TERMINATION: This Agreement shall terminate automatically if you fail to comply with the terms of this Agreement. No notice shall be required from KEMP to effect such termination. You m +ay also terminate this Agreement at any time by notifying KEMP in writing of termination. Upon any termination of this Agreement, you must uninstall and destroy all copies of the Product.</p> + +<br /> + +<p>13. MISCELLANEOUS:</p> + +<p>13.1 COMPLIANCE WITH EXPORT CONTROL LAWS: End User agrees to comply fully with all relevant export laws and regulations, including but not limited to the U.S. Export Administration Regulati +ons and regulations promulgated by the U.S. Department of the Treasury's Office of Foreign Assets Control ("OFAC"), as amended from time to time (collectively, the "Export Control Laws"). End +User agrees not to export or reexport the Product to any parties located in any E:1countries which are specifically prohibited under U.S. embargoes or sanctions programs maintained by the OFAC + or otherwise prohibited under the Export Control Laws. The current list of E:1 Countries is available at the following link http://www.bis.doc.gov/index.php/forms-documents/doc_view/452-sup +plement-no-1-to-part-740-country-groups</p> + +<br /> + +<p>13.2 U.S. GOVERNMENT RIGHTS: The Product under this Agreement is commercial computer product as that term is described in 48 C.F.R. 252.227-7014(a)(1). If acquired by or on behalf of a civi +lian agency, the U.S. Government acquires this commercial computer product and/or commercial computer product documentation subject to the terms of this Agreement as specified in 48 C.F.R. 12. +212 (Computer Product) and 12.211 (Technical Data) of the Federal Acquisition Regulations ("FAR") and its successors. If acquired by or on behalf of any agency within the Department of Defense + ("DOD"), the U.S. Government acquires this commercial computer product and/or commercial computer product documentation subject to the terms of this Agreement as specified in 48 C.F.R. 227.72 +02-3 of the DOD FAR Supplement ("DFAR") and its successors.</p> + +<br /> + +<p>13.3 GOVERNING LAW: This Agreement will be governed by the laws of the State of New York as they are applied to agreements between New York residents entered into and to be performed entire +ly within New York. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed.</p> + +<br /> + +<p>13.4 ENTIRE AGREEMENT: You agree that this is the entire agreement between you and KEMP, and that it supersedes any prior agreement, whether written or oral, and all other communications be +tween KEMP and you relating to the subject matter of this Agreement. This Agreement may be amended, modified or supplemented only by a writing that is signed by the authorized representatives +of both parties.</p> + +<br /> + +<p>13.5 RESERVATION OF RIGHTS: All rights not expressly granted in this Agreement are reserved by KEMP.</p> + +<br /> + +<p>14. INJUNCTION. Because KEMP would be irreparably damaged if the terms of this License Agreement were not specifically enforced, you agree that KEMP shall be entitled, without bond, other s +ecurity or proof of damages, to appropriate equitable remedies with respect to breaches of this Agreement, in addition to such other remedies as KEMP may otherwise have under applicable laws.< +/p> + +<br /> + +<p>15. INDEMNITY. At KEMP's request, you agree to defend, indemnify and hold harmless KEMP, its subsidiaries, affiliates, contractors, officers, directors, employees, agents, licensors, licens +ees, distributors, developers, content providers, and other users of the Product, from all damages, losses, liabilities, claims and expenses, including attorneys' fees, arising directly or ind +irectly from your acts and omissions to act in using the Product pursuant to the terms of this License Agreement or any breach of this License Agreement by you. KEMP reserves the right, at its + own expense, to assume the exclusive defense and control of any matter otherwise subject to indemnification by you hereunder, and in such event, you shall have no further obligation to provid +e indemnification for such matter. </p> + +<br /> + +<p>16. TERMINATION. Without prejudice to any other rights of KEMP, this License Agreement and your right to use the Product may automatically terminate without notice from KEMP if you fail to +comply with any provision of this Agreement or any terms and conditions associated with the Product. In such event, you must destroy all copies of this Product and all of its component parts.< +/p> + +<br /> + +<p>17. GENERAL PROVISIONS. You may not use, copy, modify, sublicense, rent, sell, assign or transfer the rights or obligations granted to you in this Agreement, except as expressly provided in + this Agreement. Any assignment in violation of this Agreement is void, except that you may transfer your Product to another person provided that person accepts the terms of this License Agree +ment. If any provision of this Agreement is held to be unenforceable for any reason, such provision shall be reformed only to the extent necessary to make it enforceable, and such decision sha +ll not affect the enforceability of: (i) such provision under other circumstances, or (ii) the remaining provisions hereof under all circumstances. KEMP's failure to enforce at any time any of + the provisions of this Agreement shall in no way be construed to be a present or future waiver of such provisions, nor in any way affect the right of any party to enforce each and every such +provision thereafter. The express waiver by KEMP of any provision, condition or requirement of this Agreement shall not constitute a waiver of any future obligation to comply with such provisi +on, condition or requirement. Notwithstanding anything else in this Agreement, no default, delay or failure to perform on the part of KEMP shall be considered a breach of this Agreement if suc +h default, delay or failure to perform is shown to be due to causes beyond the reasonable control of KEMP. This Agreement represents the complete agreement concerning this License Agreement be +tween you and KEMP. </p> + +<br /> +<p>Copyright (c) 2002-2017 KEMP Technologies, Inc.</p> + + +<p style="text-align:center"> +If you do not agree with terms put forth above contact your KEMP Representative for further information and help. +</p> + + + + + + + + + + + + + + + + + Register-BondedInterface + + WARNING: This function is deprecated. Use the following command instead: +Register-NetworkBondedInterface + + + + + Register + BondedInterface + + + + WARNING: This function is deprecated. Use the following command instead: +Register-NetworkBondedInterface + + + + Register-BondedInterface + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Register-BondedInterface + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Register-NetworkBondedInterface + + Enables you to register the address of a bonded interface. + + + + + Register + NetworkBondedInterface + + + + This command waits two minutes to reconnect to the LoadMaster. If the wait time is longer than two minutes, an error message appears. + + + + Register-NetworkBondedInterface + + InterfaceID + + The interface ID that you are registering to the bonded interface. To view the interface ID for each of the interfaces, run the Get-Statistics command. The interface ID is the first number displayed in each interface row. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Register-NetworkBondedInterface + + InterfaceID + + The interface ID that you are registering to the bonded interface. To view the interface ID for each of the interfaces, run the Get-Statistics command. The interface ID is the first number displayed in each interface row. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The interface ID that you are registering to the bonded interface. To view the interface ID for each of the interfaces, run the Get-Statistics command. The interface ID is the first number displayed in each interface row. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Register-NetworkBondedInterface -InterfaceID 0 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Interface=} +Id : 0 +IPAddress : 10.154.11.180/16 +Mtu : 1400 +AdditionalAddresses : @{IPaddress=10.154.11.22/16} +NBondMembers : 1 +BondMembers : @{RealInterface=0} +Mode : 802.3ad +InterfaceType : Bonded +GeoTrafficEnable : yes +DefaultInterface : yes + + + + + + + + + + + + + + + + + Remove-AdcContentRule + + Allows you to remove a specified rule from the LoadMaster. + + + + + Remove + AdcContentRule + + + + Allows you to remove a specified rule from the LoadMaster. + + + + Remove-AdcContentRule + + RuleName + + The name of the content rule to remove. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-AdcContentRule + + RuleName + + The name of the content rule to remove. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + RuleName + + The name of the content rule to remove. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Name + + The name of the rule. This parameter is required. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcContentRule -Name TestRule2 -Confirm + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-AdcHttpCacheException + + Allows you to remove an extension from the 'Do Not Cache' extension list. + + + + + Remove + AdcHttpCacheException + + + + Allows you to remove an extension from the 'Do Not Cache' extension list. + + + + Remove-AdcHttpCacheException + + Extension + + The file extension that should be removed from the "no cache" list. The extension must start with "." For example: ".jpg" This parameter is required. + + String[] + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-AdcHttpCacheException + + Extension + + The file extension that should be removed from the "no cache" list. The extension must start with "." For example: ".jpg" This parameter is required. + + String[] + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Extension + + The file extension that should be removed from the "no cache" list. The extension must start with "." For example: ".jpg" This parameter is required. + + String[] + + String[] + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcHttpCacheException -Extension .mp4 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-AdcHttpCompressionException + + Allows you to remove an extension from the 'Do Not Compress' extension list. + + + + + Remove + AdcHttpCompressionException + + + + Allows you to remove an extension from the 'Do Not Compress' extension list. + + + + Remove-AdcHttpCompressionException + + Extension + + The file extension that should be removed from the "no compress" list. The extension must start with "." For example: ".jpg" This parameter is required. + + String[] + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-AdcHttpCompressionException + + Extension + + The file extension that should be removed from the "no compress" list. The extension must start with "." For example: ".jpg" This parameter is required. + + String[] + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Extension + + The file extension that should be removed from the "no compress" list. The extension must start with "." For example: ".jpg" This parameter is required. + + String[] + + String[] + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcHttpCompressionException -Extension .mp4 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-AdcRealServer + + Allows you to remove a Real Server from a Virtual Service. + + + + + Remove + AdcRealServer + + + + Allows you to remove a Real Server from a Virtual Service. + + + + Remove-AdcRealServer + + VirtualService + + The IP Address of the Virtual Service that connects to this Real Server. + + String + + + VSPort + + The port of the Virtual Service to remove. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to remove. + + String + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The Real Server IP Address that is a backend server for the Virtual Service. + + String + + + RealServerPort + + The port on which the Real Server accepts connections for this service. + + Int32 + + + RSIndex + + The index number of the Real Server to be removed. To retrieve the Real Server index, run the Get-VirtualService command. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-AdcRealServer + + VirtualService + + The IP Address of the Virtual Service that connects to this Real Server. + + String + + + VSPort + + The port of the Virtual Service to remove. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to remove. + + String + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The Real Server IP Address that is a backend server for the Virtual Service. + + String + + + RealServerPort + + The port on which the Real Server accepts connections for this service. + + Int32 + + + RSIndex + + The index number of the Real Server to be removed. To retrieve the Real Server index, run the Get-VirtualService command. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + VirtualService + + The IP Address of the Virtual Service that connects to this Real Server. + + String + + String + + + + + + VSPort + + The port of the Virtual Service to remove. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the Virtual Service to remove. + + String + + String + + + + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + Int32 + + + + + + RealServer + + The Real Server IP Address that is a backend server for the Virtual Service. + + String + + String + + + + + + RealServerPort + + The port on which the Real Server accepts connections for this service. + + Int32 + + Int32 + + + + + + RSIndex + + The index number of the Real Server to be removed. To retrieve the Real Server index, run the Get-VirtualService command. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + The port on which the Virtual Service accepts connections. + + int32 + + int32 + + + + + + Protocol + + The protocol for communication. Accepts either TCP or UDP. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcRealServer -Force -Port 80 -Protocol tcp -RealServer 10.11.0.24 -RealServerPort 80 -VirtualService 10.11.0.199 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-AdcRealServerRule + + Allows you to remove a rule from the Real Server. + + + + + Remove + AdcRealServerRule + + + + Allows you to remove a rule from the Real Server. + + + + Remove-AdcRealServerRule + + VirtualService + + The IP Address of the Virtual Service this rule should be applied to. + + String + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The IP address of the relevant Real Server. + + String + + + RSPort + + The port number of the relevant Real Server. + + Int32 + + + RSIndex + + The index number of the Real Server or SubVS to remove the rule from. To retrieve the Real Server index, run the Get-VirtualService command. + + Int32 + + + RuleName + + The name of the rule that should be applied to the Virtual Service. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-AdcRealServerRule + + VirtualService + + The IP Address of the Virtual Service this rule should be applied to. + + String + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The IP address of the relevant Real Server. + + String + + + RSPort + + The port number of the relevant Real Server. + + Int32 + + + RSIndex + + The index number of the Real Server or SubVS to remove the rule from. To retrieve the Real Server index, run the Get-VirtualService command. + + Int32 + + + RuleName + + The name of the rule that should be applied to the Virtual Service. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + VirtualService + + The IP Address of the Virtual Service this rule should be applied to. + + String + + String + + + + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + String + + + + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + Int32 + + + + + + RealServer + + The IP address of the relevant Real Server. + + String + + String + + + + + + RSPort + + The port number of the relevant Real Server. + + Int32 + + Int32 + + + + + + RSIndex + + The index number of the Real Server or SubVS to remove the rule from. To retrieve the Real Server index, run the Get-VirtualService command. + + Int32 + + Int32 + + + + + + RuleName + + The name of the rule that should be applied to the Virtual Service. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + The port on which this Virtual Service accepts connections. + + int32 + + int32 + + + + + + Protocol + + The protocol for communication. Accepts either TCP or UDP. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcRealServerRule -Port 80 -Protocol tcp -RealServer 10.11.0.24 -RSPort 80 -RuleName TestRule1 -VirtualService 10.11.0.200 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-AdcSubVirtualService + + Remove a SubVS. + + + + + Remove + AdcSubVirtualService + + + + This command removes the specified SubVS. + + + + Remove-AdcSubVirtualService + + SubVSIndex + + The index number of the SubVS to delete. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-AdcSubVirtualService + + SubVSIndex + + The index number of the SubVS to delete. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + SubVSIndex + + The index number of the SubVS to delete. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcSubVirtualService -SubVSIndex 2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-AdcVirtualServerRule + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcVirtualServiceRule + + + + + Remove + AdcVirtualServerRule + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcVirtualServiceRule + + + + Remove-AdcVirtualServerRule + + VirtualService + + Specifies the IP Address of the Virtual Service that this rule should be applied to. + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the Virtual Service index, run the Get-VirtualService command. + + Int32 + + + RuleType + + Specifies if the rule is a pre-processing rule, a response rule, or a request rule. Valid options are "pre", "response", and "request". + + String + + + RuleName + + The name of the rule that should be set on this Virtual Service. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-AdcVirtualServerRule + + VirtualService + + Specifies the IP Address of the Virtual Service that this rule should be applied to. + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the Virtual Service index, run the Get-VirtualService command. + + Int32 + + + RuleType + + Specifies if the rule is a pre-processing rule, a response rule, or a request rule. Valid options are "pre", "response", and "request". + + String + + + RuleName + + The name of the rule that should be set on this Virtual Service. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + VirtualService + + Specifies the IP Address of the Virtual Service that this rule should be applied to. + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + The index number of the relevant Virtual Service or SubVS. To retrieve the Virtual Service index, run the Get-VirtualService command. + + Int32 + + Int32 + + + + + + RuleType + + Specifies if the rule is a pre-processing rule, a response rule, or a request rule. Valid options are "pre", "response", and "request". + + String + + String + + + + + + RuleName + + The name of the rule that should be set on this Virtual Service. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + Specifies the port on which the Virtual Service accepts connections. + + int32 + + int32 + + + + + + Protocol + + Specifies the communication protocol. Valid options are TCP or UDP. + + string + + string + + + + + + RealServer + + Specifies the Real Server that serves this Virtual Service. + + string + + string + + + + + + RSPort + + Specifies the port on which the Real Server accepts connections for this Virtual Service. + + int32 + + int32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcVirtualServerRule -RuleName ExampleRule -RuleType pre -VSIndex 2 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Remove-AdcVirtualService + + Deletes the specified Virtual Service. + + + + + Remove + AdcVirtualService + + + + Deletes the specified Virtual Service. + + + + Remove-AdcVirtualService + + VirtualService + + The IP Address for this Virtual Service. + + String + + + VSPort + + The port of the Virtual Service to remove. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to remove. + + String + + + VSIndex + + The index (ID) number for this Virtual Service. This can be retrieved by running the Get-AdcVirtualService command, or by checking the Id number on the Virtual Service modify screen. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-AdcVirtualService + + VirtualService + + The IP Address for this Virtual Service. + + String + + + VSPort + + The port of the Virtual Service to remove. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to remove. + + String + + + VSIndex + + The index (ID) number for this Virtual Service. This can be retrieved by running the Get-AdcVirtualService command, or by checking the Id number on the Virtual Service modify screen. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-AdcVirtualService + + VirtualService + + The IP Address for this Virtual Service. + + String + + + VSPort + + The port of the Virtual Service to remove. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to remove. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-AdcVirtualService + + VSIndex + + The index (ID) number for this Virtual Service. This can be retrieved by running the Get-AdcVirtualService command, or by checking the Id number on the Virtual Service modify screen. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + VirtualService + + The IP Address for this Virtual Service. + + String + + String + + + + + + VSPort + + The port of the Virtual Service to remove. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the Virtual Service to remove. + + String + + String + + + + + + VSIndex + + The index (ID) number for this Virtual Service. This can be retrieved by running the Get-AdcVirtualService command, or by checking the Id number on the Virtual Service modify screen. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + Specifies the port on which this Virtual Service accepts connections. + + int32 + + int32 + + + + + + Protocol + + Specifies the communication protocol. Valid options are TCP or UDP. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcVirtualService -Port 80 -Protocol tcp -VirtualService 10.11.0.234 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-AdcVirtualServiceResponseBodyRule + + + + + + + Remove + AdcVirtualServiceResponseBodyRule + + + + + + + + Remove-AdcVirtualServiceResponseBodyRule + + VSIndex + + + + Int32 + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-AdcVirtualServiceResponseBodyRule + + VSIndex + + + + Int32 + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + RuleName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-AdcVirtualServiceRule + + Remove a content rule that is assigned to a Virtual Service. + + + + + Remove + AdcVirtualServiceRule + + + + This command removes the specified rule from the specified Virtual Service. + + + + Remove-AdcVirtualServiceRule + + VirtualService + + The address of the Virtual Service to remove the rule from. + + String + + + VSPort + + The port number of the Virtual Service to remove the rule from. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to remove the rule from. + + String + + + VSIndex + + The index number of the Virtual Service to remove the rule from. + + Int32 + + + RuleType + + The type of rule to be removed: +pre +response +request + + String + + + RuleName + + The name of the rule to be removed. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-AdcVirtualServiceRule + + VirtualService + + The address of the Virtual Service to remove the rule from. + + String + + + VSPort + + The port number of the Virtual Service to remove the rule from. + + Int32 + + + VSProtocol + + The protocol of the Virtual Service to remove the rule from. + + String + + + VSIndex + + The index number of the Virtual Service to remove the rule from. + + Int32 + + + RuleType + + The type of rule to be removed: +pre +response +request + + String + + + RuleName + + The name of the rule to be removed. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + VirtualService + + The address of the Virtual Service to remove the rule from. + + String + + String + + + + + + VSPort + + The port number of the Virtual Service to remove the rule from. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the Virtual Service to remove the rule from. + + String + + String + + + + + + VSIndex + + The index number of the Virtual Service to remove the rule from. + + Int32 + + Int32 + + + + + + RuleType + + The type of rule to be removed: +pre +response +request + + String + + String + + + + + + RuleName + + The name of the rule to be removed. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcVirtualServiceRule -RuleName ExampleRule -RuleType pre -VirtualService 10.154.11.181 -VSPort 443 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-AdcVsWafRule + + Remove a Web Application Firewall (WAF) rule from a Virtual Service. + + + + + Remove + AdcVsWafRule + + + + This command removes the specified WAF rule from the Virtual Service. + + + + Remove-AdcVsWafRule + + VS + + The address of the Virtual Service. + + String + + + VSPort + + The port of the Virtual Service. + + String + + + VSProtocol + + The protocol of the Virtual Service. + + String + + + Rule + + The <RuleName> must be preceded with the relevant letter or word and a forward slash. The letter/word used depends on the type of rule being removed: +C or Custom +Z or ApplicationGeneric +A or ApplicationSpecific +G or Generic + This is case sensitive. The letter/word needs to be in in the correct case for the command to work. + Multiple rules can be removed in the same command by separating them with a space (or %20). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-AdcVsWafRule + + VS + + The address of the Virtual Service. + + String + + + VSPort + + The port of the Virtual Service. + + String + + + VSProtocol + + The protocol of the Virtual Service. + + String + + + Rule + + The <RuleName> must be preceded with the relevant letter or word and a forward slash. The letter/word used depends on the type of rule being removed: +C or Custom +Z or ApplicationGeneric +A or ApplicationSpecific +G or Generic + This is case sensitive. The letter/word needs to be in in the correct case for the command to work. + Multiple rules can be removed in the same command by separating them with a space (or %20). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VS + + The address of the Virtual Service. + + String + + String + + + + + + VSPort + + The port of the Virtual Service. + + String + + String + + + + + + VSProtocol + + The protocol of the Virtual Service. + + String + + String + + + + + + Rule + + The <RuleName> must be preceded with the relevant letter or word and a forward slash. The letter/word used depends on the type of rule being removed: +C or Custom +Z or ApplicationGeneric +A or ApplicationSpecific +G or Generic + This is case sensitive. The letter/word needs to be in in the correct case for the command to work. + Multiple rules can be removed in the same command by separating them with a space (or %20). + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcVsWafRule -Rule G/ip_reputation -VS 10.35.47.16 -VSPort 80 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-BondedInterface + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkBondedInterface + + + + + Remove + BondedInterface + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkBondedInterface + + + + Remove-BondedInterface + + InterfaceID + + The ID of the interface that has the bond. + + Int16 + + + BondID + + The ID of the bonded interface to be removed. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-BondedInterface + + InterfaceID + + The ID of the interface that has the bond. + + Int16 + + + BondID + + The ID of the bonded interface to be removed. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The ID of the interface that has the bond. + + Int16 + + Int16 + + + + + + BondID + + The ID of the bonded interface to be removed. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-BondedInterface –BondID <BondID> –InterfaceID <InterfaceID> + + + + + Example Output: + + + + + + + + + + + + + + + + + Remove-Certificate + + WARNING: This function is deprecated. Use the following command instead: +Remove-TlsCertificate + + + + + Remove + Certificate + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-TlsCertificate + + + + Remove-Certificate + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-Certificate + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-ClusterNode + + Deletes a node from a cluster. + + + + + Remove + ClusterNode + + + + Deletes a node from a cluster. + + + + Remove-ClusterNode + + NodeId + + The ID number of the node to be deleted. The ID of the node can be found in the ID column in the Cluster Control screen in the LoadMaster WUI. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-ClusterNode + + NodeId + + The ID number of the node to be deleted. The ID of the node can be found in the ID column in the Cluster Control screen in the LoadMaster WUI. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + NodeId + + The ID number of the node to be deleted. The ID of the node can be found in the ID column in the Cluster Control screen in the LoadMaster WUI. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-ClusterNode -NodeId 2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + RemoveCountry + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoFQDNSiteCountry + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoFQDNSiteCountry + + + + RemoveCountry + + FQDN + + + + String + + + SiteAddress + + + + String + + + CountryCode + + + + String + + + IsContinent + + + + String + + + CustomLocation + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + RemoveCountry + + FQDN + + + + String + + + SiteAddress + + + + String + + + CountryCode + + + + String + + + IsContinent + + + + String + + + CustomLocation + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + + + String + + String + + + + + + SiteAddress + + + + String + + String + + + + + + CountryCode + + + + String + + String + + + + + + IsContinent + + + + String + + String + + + + + + CustomLocation + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-GeoCluster + + Allows you to delete an existing GEO cluster. + + + + + Remove + GeoCluster + + + + Allows you to delete an existing GEO cluster. + + + + Remove-GeoCluster + + ClusterIp + + The IP address of the cluster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoCluster + + ClusterIp + + The IP address of the cluster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + The IP address of the cluster. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoCluster –IP 10.34.52.56 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-GeoCustomLocation + + Removes an existing custom location. + + + + + Remove + GeoCustomLocation + + + + Removes an existing custom location. + + + + Remove-GeoCustomLocation + + Location + + The name of the location to remove. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoCustomLocation + + Location + + The name of the location to remove. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Location + + The name of the location to remove. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + clName + + Specify the name of the custom location to be removed. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoCustomLocation -Location Example + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-GeoDNSSECKeySigningKey + + Delete the Key Signing Key (KSK) files. + + + + + Remove + GeoDNSSECKeySigningKey + + + + Remove the KSK files. + + + + Remove-GeoDNSSECKeySigningKey + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoDNSSECKeySigningKey + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoDNSSECKeySigningKey + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-GeoFQDN + + Allows you to delete an existing GEO FQDN. + + + + + Remove + GeoFQDN + + + + Allows you to delete an existing GEO FQDN. + + + + Remove-GeoFQDN + + FQDN + + The name of the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoFQDN + + FQDN + + The name of the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoFQDN –FQDN ExampleFQDN.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-GeoFQDNSiteAddress + + Allows you to delete an IP address from an FQDN. + + + + + Remove + GeoFQDNSiteAddress + + + + Allows you to delete an IP address from an FQDN. + + + + Remove-GeoFQDNSiteAddress + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + IP address to be deleted from the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoFQDNSiteAddress + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + IP address to be deleted from the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + SiteAddress + + IP address to be deleted from the FQDN. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoFQDNSiteAddress –FQDN Example.com -IP 10.134.33.3 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Deleted site 10.134.33.3 from FQDN Example.com; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Deleted site 10.134.33.3 from FQDN Example.com + + + + + + + + + + + + + + + + + Remove-GeoFQDNSiteCountry + + Remove a country assignment. + + + + + Remove + GeoFQDNSiteCountry + + + + Allows you to remove a country assignment from a mapped IP address. + + + + Remove-GeoFQDNSiteCountry + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + The address of the map to be modified. + + String + + + CountryCode + + Two-letter country code for the country to be unassigned. +To specify everywhere as the country, type ALL as the country code and set the IsContinent parameter to yes. + + String + + + IsContinent + + Some country codes and continent codes are the same, for example AF could mean Africa or Afghanistan. You must specify in this parameter if the code is for a country or continent. +yes – code is for a continent +no – code is for a country + + String + + + CustomLocation + + The name of an existing custom location. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoFQDNSiteCountry + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + The address of the map to be modified. + + String + + + CountryCode + + Two-letter country code for the country to be unassigned. +To specify everywhere as the country, type ALL as the country code and set the IsContinent parameter to yes. + + String + + + IsContinent + + Some country codes and continent codes are the same, for example AF could mean Africa or Afghanistan. You must specify in this parameter if the code is for a country or continent. +yes – code is for a continent +no – code is for a country + + String + + + CustomLocation + + The name of an existing custom location. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + SiteAddress + + The address of the map to be modified. + + String + + String + + + + + + CountryCode + + Two-letter country code for the country to be unassigned. +To specify everywhere as the country, type ALL as the country code and set the IsContinent parameter to yes. + + String + + String + + + + + + IsContinent + + Some country codes and continent codes are the same, for example AF could mean Africa or Afghanistan. You must specify in this parameter if the code is for a country or continent. +yes – code is for a continent +no – code is for a country + + String + + String + + + + + + CustomLocation + + The name of an existing custom location. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoFQDNSiteCountry -FQDN Example.com -SiteAddress 10.134.33.2 -CountryCode IE -IsContinent no + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Country/Continent updated.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Country/Continent updated. + + + + + + + + + + + + + + + + + Remove-GeoIpRange + + Allows you to delete an entry from the IP range selection criteria list. + + + + + Remove + GeoIpRange + + + + Allows you to delete an entry from the IP range selection criteria list. + + + + Remove-GeoIpRange + + IP + + The IP address of the entry to be deleted. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoIpRange + + IP + + The IP address of the entry to be deleted. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + The IP address of the entry to be deleted. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoIPRange –IP 10.134.33.2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. IP range deleted; Data=} +Return Code..: 200 +Response.....: Command successfully executed. IP range deleted + + + + + + + + + + + + + + + + + Remove-GeoIPRangeCoordinates + + Allows you to delete the location assigned to an IP address. + + + + + Remove + GeoIPRangeCoordinates + + + + Allows you to delete the location assigned to an IP address. + + + + Remove-GeoIPRangeCoordinates + + IP + + The IP address to be modified. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoIPRangeCoordinates + + IP + + The IP address to be modified. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + The IP address to be modified. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoIPRangeCoordinates –IP 10.154.11.55 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. IP range location updated; Data=} +Return Code..: 200 +Response.....: Command successfully executed. IP range location updated + + + + + + + + + + + + + + + + + Remove-GeoIPRangeCountry + + Allows you to unassign a country from an IP address. + + + + + Remove + GeoIPRangeCountry + + + + Allows you to unassign a country from an IP address. + + + + Remove-GeoIPRangeCountry + + IP + + IP address to remove the country from. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoIPRangeCountry + + IP + + IP address to remove the country from. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + IP address to remove the country from. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoIPRangeCountry -IP 10.154.11.55 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. IP range country updated; Data=} +Return Code..: 200 +Response.....: Command successfully executed. IP range country updated + + + + + + + + + + + + + + + + + Remove-GeoIPRangeCustomLocation + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIPRangeCountry + + + + + Remove + GeoIPRangeCustomLocation + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIPRangeCountry + + + + Remove-GeoIPRangeCustomLocation + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoIPRangeCustomLocation + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-GeoIPWhitelist + + Remove an IP address or network from the whitelist. + + + + + Remove + GeoIPWhitelist + + + + Run this command to remove the specified address from the whitelist. The whitelist entries override the blacklist. + + + + Remove-GeoIPWhitelist + + Addr + + Specify the address to be removed from the user-defined whitelist. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GeoIPWhitelist + + Addr + + Specify the address to be removed from the user-defined whitelist. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Addr + + Specify the address to be removed from the user-defined whitelist. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoIPWhitelist -Addr 10.145.33.22 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. 10.145.33.22 was successfully removed from GEO ACL white list.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. 10.145.33.22 was successfully removed from GEO ACL white list. + + + + + + + + + + + + + + + + + Remove-GlobalPacketFilterACL + + Removes an address from the global black or white list. + + + + + Remove + GlobalPacketFilterACL + + + + Removes a host or network IP address from the global black or white access control list. Note that black and white lists are only enabled when packet filtering is enabled. + + + + Remove-GlobalPacketFilterACL + + Type + + Specifies the access control list type: "black" or "white". + + String + + + Address + + Specifies a host or network IP address to remove from the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-GlobalPacketFilterACL + + Type + + Specifies the access control list type: "black" or "white". + + String + + + Address + + Specifies a host or network IP address to remove from the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Type + + Specifies the access control list type: "black" or "white". + + String + + String + + + + + + Address + + Specifies a host or network IP address to remove from the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GlobalPacketFilterACL -Address 10.154.11.197 -Type black + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-HostsEntry + + Deletes a host IP address and host FQDN. + + + + + Remove + HostsEntry + + + + Deletes a host IP address and host FQDN. + + + + Remove-HostsEntry + + HostIP + + Specify the IP address for the entry. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-HostsEntry + + HostIP + + Specify the IP address for the entry. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + HostIP + + Specify the IP address for the entry. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-HostsEntry -HostIP 10.154.11.180 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-InterfaceAddress + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkInterfaceAdditionalAddress + + + + + Remove + InterfaceAddress + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkInterfaceAdditionalAddress + + + + Remove-InterfaceAddress + + InterfaceID + + + + Int16 + + + Address + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-InterfaceAddress + + InterfaceID + + + + Int16 + + + Address + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + Address + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-IntermediateCertificate + + WARNING: This function is deprecated. Use the following command instead: +Remove-TlsIntermediateCertificate + + + + + Remove + IntermediateCertificate + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-TlsIntermediateCertificate + + + + Remove-IntermediateCertificate + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-IntermediateCertificate + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RemoveIPCountry + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIPRangeCountry + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIPRangeCountry + + + + RemoveIPCountry + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + RemoveIPCountry + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RemoveIPCountryCustom + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIPRangeCountry + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-GeoIPRangeCountry + + + + RemoveIPCountryCustom + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + RemoveIPCountryCustom + + IP + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-LdapEndpoint + + Delete an existing LDAP endpoint. + + + + + Remove + LdapEndpoint + + + + These LDAP endpoints may be used in three different areas: +• Health checks +• SSO domains +• WUI authentication + + + + Remove-LdapEndpoint + + Name + + The name of the LDAP endpoint to be deleted. + + String + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-LdapEndpoint + + Name + + The name of the LDAP endpoint to be deleted. + + String + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the LDAP endpoint to be deleted. + + String + + String + + + + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + String + + + + + + LBPort + + The port of the load balancer. + + Int32 + + Int32 + + + + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + It is not possible to delete an LDAP endpoint that is currently in use. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-LdapEndpoint -Name ExampleLDAPEndpoint + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-LmAddon + + Deletes an Add-on pack + + + + + Remove + LmAddon + + + + Add-on packs can be deleted by running the Remove-LmAddon command. + + + + Remove-LmAddon + + Name + + The name of the add-on pack. The names of existing add-on packs can be seen by running the ListAddons command. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-LmAddon + + Name + + The name of the add-on pack. The names of existing add-on packs can be seen by running the ListAddons command. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the add-on pack. The names of existing add-on packs can be seen by running the ListAddons command. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-LmAddon -Name Akamai + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-LmIPConnectionLimit + + Allows you to delete an IP address limiter. + + + + + Remove + LmIPConnectionLimit + + + + Allows you to delete an IP address limiter. + + + + Remove-LmIPConnectionLimit + + L7addr + + The IP address to be deleted. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-LmIPConnectionLimit + + L7addr + + The IP address to be deleted. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + L7addr + + The IP address to be deleted. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-LmIPConnectionLimit -L7addr 10.10.10.10 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-LmVpnConnection + + Deletes an existing Virtual Private Network (VPN) connection. + + + + + Remove + LmVpnConnection + + + + Removes the specified VPN connection. + + + + Remove-LmVpnConnection + + Name + + The name of the VPN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-LmVpnConnection + + Name + + The name of the VPN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-LmVpnConnection -Name ExampleVPNConnection + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-NetworkBondedInterface + + Remove a bonded interface. + + + + + Remove + NetworkBondedInterface + + + + Unlink the specified interface from the bonded interface. + + + + Remove-NetworkBondedInterface + + InterfaceID + + The ID of the interface that has the bond. + + Int16 + + + BondID + + The ID of the interface to be unlinked. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-NetworkBondedInterface + + InterfaceID + + The ID of the interface that has the bond. + + Int16 + + + BondID + + The ID of the interface to be unlinked. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The ID of the interface that has the bond. + + Int16 + + Int16 + + + + + + BondID + + The ID of the interface to be unlinked. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-NetworkBondedInterface –InterfaceID 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Interface=} +Id : 1 +IPAddress : +NBondMembers : 1 +BondMembers : @{RealInterface=1} +Mode : 802.3ad +InterfaceType : Bonded +GeoTrafficEnable : no +DefaultInterface : no + + + + + + + + + + + + + + + + + Remove-NetworkInterfaceAdditionalAddress + + Remove an additional address from an interface. + + + + + Remove + NetworkInterfaceAdditionalAddress + + + + Run this command to remove an existing additional address from an interface. + + + + Remove-NetworkInterfaceAdditionalAddress + + InterfaceID + + The ID of the interface to remove the additional address from. + + Int16 + + + Address + + The address to be removed, in the format <IPAddress>/<CIDR>. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-NetworkInterfaceAdditionalAddress + + InterfaceID + + The ID of the interface to remove the additional address from. + + Int16 + + + Address + + The address to be removed, in the format <IPAddress>/<CIDR>. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + InterfaceID + + The ID of the interface to remove the additional address from. + + Int16 + + Int16 + + + + + + Address + + The address to be removed, in the format <IPAddress>/<CIDR>. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-NetworkInterfaceAdditionalAddress -Address 10.154.11.22/16 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-NetworkRoute + + Removes a route. + + + + + Remove + NetworkRoute + + + + Removes a route. + + + + Remove-NetworkRoute + + Destination + + The destination network that should be removed from the routing table. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-NetworkRoute + + Destination + + The destination network that should be removed from the routing table. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Destination + + The destination network that should be removed from the routing table. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-NetworkRoute -Destination 10.154.11.33 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Route=} +Destination : 10.154.11.24/16 +Gateway : 10.154.11.44 + + + + + + + + + + + + + + + + + Remove-NetworkVLAN + + Allows you to remove a Virtual LAN. + + + + + Remove + NetworkVLAN + + + + Allows you to remove a Virtual LAN. + + + + Remove-NetworkVLAN + + InterfaceID + + The ID of the interface that should be removed from the VLAN. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-NetworkVLAN + + InterfaceID + + The ID of the interface that should be removed from the VLAN. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The ID of the interface that should be removed from the VLAN. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-NetworkVLAN -InterfaceID 2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: + + + + + + + + + + + + + + + + + Remove-NetworkVxLAN + + Deletes the specified VXLAN. + + + + + Remove + NetworkVxLAN + + + + Deletes the specified VXLAN. + + + + Remove-NetworkVxLAN + + InterfaceID + + The ID of the interface. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-NetworkVxLAN + + InterfaceID + + The ID of the interface. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The ID of the interface. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-NetworkVxLAN -InterfaceID 2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-NoCacheExtension + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcHttpCacheException + + + + + Remove + NoCacheExtension + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcHttpCacheException + + + + Remove-NoCacheExtension + + Extension + + + + String[] + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-NoCacheExtension + + Extension + + + + String[] + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Extension + + + + String[] + + String[] + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-NoCompressExtension + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcHttpCompressionException + + + + + Remove + NoCompressExtension + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcHttpCompressionException + + + + Remove-NoCompressExtension + + Extension + + + + String[] + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-NoCompressExtension + + Extension + + + + String[] + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Extension + + + + String[] + + String[] + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-RealServer + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcRealServer + + + + + Remove + RealServer + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcRealServer + + + + Remove-RealServer + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RealServerPort + + + + Int32 + + + RSIndex + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-RealServer + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RealServerPort + + + + Int32 + + + RSIndex + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + RealServer + + + + String + + String + + + + + + RealServerPort + + + + Int32 + + Int32 + + + + + + RSIndex + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-RealServerRule + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcRealServerRule + + + + + Remove + RealServerRule + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcRealServerRule + + + + Remove-RealServerRule + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RSPort + + + + Int32 + + + RSIndex + + + + Int32 + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-RealServerRule + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RSPort + + + + Int32 + + + RSIndex + + + + Int32 + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + RealServer + + + + String + + String + + + + + + RSPort + + + + Int32 + + Int32 + + + + + + RSIndex + + + + Int32 + + Int32 + + + + + + RuleName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-Route + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkRoute + + + + + Remove + Route + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkRoute + + + + Remove-Route + + Destination + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-Route + + Destination + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Destination + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-Rule + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcContentRule + + + + + Remove + Rule + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcContentRule + + + + Remove-Rule + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-Rule + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + RuleName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-SdnController + + Deletes an SDN controller from the LoadMaster. + + + + + Remove + SdnController + + + + Deletes an SDN controller from the LoadMaster. + + + + Remove-SdnController + + Clid + + The unique ID of the cluster that the SDN controller is a member of. + + Int32 + + + Cid + + The ID number of the SDN controller. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-SdnController + + Clid + + The unique ID of the cluster that the SDN controller is a member of. + + Int32 + + + Cid + + The ID number of the SDN controller. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Clid + + The unique ID of the cluster that the SDN controller is a member of. + + Int32 + + Int32 + + + + + + Cid + + The ID number of the SDN controller. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Either the Cluster ID (Clid) or the Controller ID (Cid) must be specified when running this command. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-SdnController -Clid 1 -Cid 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-SecUser + + Allows you to delete a local user. + + + + + Remove + SecUser + + + + Allows you to delete a local user. + + + + Remove-SecUser + + User + + Username of the relevant user. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-SecUser + + User + + Username of the relevant user. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + User + + Username of the relevant user. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-SecUser -User ExampleUser + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-SecUserCertificate + + Delete an existing user certificate. + + + + + Remove + SecUserCertificate + + + + Delete an existing user certificate. + + + + Remove-SecUserCertificate + + User + + The username of the user to delete the certificate for. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-SecUserCertificate + + User + + The username of the user to delete the certificate for. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + User + + The username of the user to delete the certificate for. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-SecUserCertificate -User Example + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-SSODomain + + Deletes the specified SSO domain. + + + + + Remove + SSODomain + + + + Deletes the specified SSO domain. + + + + Remove-SSODomain + + Domain + + The domain to be removed from the SSO Domain list. This parameter is required. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-SSODomain + + Domain + + The domain to be removed from the SSO Domain list. This parameter is required. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + Domain + + The domain to be removed from the SSO Domain list. This parameter is required. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Switch to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-SSODomain -Domain example3.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed (Domain "example3.com" deleted); Data=} +Return Code..: 200 +Response.....: Command successfully executed (Domain "example3.com" deleted) + + + + + + + + + + + + + + + + + Remove-Template + + Allows you to remove a template from the LoadMaster. + + + + + Remove + Template + + + + Allows you to remove a template from the LoadMaster. + + + + Remove-Template + + Name + + The name of the template as it appears in the Name column in the LoadMaster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-Template + + Name + + The name of the template as it appears in the Name column in the LoadMaster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the template as it appears in the Name column in the LoadMaster. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-Template -Name "Exchange 2013 IMAP" + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-TlsCertificate + + Allows you to remove a certificate from the LoadMaster. + + + + + Remove + TlsCertificate + + + + Allows you to remove a certificate from the LoadMaster. + + + + Remove-TlsCertificate + + Name + + The name of the certificate to be removed from the LoadMaster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Remove-TlsCertificate + + Name + + The name of the certificate to be removed from the LoadMaster. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + Name + + The name of the certificate to be removed from the LoadMaster. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Provides a method to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + It is not possible to delete a certificate which is assigned to a Virtual Service. Un-assign the certificate from any Virtual Services before deleting. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-TlsCertificate -Name testcert + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-TlsCipherSet + + Delete a custom cipher set. + + + + + Remove + TlsCipherSet + + + + Deletes an existing custom cipher set. A custom cipher set cannot be deleted if it is assigned to any Virtual Services. + + + + Remove-TlsCipherSet + + Name + + The name of the cipher set. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-TlsCipherSet + + Name + + The name of the cipher set. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the cipher set. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-TlsCipherSet -Name ExampleCipherSet + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-TlsIntermediateCertificate + + Allows you to remove a certificate from the LoadMaster. + + + + + Remove + TlsIntermediateCertificate + + + + Allows you to remove a certificate from the LoadMaster. + + + + Remove-TlsIntermediateCertificate + + Name + + The name of the intermediate certificate to remove. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + A switch which confirms that the action should be carried out. + + SwitchParameter + + + + Remove-TlsIntermediateCertificate + + Name + + The name of the intermediate certificate to remove. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + A switch which confirms that the action should be carried out. + + SwitchParameter + + + + + + Name + + The name of the intermediate certificate to remove. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + A switch which confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-TlsIntermediateCertificate -Name testcert + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-VirtualServerRule + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcVirtualServiceRule + + + + + Remove + VirtualServerRule + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcVirtualServiceRule + + + + Remove-VirtualServerRule + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RuleType + + + + String + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-VirtualServerRule + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RuleType + + + + String + + + RuleName + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + RuleType + + + + String + + String + + + + + + RuleName + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-VirtualService + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcVirtualService + + + + + Remove + VirtualService + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcVirtualService + + + + Remove-VirtualService + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-VirtualService + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-VirtualService + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Remove-VirtualService + + VSIndex + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Force + + + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-VLan + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkVLAN + + + + + Remove + VLan + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkVLAN + + + + Remove-VLan + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-VLan + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove-VSPacketFilterACL + + Removes an address from the black or white list for a Virtual Service. + + + + + Remove + VSPacketFilterACL + + + + Removes a host or network IP address from the black or white access control list for a specific Virtual Service. Note that black and white lists are only enabled when packet filtering is enabled. + + + + Remove-VSPacketFilterACL + + VirtualService + + Specifies the Virtual Service IP address. + + String + + + VSPort + + Specifies the Virtual Service port number. + + Int32 + + + VSProtocol + + Specifies the Virtual Service protocol. + + String + + + Type + + Specify the type of list: + - black: blocked addresses + - white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + String + + + AclAddress + + Specifies a host or network IP address to remove from the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-VSPacketFilterACL + + VirtualService + + Specifies the Virtual Service IP address. + + String + + + VSPort + + Specifies the Virtual Service port number. + + Int32 + + + VSProtocol + + Specifies the Virtual Service protocol. + + String + + + Type + + Specify the type of list: + - black: blocked addresses + - white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + String + + + AclAddress + + Specifies a host or network IP address to remove from the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + Specifies the Virtual Service IP address. + + String + + String + + + + + + VSPort + + Specifies the Virtual Service port number. + + Int32 + + Int32 + + + + + + VSProtocol + + Specifies the Virtual Service protocol. + + String + + String + + + + + + Type + + Specify the type of list: + - black: blocked addresses + - white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + String + + String + + + + + + AclAddress + + Specifies a host or network IP address to remove from the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-VSPacketFilterACL -AclAddress 10.134.33.2 -Type black -VirtualService 10.35.47.16 -VSPort 80 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-VxLan + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkVxLAN + + + + + Remove + VxLan + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-NetworkVxLAN + + + + Remove-VxLan + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Remove-VxLan + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request-LicenseOffline + + Initially license the LoadMaster using the offline licensing method. + + + + + Request + LicenseOffline + + + + A BLOB is needed to license the LoadMaster using the offline method. + + + + Request-LicenseOffline + + Path + + The BLOB is emailed to you when requested. Each time a license is updated a new BLOB is needed. The BLOB is the body of text in the email from the word begin to the word end. The BLOB must be copied and pasted into a text file. If the BLOB file is in the current directory, you only need to specify the filename. If it is in a different directory, please specify the path in addition to the filename. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The BLOB is emailed to you when requested. Each time a license is updated a new BLOB is needed. The BLOB is the body of text in the email from the word begin to the word end. The BLOB must be copied and pasted into a text file. If the BLOB file is in the current directory, you only need to specify the filename. If it is in a different directory, please specify the path in addition to the filename. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Certificate-based authentication cannot be used to run this command because this command is used before the LoadMaster is licensed. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Request-LicenseOffline -Path c:\t\test.txt + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Request-LicenseOnline + + License the LoadMaster using the online method. + + + + + Request + LicenseOnline + + + + Cause the LoadMaster to query the KEMP licensing system for a license. + + + + Request-LicenseOnline + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + KempId + + The KEMP ID is the email address which was used when registering for a KEMP ID. + + String + + + Password + + The password of the KEMP ID account. + + String + + + OrderId + + The Orderid parameter is only needed for Virtual LoadMasters. The Order ID is provided by KEMP after a license is purchased. + + String + + + LicenseTypeId + + The ID of the license type to be applied. To retrieve a list of available IDs, run the Get-LicenseType command. + + String + + + http_proxy + + Specify the HTTP(S) proxy server and port the LoadMaster will use to access the internet. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + KempId + + The KEMP ID is the email address which was used when registering for a KEMP ID. + + String + + String + + + + + + Password + + The password of the KEMP ID account. + + String + + String + + + + + + OrderId + + The Orderid parameter is only needed for Virtual LoadMasters. The Order ID is provided by KEMP after a license is purchased. + + String + + String + + + + + + LicenseTypeId + + The ID of the license type to be applied. To retrieve a list of available IDs, run the Get-LicenseType command. + + String + + String + + + + + + http_proxy + + Specify the HTTP(S) proxy server and port the LoadMaster will use to access the internet. + + String + + String + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Certificate-based authentication cannot be used to run this command because this command is used before the LoadMaster is licensed. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Request-LicenseOnline -KempId jbloggs@kemptechnologies.com -Password examplepassword -LoadBalancer 10.154.11.60 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Request-LicenseOnPremise + + Use Local Activation to license the LoadMaster via KEMP 360 Central. + + + + + Request + LicenseOnPremise + + + + Specify the KEMP 360 Central details in the parameters in order to license the LoadMaster using Local Activation. + + + + Request-LicenseOnPremise + + aslipaddr + + The IP address of the KEMP360 Central machine to be used for activation. + + String + + + aslname + + The hostname of the KEMP360 Central machine to be used for activation. + + String + + + aslport + + The port to contact KEMP360 Central on. + + Int32 + + + LicenseTypeId + + Specify the LicenseTypeId of the license to activate. To retrieve a list of license types and IDs, run the Get-AslLicenseType command. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Request-LicenseOnPremise + + aslipaddr + + The IP address of the KEMP360 Central machine to be used for activation. + + String + + + aslname + + The hostname of the KEMP360 Central machine to be used for activation. + + String + + + aslport + + The port to contact KEMP360 Central on. + + Int32 + + + LicenseTypeId + + Specify the LicenseTypeId of the license to activate. To retrieve a list of license types and IDs, run the Get-AslLicenseType command. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + aslipaddr + + The IP address of the KEMP360 Central machine to be used for activation. + + String + + String + + + + + + aslname + + The hostname of the KEMP360 Central machine to be used for activation. + + String + + String + + + + + + aslport + + The port to contact KEMP360 Central on. + + Int32 + + Int32 + + + + + + LicenseTypeId + + Specify the LicenseTypeId of the license to activate. To retrieve a list of license types and IDs, run the Get-AslLicenseType command. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + aslipaddress + + The IP address of the KEMP360 Central machine to be used for activation. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Either the aslipaddr or aslname parameter must be provided for this command to run successfully. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Request-LicenseOnPremise -aslipaddr 172.16.128.69 -aslname lm-act-server-default -aslport 443 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data.........: @{AslServerIpAddress=172.16.128.69; AslServerPort=443; AslServerFqdn=lm-act-server-default} + + + + + + + + + + + + + + + + + Reset-LogStatistics + + Reset the LoadMaster statistics. + + + + + Reset + LogStatistics + + + + Reset the LoadMaster statistics (total connections, Bytes per Second, and so on) that can be retreived with the Get-LogStatistics command. + + + + Reset-LogStatistics + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Reset-LogStatistics + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Reset-LogStatistics + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Restart-Lm + + Allows you to restart the LoadMaster. + + + + + Restart + Lm + + + + Allows you to restart the LoadMaster. + + + + Restart-Lm + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Shutdown + + Specifies to shut down the LoadMaster. Issuing this command will require physical access to power the LoadMaster back on. + + SwitchParameter + + + Force + + Enable this command to force the command to execute without a confirmation. + + SwitchParameter + + + SleepTime + + This parameter is not mandatory. The SleepTime parameter defines the amount of wait time. The default value is 12 seconds. +The Cycles parameter value defines the amount of cycles of sleep time to wait for. The default value is 8 seconds. Therefore, by default the API waits for 96 seconds when the Restart-Lm command is run. + + Int32 + + + Cycles + + This parameter is not mandatory. The Cycles parameter value defines the amount of cycles of sleep time that is waited for. The default is 8 seconds. The SleepTime parameter defines the amount of wait time. The default value is 12 seconds. +Therefore, by default the API waits for 96 seconds when the Restart-Lm command is run. + + Int32 + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this command to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Restart-Lm + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Shutdown + + Specifies to shut down the LoadMaster. Issuing this command will require physical access to power the LoadMaster back on. + + SwitchParameter + + + Force + + Enable this command to force the command to execute without a confirmation. + + SwitchParameter + + + SleepTime + + This parameter is not mandatory. The SleepTime parameter defines the amount of wait time. The default value is 12 seconds. +The Cycles parameter value defines the amount of cycles of sleep time to wait for. The default value is 8 seconds. Therefore, by default the API waits for 96 seconds when the Restart-Lm command is run. + + Int32 + + + Cycles + + This parameter is not mandatory. The Cycles parameter value defines the amount of cycles of sleep time that is waited for. The default is 8 seconds. The SleepTime parameter defines the amount of wait time. The default value is 12 seconds. +Therefore, by default the API waits for 96 seconds when the Restart-Lm command is run. + + Int32 + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this command to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Shutdown + + Specifies to shut down the LoadMaster. Issuing this command will require physical access to power the LoadMaster back on. + + SwitchParameter + + SwitchParameter + + + + + + Force + + Enable this command to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + SleepTime + + This parameter is not mandatory. The SleepTime parameter defines the amount of wait time. The default value is 12 seconds. +The Cycles parameter value defines the amount of cycles of sleep time to wait for. The default value is 8 seconds. Therefore, by default the API waits for 96 seconds when the Restart-Lm command is run. + + Int32 + + Int32 + + + + + + Cycles + + This parameter is not mandatory. The Cycles parameter value defines the amount of cycles of sleep time that is waited for. The default is 8 seconds. The SleepTime parameter defines the amount of wait time. The default value is 12 seconds. +Therefore, by default the API waits for 96 seconds when the Restart-Lm command is run. + + Int32 + + Int32 + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Enable this command to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Restart-Lm -Confirm -Force + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Restart-LoadBalancer + + WARNING: This function is deprecated. Use the following command instead: +Restart-Lm + + + + + Restart + LoadBalancer + + + + WARNING: This function is deprecated. Use the following command instead: +Restart-Lm + + + + Restart-LoadBalancer + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + Shutdown + + + + SwitchParameter + + + Force + + + + SwitchParameter + + + SleepTime + + + + Int32 + + + Cycles + + + + Int32 + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + Restart-LoadBalancer + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + Shutdown + + + + SwitchParameter + + + Force + + + + SwitchParameter + + + SleepTime + + + + Int32 + + + Cycles + + + + Int32 + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + + + SwitchParameter + + + Confirm + + + + SwitchParameter + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + Shutdown + + + + SwitchParameter + + SwitchParameter + + + + + + Force + + + + SwitchParameter + + SwitchParameter + + + + + + SleepTime + + + + Int32 + + Int32 + + + + + + Cycles + + + + Int32 + + Int32 + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Restore-Certificate + + WARNING: This function is deprecated. Use the following command instead: +Restore-TlsCertificate + + + + + Restore + Certificate + + + + WARNING: This function is deprecated. Use the following command instead: +Restore-TlsCertificate + + + + Restore-Certificate + + Password + + + + String + + + Path + + + + String + + + Type + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Restore-Certificate + + Password + + + + String + + + Path + + + + String + + + Type + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Password + + + + String + + String + + + + + + Path + + + + String + + String + + + + + + Type + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Restore-LmConfiguration + + Allows you to restore the LoadMaster using a backup file previously saved. + + + + + Restore + LmConfiguration + + + + Allows you to restore the LoadMaster using a backup file previously saved. + + + + Restore-LmConfiguration + + Path + + The local path to the backup file. + + String + + + Type + + The type of information to restore. Valid values are: +Base +Base + VS +Base + Geo +VS +VS + Geo +Geo +SSO/LDAP +All + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Restore-LmConfiguration + + Path + + The local path to the backup file. + + String + + + Type + + The type of information to restore. Valid values are: +Base +Base + VS +Base + Geo +VS +VS + Geo +Geo +SSO/LDAP +All + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The local path to the backup file. + + String + + String + + + + + + Type + + The type of information to restore. Valid values are: +Base +Base + VS +Base + Geo +VS +VS + Geo +Geo +SSO/LDAP +All + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Restore-LmConfiguration -Path C:\backups\LMBackups_2013_11_04.17_43 -Type Base + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Restore-LoadBalancer + + WARNING: This function is deprecated. Use the following command instead: +Restore-LmConfiguration + + + + + Restore + LoadBalancer + + + + WARNING: This function is deprecated. Use the following command instead: +Restore-LmConfiguration + + + + Restore-LoadBalancer + + Path + + + + String + + + Type + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Restore-LoadBalancer + + Path + + + + String + + + Type + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + Type + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Restore-Patch + + WARNING: This function is deprecated. Use the following command instead: +Uninstall-LmPatch + + + + + Restore + Patch + + + + WARNING: This function is deprecated. Use the following command instead: +Uninstall-LmPatch + + + + Restore-Patch + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Restore-Patch + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Restore-TlsCertificate + + Allows you to restore an existing certificate to the LoadMaster. + + + + + Restore + TlsCertificate + + + + Allows you to restore an existing certificate to the LoadMaster. + + + + Restore-TlsCertificate + + Password + + The password that was used to backup the certificate, if needed. + + String + + + Path + + The local path to the certificate backup file. + + String + + + Type + + The type of certificate to restore from the backup file. This parameter is required. +This parameter has three possible values: + - Full - All Virtual Service and intermediate certificates + - Third - Intermediate certificates only + - Vs - Virtual Service certificates only + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Restore-TlsCertificate + + Password + + The password that was used to backup the certificate, if needed. + + String + + + Path + + The local path to the certificate backup file. + + String + + + Type + + The type of certificate to restore from the backup file. This parameter is required. +This parameter has three possible values: + - Full - All Virtual Service and intermediate certificates + - Third - Intermediate certificates only + - Vs - Virtual Service certificates only + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Password + + The password that was used to backup the certificate, if needed. + + String + + String + + + + + + Path + + The local path to the certificate backup file. + + String + + String + + + + + + Type + + The type of certificate to restore from the backup file. This parameter is required. +This parameter has three possible values: + - Full - All Virtual Service and intermediate certificates + - Third - Intermediate certificates only + - Vs - Virtual Service certificates only + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Restore-TlsCertificate -Password password -Type Full -Path C:\Certificates\CertBackup + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-AdaptiveCheck + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcAdaptiveHealthCheck + + + + + Set + AdaptiveCheck + + + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcAdaptiveHealthCheck + + + + Set-AdaptiveCheck + + AdaptiveURL + + + + String + + + AdaptivePort + + + + Int32 + + + AdaptiveInterval + + + + Int32 + + + MinPercent + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdaptiveCheck + + AdaptiveURL + + + + String + + + AdaptivePort + + + + Int32 + + + AdaptiveInterval + + + + Int32 + + + MinPercent + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + AdaptiveURL + + + + String + + String + + + + + + AdaptivePort + + + + Int32 + + Int32 + + + + + + AdaptiveInterval + + + + Int32 + + Int32 + + + + + + MinPercent + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-AdcAdaptiveHealthCheck + + Allows you to set the values of the Adaptive Health Checking options. + + + + + Set + AdcAdaptiveHealthCheck + + + + Allows you to set the values of the Adaptive Health Checking options. + + + + Set-AdcAdaptiveHealthCheck + + AdaptiveURL + + The URL on the Real Servers which will return the current load of the Real Server. + + String + + + AdaptivePort + + The port on the Real Servers used to access the URL containing the current load of the Real Server. + + Int32 + + + AdaptiveInterval + + When using adaptive scheduling, the Real Servers are polled to retrieve their loading values. How often this occurs can be specified here. + + Int32 + + + MinPercent + + The minimum load of the Real Server, below which the Real Server is said to be idle. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdcAdaptiveHealthCheck + + AdaptiveURL + + The URL on the Real Servers which will return the current load of the Real Server. + + String + + + AdaptivePort + + The port on the Real Servers used to access the URL containing the current load of the Real Server. + + Int32 + + + AdaptiveInterval + + When using adaptive scheduling, the Real Servers are polled to retrieve their loading values. How often this occurs can be specified here. + + Int32 + + + MinPercent + + The minimum load of the Real Server, below which the Real Server is said to be idle. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + AdaptiveURL + + The URL on the Real Servers which will return the current load of the Real Server. + + String + + String + + + + + + AdaptivePort + + The port on the Real Servers used to access the URL containing the current load of the Real Server. + + Int32 + + Int32 + + + + + + AdaptiveInterval + + When using adaptive scheduling, the Real Servers are polled to retrieve their loading values. How often this occurs can be specified here. + + Int32 + + Int32 + + + + + + MinPercent + + The minimum load of the Real Server, below which the Real Server is said to be idle. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-AdcAdaptiveHealthCheck -AdaptiveURL www.example.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +AdaptiveURL : www.example.com +AdaptivePort : 80 +AdaptiveInterval : 7 +MinPercent : 5 + + + + + + + + + + + + + + + + + Set-AdcContentRule + + Allows you to set a rule in the LoadMaster. + + + + + Set + AdcContentRule + + + + Allows you to set a rule in the LoadMaster. Including the Confirm parameter opens a confirmation dialog. + + + + Set-AdcContentRule + + RuleName + + The name of the rule. + + String + + + MatchType + + Specifies whether the rule matches on a regular expression (regex), prefix, or postfix. This parameter defaults to regex, but will also accept prefix or postfix. + + String + + + IncHost + + Specifies whether to include the host in the URL. + + Boolean + + + NoCase + + Specifies whether to ignore case/capitalization. + + Boolean + + + Negate + + Specifies whether to invert the case of the match. + + Boolean + + + IncQuery + + Append the query string to the URI before performing a match. + + Boolean + + + Header + + Specifies the header that a match should be performed on. Set this to body to match on the body of a request. + + String + + + Pattern + + Specifies the pattern to search for. + + String + + + Replacement + + Specifies the replacement string for the pattern. + + String + + + Type + + The type of content rule: +0 - Content Matching +1 - Add Header +2 - Delete Header +3 - Replace Header +4 - Modify URL +5 - Replace String in Response Body +The other parameters available for the Set-AdcContentRule command depend on the "type" of content rule being added. + + Int32 + + + MustFail + + If this rule is matched, then always fail to connect. +0 - Disabled (do not fail to connect) +1 - Enabled (fail to connect) + + Int32 + + + OnlyOnFlag + + Only try to execute this rule if the specified flag is set by another rule (the OnlyOnFlag parameter is used in conjunction with the SetFlagOnMatch parameter). +Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched ('chaining' rules). For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/ +Valid values: 0-9 + + Int32 + + + SetFlagOnMatch + + SetFlagOnMatch: +If the rule is successfully matched, set the specified flag. Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched. For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/. +Valid values: 0-9 + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdcContentRule + + RuleName + + The name of the rule. + + String + + + MatchType + + Specifies whether the rule matches on a regular expression (regex), prefix, or postfix. This parameter defaults to regex, but will also accept prefix or postfix. + + String + + + IncHost + + Specifies whether to include the host in the URL. + + Boolean + + + NoCase + + Specifies whether to ignore case/capitalization. + + Boolean + + + Negate + + Specifies whether to invert the case of the match. + + Boolean + + + IncQuery + + Append the query string to the URI before performing a match. + + Boolean + + + Header + + Specifies the header that a match should be performed on. Set this to body to match on the body of a request. + + String + + + Pattern + + Specifies the pattern to search for. + + String + + + Replacement + + Specifies the replacement string for the pattern. + + String + + + Type + + The type of content rule: +0 - Content Matching +1 - Add Header +2 - Delete Header +3 - Replace Header +4 - Modify URL +5 - Replace String in Response Body +The other parameters available for the Set-AdcContentRule command depend on the "type" of content rule being added. + + Int32 + + + MustFail + + If this rule is matched, then always fail to connect. +0 - Disabled (do not fail to connect) +1 - Enabled (fail to connect) + + Int32 + + + OnlyOnFlag + + Only try to execute this rule if the specified flag is set by another rule (the OnlyOnFlag parameter is used in conjunction with the SetFlagOnMatch parameter). +Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched ('chaining' rules). For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/ +Valid values: 0-9 + + Int32 + + + SetFlagOnMatch + + SetFlagOnMatch: +If the rule is successfully matched, set the specified flag. Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched. For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/. +Valid values: 0-9 + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RuleName + + The name of the rule. + + String + + String + + + + + + MatchType + + Specifies whether the rule matches on a regular expression (regex), prefix, or postfix. This parameter defaults to regex, but will also accept prefix or postfix. + + String + + String + + + + + + IncHost + + Specifies whether to include the host in the URL. + + Boolean + + Boolean + + + + + + NoCase + + Specifies whether to ignore case/capitalization. + + Boolean + + Boolean + + + + + + Negate + + Specifies whether to invert the case of the match. + + Boolean + + Boolean + + + + + + IncQuery + + Append the query string to the URI before performing a match. + + Boolean + + Boolean + + + + + + Header + + Specifies the header that a match should be performed on. Set this to body to match on the body of a request. + + String + + String + + + + + + Pattern + + Specifies the pattern to search for. + + String + + String + + + + + + Replacement + + Specifies the replacement string for the pattern. + + String + + String + + + + + + Type + + The type of content rule: +0 - Content Matching +1 - Add Header +2 - Delete Header +3 - Replace Header +4 - Modify URL +5 - Replace String in Response Body +The other parameters available for the Set-AdcContentRule command depend on the "type" of content rule being added. + + Int32 + + Int32 + + + + + + MustFail + + If this rule is matched, then always fail to connect. +0 - Disabled (do not fail to connect) +1 - Enabled (fail to connect) + + Int32 + + Int32 + + + + + + OnlyOnFlag + + Only try to execute this rule if the specified flag is set by another rule (the OnlyOnFlag parameter is used in conjunction with the SetFlagOnMatch parameter). +Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched ('chaining' rules). For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/ +Valid values: 0-9 + + Int32 + + Int32 + + + + + + SetFlagOnMatch + + SetFlagOnMatch: +If the rule is successfully matched, set the specified flag. Using the OnlyOnFlag and SetFlagOnMatch parameters, it is possible to make rules dependent on each other, that is, only execute a particular rule if another rule has been successfully matched. For more detailed instructions on ‘chaining’ rules, please refer to the Content Rules, Feature Description document on the KEMP Documentation Page: https://kemptechnologies.com/loadmaster-documentation/. +Valid values: 0-9 + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + IncQueryfalse + + Append the query string to the URI before performing a match. + + boolean + + boolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-AdcContentRule -Name TestRule1 -Negate $True -NoCase $False -Pattern /^example$/ + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-AdcL7Configuration + + Allows you to set the values of Layer 7 Configuration options. + + + + + Set + AdcL7Configuration + + + + Allows you to set the values of Layer 7 Configuration options. + + + + Set-AdcL7Configuration + + ScalingOver64KConnections + + Under very high load situations, Port Exhaustion can occur. Enabling this option will allow the setting of Alternate Source Addresses which can be used to expand the number of local ports available. + If more than 64K concurrent connections are required, enable the Allow Connection Scaling over 64K Connections option and set the Virtual Service IP as the alternate address in the Alternate Source Addresses input field. This allows each Virtual Service to have its own pool of source ports. + Transparent Virtual Services are capped at 64K concurrent connections. This limit is on a per Virtual Service basis. + If, after selecting this option, you set some Alternate Source Addresses, you will not be able to disable the Allow connection scaling over 64K Connections option. + + Boolean + + + AlwaysCheckPersist + + By default, the L7 module only checks persist on the first request of a HTTP/1.1 connection. Enabling this option will check the persist on every request. When Accept Changes is selected, all persistence changes are saved, even in the middle of a connection. +Valid values are: +No +Yes +Yes - Accept Changes + + String + + + AddPortToActiveCookie + + When using the LoadMaster behind a NATing gateway, all client addresses are the same. To create individual cookies the remote port can also be added to the cookie. Enabling this option when not needed wastes resources. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + RFCConform + + By default, the LoadMaster conforms to the RFC when parsing HTTP headers. Disabling this will allow interworking with some broken browsers. Valid values: +0 - Disable +1 - Enable + + Boolean + + + CloseOnError + + When enabled, the LoadMaster will always close the client connection when it sends back an error response. For Example, this changes the behaviour of the LoadMaster when sending back a 304 File not changed message after receiving an If-Modified-Since HTTP header. + + Boolean + + + AddViaHeaderInCacheResponses + + When enabled, a VIA header field will be added to all cache responses. The Virtual Service address will be the address used. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + RSAreLocal + + When checking to see if a client is on the local subnet, also check to see if the client is actually a Real Server. + + Boolean + + + DropOnRSFail + + By default, existing connections are not closed if a Real Server fails. Enabling this feature causes all connections to be immediately dropped on Real Server failure. Valid values: +0 - Disable +1 - Enable + + Boolean + + + DropAtDrainEnd + + If enabled, all open connections to disabled Real Servers will be dropped at the end of the Real Servers Drain Stop Time or immediately if there are no Persist entries associated with the Real Server. + + Boolean + + + Transparent + + Globally enable or disable the transparent handling of connections using the L7 subsystem. L4 connections are ALWAYS handled transparently. + + Boolean + + + L7AuthTimeoutSecs + + The duration (in seconds) that a connection remains open for while authentication is ongoing. This value can be between 30 and 300. + + Int16 + + + L7ClientTokenTimeoutSecs + + The duration (in seconds) to wait for the client token while the process of authentication is ongoing (used for RSA SecurID and RADIUS authentication). The default value for this parameter is 120. The range for this parameter is 60-300. + + Int16 + + + L7ConnectionDrainTimeoutSecs + + If enabled, all open connections to disabled Real Servers will be dropped at the end of the Real Servers Drain Stop Time OR immediately if there are no Persist entries associated with the Real Server. Valid values are: +0 - Disable +1 - Enable + + Int32 + + + AdditionalL7Header + + This enables Layer 7 header injection for HTTP/HTTPS Virtual Services. Header injection can be set to X-ClientSide (KEMP LoadMaster specific), X-Forwarded-For, or None. + + String + + + OneHundredContinueHandling + + Determines how 100-Continue Handling messages are handled. The available options are: +RFC-2616 Compliant: conforms with the behavior as outlined in RFC-2616 +Require 100-Continue: forces the LoadMaster to wait for the 100-Continue message +RFC-7231 Compliant: ensures the LoadMaster does not wait for 100-Continue messages + Modifying how 100 Continue messages are handled by the system requires an understanding of the relevant technologies as described in the RFCs listed above. It is recommended that you speak with a KEMP Technical Support engineer before making changes to these settings. + + String + + + AllowEmptyPosts + + By default the LoadMaster blocks POSTs that do not contain a Content-Length or Transfer-Encoding header to indicate the length of the requests payload. When this parameter is set to true, such requests are assumed to have no payload data and are therefore not rejected. + + Boolean + + + AllowEmptyHttpHeaders + + By default, if the LoadMaster is processing HTTP headers it ignores HTTP headers that have empty content. This can break some SOAP services, even though it is against the HTTP RFCs. Setting this option allows these empty headers through. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + ForceCompleteRSMatch + + By default, when the LoadMaster is trying to locate a Real Server for use with content switching, it tries to use the same Real Server as currently selected, even if the port is not the same. Enabling this parameter forces the port to also be compared. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + SlowStart + + When using the Least Connection (or Weighted Least Connection) scheduling method, specify the time (in seconds) over which the load to a Real Server which has just come online will be throttled. + + Int16 + + + ShareSubVSPersistance + + By default, each SubVS has an independent persistence table. Enabling this parameter will allow the SubVS to share this information. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdcL7Configuration + + ScalingOver64KConnections + + Under very high load situations, Port Exhaustion can occur. Enabling this option will allow the setting of Alternate Source Addresses which can be used to expand the number of local ports available. + If more than 64K concurrent connections are required, enable the Allow Connection Scaling over 64K Connections option and set the Virtual Service IP as the alternate address in the Alternate Source Addresses input field. This allows each Virtual Service to have its own pool of source ports. + Transparent Virtual Services are capped at 64K concurrent connections. This limit is on a per Virtual Service basis. + If, after selecting this option, you set some Alternate Source Addresses, you will not be able to disable the Allow connection scaling over 64K Connections option. + + Boolean + + + AlwaysCheckPersist + + By default, the L7 module only checks persist on the first request of a HTTP/1.1 connection. Enabling this option will check the persist on every request. When Accept Changes is selected, all persistence changes are saved, even in the middle of a connection. +Valid values are: +No +Yes +Yes - Accept Changes + + String + + + AddPortToActiveCookie + + When using the LoadMaster behind a NATing gateway, all client addresses are the same. To create individual cookies the remote port can also be added to the cookie. Enabling this option when not needed wastes resources. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + RFCConform + + By default, the LoadMaster conforms to the RFC when parsing HTTP headers. Disabling this will allow interworking with some broken browsers. Valid values: +0 - Disable +1 - Enable + + Boolean + + + CloseOnError + + When enabled, the LoadMaster will always close the client connection when it sends back an error response. For Example, this changes the behaviour of the LoadMaster when sending back a 304 File not changed message after receiving an If-Modified-Since HTTP header. + + Boolean + + + AddViaHeaderInCacheResponses + + When enabled, a VIA header field will be added to all cache responses. The Virtual Service address will be the address used. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + RSAreLocal + + When checking to see if a client is on the local subnet, also check to see if the client is actually a Real Server. + + Boolean + + + DropOnRSFail + + By default, existing connections are not closed if a Real Server fails. Enabling this feature causes all connections to be immediately dropped on Real Server failure. Valid values: +0 - Disable +1 - Enable + + Boolean + + + DropAtDrainEnd + + If enabled, all open connections to disabled Real Servers will be dropped at the end of the Real Servers Drain Stop Time or immediately if there are no Persist entries associated with the Real Server. + + Boolean + + + Transparent + + Globally enable or disable the transparent handling of connections using the L7 subsystem. L4 connections are ALWAYS handled transparently. + + Boolean + + + L7AuthTimeoutSecs + + The duration (in seconds) that a connection remains open for while authentication is ongoing. This value can be between 30 and 300. + + Int16 + + + L7ClientTokenTimeoutSecs + + The duration (in seconds) to wait for the client token while the process of authentication is ongoing (used for RSA SecurID and RADIUS authentication). The default value for this parameter is 120. The range for this parameter is 60-300. + + Int16 + + + L7ConnectionDrainTimeoutSecs + + If enabled, all open connections to disabled Real Servers will be dropped at the end of the Real Servers Drain Stop Time OR immediately if there are no Persist entries associated with the Real Server. Valid values are: +0 - Disable +1 - Enable + + Int32 + + + AdditionalL7Header + + This enables Layer 7 header injection for HTTP/HTTPS Virtual Services. Header injection can be set to X-ClientSide (KEMP LoadMaster specific), X-Forwarded-For, or None. + + String + + + OneHundredContinueHandling + + Determines how 100-Continue Handling messages are handled. The available options are: +RFC-2616 Compliant: conforms with the behavior as outlined in RFC-2616 +Require 100-Continue: forces the LoadMaster to wait for the 100-Continue message +RFC-7231 Compliant: ensures the LoadMaster does not wait for 100-Continue messages + Modifying how 100 Continue messages are handled by the system requires an understanding of the relevant technologies as described in the RFCs listed above. It is recommended that you speak with a KEMP Technical Support engineer before making changes to these settings. + + String + + + AllowEmptyPosts + + By default the LoadMaster blocks POSTs that do not contain a Content-Length or Transfer-Encoding header to indicate the length of the requests payload. When this parameter is set to true, such requests are assumed to have no payload data and are therefore not rejected. + + Boolean + + + AllowEmptyHttpHeaders + + By default, if the LoadMaster is processing HTTP headers it ignores HTTP headers that have empty content. This can break some SOAP services, even though it is against the HTTP RFCs. Setting this option allows these empty headers through. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + ForceCompleteRSMatch + + By default, when the LoadMaster is trying to locate a Real Server for use with content switching, it tries to use the same Real Server as currently selected, even if the port is not the same. Enabling this parameter forces the port to also be compared. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + SlowStart + + When using the Least Connection (or Weighted Least Connection) scheduling method, specify the time (in seconds) over which the load to a Real Server which has just come online will be throttled. + + Int16 + + + ShareSubVSPersistance + + By default, each SubVS has an independent persistence table. Enabling this parameter will allow the SubVS to share this information. Valid values are: +0 - Disable +1 - Enable + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ScalingOver64KConnections + + Under very high load situations, Port Exhaustion can occur. Enabling this option will allow the setting of Alternate Source Addresses which can be used to expand the number of local ports available. + If more than 64K concurrent connections are required, enable the Allow Connection Scaling over 64K Connections option and set the Virtual Service IP as the alternate address in the Alternate Source Addresses input field. This allows each Virtual Service to have its own pool of source ports. + Transparent Virtual Services are capped at 64K concurrent connections. This limit is on a per Virtual Service basis. + If, after selecting this option, you set some Alternate Source Addresses, you will not be able to disable the Allow connection scaling over 64K Connections option. + + Boolean + + Boolean + + + + + + AlwaysCheckPersist + + By default, the L7 module only checks persist on the first request of a HTTP/1.1 connection. Enabling this option will check the persist on every request. When Accept Changes is selected, all persistence changes are saved, even in the middle of a connection. +Valid values are: +No +Yes +Yes - Accept Changes + + String + + String + + + + + + AddPortToActiveCookie + + When using the LoadMaster behind a NATing gateway, all client addresses are the same. To create individual cookies the remote port can also be added to the cookie. Enabling this option when not needed wastes resources. Valid values are: +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + RFCConform + + By default, the LoadMaster conforms to the RFC when parsing HTTP headers. Disabling this will allow interworking with some broken browsers. Valid values: +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + CloseOnError + + When enabled, the LoadMaster will always close the client connection when it sends back an error response. For Example, this changes the behaviour of the LoadMaster when sending back a 304 File not changed message after receiving an If-Modified-Since HTTP header. + + Boolean + + Boolean + + + + + + AddViaHeaderInCacheResponses + + When enabled, a VIA header field will be added to all cache responses. The Virtual Service address will be the address used. Valid values are: +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + RSAreLocal + + When checking to see if a client is on the local subnet, also check to see if the client is actually a Real Server. + + Boolean + + Boolean + + + + + + DropOnRSFail + + By default, existing connections are not closed if a Real Server fails. Enabling this feature causes all connections to be immediately dropped on Real Server failure. Valid values: +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + DropAtDrainEnd + + If enabled, all open connections to disabled Real Servers will be dropped at the end of the Real Servers Drain Stop Time or immediately if there are no Persist entries associated with the Real Server. + + Boolean + + Boolean + + + + + + Transparent + + Globally enable or disable the transparent handling of connections using the L7 subsystem. L4 connections are ALWAYS handled transparently. + + Boolean + + Boolean + + + + + + L7AuthTimeoutSecs + + The duration (in seconds) that a connection remains open for while authentication is ongoing. This value can be between 30 and 300. + + Int16 + + Int16 + + + + + + L7ClientTokenTimeoutSecs + + The duration (in seconds) to wait for the client token while the process of authentication is ongoing (used for RSA SecurID and RADIUS authentication). The default value for this parameter is 120. The range for this parameter is 60-300. + + Int16 + + Int16 + + + + + + L7ConnectionDrainTimeoutSecs + + If enabled, all open connections to disabled Real Servers will be dropped at the end of the Real Servers Drain Stop Time OR immediately if there are no Persist entries associated with the Real Server. Valid values are: +0 - Disable +1 - Enable + + Int32 + + Int32 + + + + + + AdditionalL7Header + + This enables Layer 7 header injection for HTTP/HTTPS Virtual Services. Header injection can be set to X-ClientSide (KEMP LoadMaster specific), X-Forwarded-For, or None. + + String + + String + + + + + + OneHundredContinueHandling + + Determines how 100-Continue Handling messages are handled. The available options are: +RFC-2616 Compliant: conforms with the behavior as outlined in RFC-2616 +Require 100-Continue: forces the LoadMaster to wait for the 100-Continue message +RFC-7231 Compliant: ensures the LoadMaster does not wait for 100-Continue messages + Modifying how 100 Continue messages are handled by the system requires an understanding of the relevant technologies as described in the RFCs listed above. It is recommended that you speak with a KEMP Technical Support engineer before making changes to these settings. + + String + + String + + + + + + AllowEmptyPosts + + By default the LoadMaster blocks POSTs that do not contain a Content-Length or Transfer-Encoding header to indicate the length of the requests payload. When this parameter is set to true, such requests are assumed to have no payload data and are therefore not rejected. + + Boolean + + Boolean + + + + + + AllowEmptyHttpHeaders + + By default, if the LoadMaster is processing HTTP headers it ignores HTTP headers that have empty content. This can break some SOAP services, even though it is against the HTTP RFCs. Setting this option allows these empty headers through. Valid values are: +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + ForceCompleteRSMatch + + By default, when the LoadMaster is trying to locate a Real Server for use with content switching, it tries to use the same Real Server as currently selected, even if the port is not the same. Enabling this parameter forces the port to also be compared. Valid values are: +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + SlowStart + + When using the Least Connection (or Weighted Least Connection) scheduling method, specify the time (in seconds) over which the load to a Real Server which has just come online will be throttled. + + Int16 + + Int16 + + + + + + ShareSubVSPersistance + + By default, each SubVS has an independent persistence table. Enabling this parameter will allow the SubVS to share this information. Valid values are: +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + AddCookiePort + + When using the LoadMaster behind a NATing gateway, all client addresses are the same. To create individual cookies the remote port can also be added to the cookie. Enabling this option when not needed wastes resources. + + boolean + + boolean + + + + + + AddVia + + Specify which headers to be added to HTTP requests. X-ClientSide and X-Forwarded-For are only added to non-transparent connections. + 0 - Legacy Operation(X-Forwarded-For) + 1 - X-Forwarded-For (+ Via) + 2 - None + 3 - X-ClientSide (+ Via) + 4 - X-ClientSide (No Via) + 5 - X-Forwarded-For (No Via) + 6 - Via Only + + boolean + + boolean + + + + + + AlwaysPersist + + This parameter also accepts no and yes as valid values. No and Yes correspond to 0 and 1 respectively. + + boolean + + boolean + + + + + + AuthTimeout + + The duration (in seconds) that a connection remains open for while authentication is ongoing. This value can be between 30 and 300. + + int16 + + int16 + + + + + + ClientTokenTimeout + + The duration (in seconds) to wait for the client token while the process of authentication is ongoing (used for RSA SecurID and RADIUS authentication). The default value for this parameter is 120. + + int16 + + int16 + + + + + + DropOnFail + + By default, existing connections are not closed if a Real Server fails. Enabling this feature causes all connections to be immediately dropped on Real Server failure. + + boolean + + boolean + + + + + + Expect100 + + By default, the L7 module only waits for 100-Continue replies if it sees an Expect-100 header, use RFC-2616 Compliant. If the system will always wait for 100 Continue messages, use Require 100-Continue. If the client will always send the POST data even if a 100 Continue message is not sent, use RFC-7231 Compliant instead. + + int16 + + int16 + + + + + + RFConform + + By default, the LoadMaster conforms to the RFC when parsing HTTP headers. Disabling this will allow interworking with some broken browsers. + + boolean + + boolean + + + + + + LocalBind + + In very high load situations, local port exhaustion can occur. Enabling this option allows the setting of alternate source addresses. This can be used to expand the number of available local ports. + + boolean + + boolean + + + + + + AddForwardHeader + + This option, only available when L7 Transparency is disabled, allows the addition of either X-ClientSide or X-Forwarded For to the HTTP header. + + int16 + + int16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-AdcL7Configuration -OneHundredContinueHandling "RFC-2616 Compliant" + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{AdcL7Configuration=} +Param........: @{ScalingOver64KConnections=no; AlwaysCheckPersist=Yes - Accept Changes; AddPortToActiveCookie=no; RFCConform=yes; CloseOnError=no; AddVi +aHeaderInCacheResponses=no; RSAreLocal=no; DropOnRSFail=no; DropAtDrainEnd=no; L7AuthTimeoutSecs=30; L7ClientTokenTimeoutSecs=120; L7ConnectionDrainTime +outSecs=300; AdditionalL7Header=X-ClientSide; OneHundredContinueHandling=RFC-2616 Compliant; AllowEmptyPosts=no; AllowEmptyHttpHeaders=no; ForceComplete +RSMatch=no; SlowStart=0; ShareSubVSPersistance=no} +ScalingOver64KConnections : no +AlwaysCheckPersist : Yes - Accept Changes +AddPortToActiveCookie : no +RFCConform : yes +CloseOnError : no +AddViaHeaderInCacheResponses : no +RSAreLocal : no +DropOnRSFail : no +DropAtDrainEnd : no +L7AuthTimeoutSecs : 30 +L7ClientTokenTimeoutSecs : 120 +L7ConnectionDrainTimeoutSecs : 300 +AdditionalL7Header : X-ClientSide +OneHundredContinueHandling : RFC-2616 Compliant +AllowEmptyPosts : no +AllowEmptyHttpHeaders : no +ForceCompleteRSMatch : no +SlowStart : 0 +ShareSubVSPersistance : no + + + + + + + + + + + + + + + + + Set-AdcL7LogInsightSplitConfiguration + + Allows you to set the value of the log split interval. + + + + + Set + AdcL7LogInsightSplitConfiguration + + + + Allows you to set the value of the log split interval. + + + + Set-AdcL7LogInsightSplitConfiguration + + logsplitinterval + + When using Log Insight Scheduling this is the number of messages that are received on a connection before the stream is rescheduled. The default value is 10. The range is 1-100. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdcL7LogInsightSplitConfiguration + + logsplitinterval + + When using Log Insight Scheduling this is the number of messages that are received on a connection before the stream is rescheduled. The default value is 10. The range is 1-100. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + logsplitinterval + + When using Log Insight Scheduling this is the number of messages that are received on a connection before the stream is rescheduled. The default value is 10. The range is 1-100. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + logsplit + + This value controls how many syslog messages should be sent to each server in the pool before moving to the next server. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This command is only relevant for LoadMasters with the Log Insight Add-On Pack installed. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-AdcL7LogInsightSplitConfiguration -logsplit 20 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{logsplitinterval=20} + + + + + + + + + + + + + + + + + Set-AdcRealServer + + Configure options on a configured Real Server. + + + + + Set + AdcRealServer + + + + Modifies the settings for a Real Server that is already configured. + + + + Set-AdcRealServer + + VirtualService + + The IP address of the Virtual Service. + + String + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The index number of the Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The IP address that the Real Server being defined listens on. + + String + + + RealServerPort + + The port that the Real Server will be listening on. + + Int32 + + + RSIndex + + The index number of the Real Server to be modified. To retrieve the Real Server index, run the Get-VirtualService command. +If modifying the Real Server-specific parameters of a SubVS, such as critical, weight and limit, specify the RS index of the SubVS along with the Virtual Service parameters of the parent Virtual Service. + + Int32 + + + NewPort + + Used to change the Real Server port to a new value. + + Int32 + + + Weight + + The Real Server's weight. This is weight of the Real Server, as used by the Weighted Round Robin, Weighted Least Connection and Adaptive scheduling methods. The default initial value for the weight is 1000, the maximum is 65535 and the minimum is 1. + + Int32 + + + Forward + + Either NAT (Network Address Translation) or Route (Direct) forwarding. The available options are dependent on the other modes configured for the service. + + String + + + Enable + + Specifies if the Real Server is enabled or disabled. Pass in a value of TRUE ($true) for enabled, and FALSE ($false) for disabled. + + Boolean + + + Limit + + The maximum number of open connections that a Real Server will accept before it is taken out of the rotation. This is only available for Layer 7 traffic. + + Int64 + + + Critical + + True or false to indicate whether this Real Server is required for the Virtual Service to be available. + + Boolean + + + Follow + + Specify what Real Server the health check is based on by setting this parameter to the RsIndex of the Real Server to be followed. This can either be set to the RsIndex of the same Real Server in order to health check based on that particular Real Server status, or another Real Server can be specified. For example – if Real Server 1 is down, any Real Servers which have their health check based on Real Server 1 will also be marked as down, regardless of their actual Real Server status. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdcRealServer + + VirtualService + + The IP address of the Virtual Service. + + String + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The index number of the Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + + RealServer + + The IP address that the Real Server being defined listens on. + + String + + + RealServerPort + + The port that the Real Server will be listening on. + + Int32 + + + RSIndex + + The index number of the Real Server to be modified. To retrieve the Real Server index, run the Get-VirtualService command. +If modifying the Real Server-specific parameters of a SubVS, such as critical, weight and limit, specify the RS index of the SubVS along with the Virtual Service parameters of the parent Virtual Service. + + Int32 + + + NewPort + + Used to change the Real Server port to a new value. + + Int32 + + + Weight + + The Real Server's weight. This is weight of the Real Server, as used by the Weighted Round Robin, Weighted Least Connection and Adaptive scheduling methods. The default initial value for the weight is 1000, the maximum is 65535 and the minimum is 1. + + Int32 + + + Forward + + Either NAT (Network Address Translation) or Route (Direct) forwarding. The available options are dependent on the other modes configured for the service. + + String + + + Enable + + Specifies if the Real Server is enabled or disabled. Pass in a value of TRUE ($true) for enabled, and FALSE ($false) for disabled. + + Boolean + + + Limit + + The maximum number of open connections that a Real Server will accept before it is taken out of the rotation. This is only available for Layer 7 traffic. + + Int64 + + + Critical + + True or false to indicate whether this Real Server is required for the Virtual Service to be available. + + Boolean + + + Follow + + Specify what Real Server the health check is based on by setting this parameter to the RsIndex of the Real Server to be followed. This can either be set to the RsIndex of the same Real Server in order to health check based on that particular Real Server status, or another Real Server can be specified. For example – if Real Server 1 is down, any Real Servers which have their health check based on Real Server 1 will also be marked as down, regardless of their actual Real Server status. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The IP address of the Virtual Service. + + String + + String + + + + + + VSPort + + The port of the relevant Virtual Service. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + String + + + + + + VSIndex + + The index number of the Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + Int32 + + Int32 + + + + + + RealServer + + The IP address that the Real Server being defined listens on. + + String + + String + + + + + + RealServerPort + + The port that the Real Server will be listening on. + + Int32 + + Int32 + + + + + + RSIndex + + The index number of the Real Server to be modified. To retrieve the Real Server index, run the Get-VirtualService command. +If modifying the Real Server-specific parameters of a SubVS, such as critical, weight and limit, specify the RS index of the SubVS along with the Virtual Service parameters of the parent Virtual Service. + + Int32 + + Int32 + + + + + + NewPort + + Used to change the Real Server port to a new value. + + Int32 + + Int32 + + + + + + Weight + + The Real Server's weight. This is weight of the Real Server, as used by the Weighted Round Robin, Weighted Least Connection and Adaptive scheduling methods. The default initial value for the weight is 1000, the maximum is 65535 and the minimum is 1. + + Int32 + + Int32 + + + + + + Forward + + Either NAT (Network Address Translation) or Route (Direct) forwarding. The available options are dependent on the other modes configured for the service. + + String + + String + + + + + + Enable + + Specifies if the Real Server is enabled or disabled. Pass in a value of TRUE ($true) for enabled, and FALSE ($false) for disabled. + + Boolean + + Boolean + + + + + + Limit + + The maximum number of open connections that a Real Server will accept before it is taken out of the rotation. This is only available for Layer 7 traffic. + + Int64 + + Int64 + + + + + + Critical + + True or false to indicate whether this Real Server is required for the Virtual Service to be available. + + Boolean + + Boolean + + + + + + Follow + + Specify what Real Server the health check is based on by setting this parameter to the RsIndex of the Real Server to be followed. This can either be set to the RsIndex of the same Real Server in order to health check based on that particular Real Server status, or another Real Server can be specified. For example – if Real Server 1 is down, any Real Servers which have their health check based on Real Server 1 will also be marked as down, regardless of their actual Real Server status. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + The port that the Virtual Service is listening on. + + int32 + + int32 + + + + + + Protocol + + Specify if the service is using TCP or UDP protocols. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-AdcRealServer -Port 80 -Protocol tcp -RealServer 10.11.0.29 -RealServerPort 80 -VirtualService 10.11.0.199 -Enable $True -Forward route -Limit 100 -Weight 2000 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-AdcServiceHealth + + Allows you to set the values of the Service Check options. + + + + + Set + AdcServiceHealth + + + + Allows you to set the values of the Service Check options. + + + + Set-AdcServiceHealth + + CheckInterval + + Defined in seconds, this is the delay between health checks. This includes clusters and FQDNs. +Recommended and default value: 9 seconds +Valid values range from the <mininterval> (9) to the <maxinterval> (901). +The <mininterval> is RetryCount * ConnectTimeout + 1, that is, a value of 9 by default. +The <maxinterval> is 901 [because that is what 60 (maximum Timeout) * 15 (maximum RetryCount) + 1 is]. +You can manually set the CheckInterval to up to 120 seconds. The CheckInterval value may go above 120 if the ConnectTimeout and RetryCount parameters are configured with high enough values. +If the CheckInterval is above 120 seconds, you must adjust the ConnectTimeout and RetryCount values to modify the CheckInterval. + + Int16 + + + ConnectTimeout + + Defined in seconds, this is the allowed maximum wait time for a reply to a health check. +Range: 4-60 + + Int16 + + + RetryCount + + This is the consecutive number of times in which a health check must fail before it is marked down and removed from the load balancing pool. +Range: 2-15 + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdcServiceHealth + + CheckInterval + + Defined in seconds, this is the delay between health checks. This includes clusters and FQDNs. +Recommended and default value: 9 seconds +Valid values range from the <mininterval> (9) to the <maxinterval> (901). +The <mininterval> is RetryCount * ConnectTimeout + 1, that is, a value of 9 by default. +The <maxinterval> is 901 [because that is what 60 (maximum Timeout) * 15 (maximum RetryCount) + 1 is]. +You can manually set the CheckInterval to up to 120 seconds. The CheckInterval value may go above 120 if the ConnectTimeout and RetryCount parameters are configured with high enough values. +If the CheckInterval is above 120 seconds, you must adjust the ConnectTimeout and RetryCount values to modify the CheckInterval. + + Int16 + + + ConnectTimeout + + Defined in seconds, this is the allowed maximum wait time for a reply to a health check. +Range: 4-60 + + Int16 + + + RetryCount + + This is the consecutive number of times in which a health check must fail before it is marked down and removed from the load balancing pool. +Range: 2-15 + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + CheckInterval + + Defined in seconds, this is the delay between health checks. This includes clusters and FQDNs. +Recommended and default value: 9 seconds +Valid values range from the <mininterval> (9) to the <maxinterval> (901). +The <mininterval> is RetryCount * ConnectTimeout + 1, that is, a value of 9 by default. +The <maxinterval> is 901 [because that is what 60 (maximum Timeout) * 15 (maximum RetryCount) + 1 is]. +You can manually set the CheckInterval to up to 120 seconds. The CheckInterval value may go above 120 if the ConnectTimeout and RetryCount parameters are configured with high enough values. +If the CheckInterval is above 120 seconds, you must adjust the ConnectTimeout and RetryCount values to modify the CheckInterval. + + Int16 + + Int16 + + + + + + ConnectTimeout + + Defined in seconds, this is the allowed maximum wait time for a reply to a health check. +Range: 4-60 + + Int16 + + Int16 + + + + + + RetryCount + + This is the consecutive number of times in which a health check must fail before it is marked down and removed from the load balancing pool. +Range: 2-15 + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-AdcServiceHealth -RetryCount 3 -RetryInterval 10 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{AdcServiceHealth=} +CheckInterval : 121 +ConnectionTimeout : 60 +RetryCount : 2 + + + + + + + + + + + + + + + + + Set-AdcSubVirtualService + + Configure a SubVS. + + + + + Set + AdcSubVirtualService + + + + This command enables you to set specific settings on a SubVS. + + + + Set-AdcSubVirtualService + + SubVSIndex + + The ID number of the SubVS to configure. + + Int32 + + + AddVia + + Specifies which headers should be added to the HTTP stream. The parameter takes the following arguments: + 0 = Legacy Operation + 1 = X-Forwarded-For + 2 = None + 3 = X-Client-Side + 4 = X-Client-Side No Via + 5 = X-Forwarded-For No Via + 6 = Via Only + + Int16 + + + CheckType + + Specifies the protocol to use to check if the service is up. Valid options are "tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", +"imap", "rdp", "ldap" or "none". + + String + + + CheckHost + + The address to use to check if the service is up. + + String + + + CheckPattern + + A regular expression string that can be validate on a 200 reply to determine if the service is up. +Specify an empty value to unset CheckPattern. + + String + + + CheckUrl + + The URL to check if the service is up. The maximum character length for the CheckUrl parameter value is 126 characters. + + String + + + CheckHeaders + + Specify up to four additional headers/fields which will be sent with each health check request. Separate the pairs with a pipe, for example; +Host:xyc|UserAgent:prq. + + String + + + LdapEndpoint + + Specify the LDAP endpoint to use for health checks (if LDAP is selected as the CheckType). If LDAP is selected as the health check protocol, the server IP +address (or addresses) and ports from the LDAP endpoint configuration will be used instead of the Real Server IP address and port. + + String + + + MatchLen + + This parameter is only relevant when the CheckType is set to "bdata". Specify the number of bytes to find the CheckPattern within. + + String + + + CheckUse1_1 + + Specifies that the health checker use HTTP/1.1 instead of HTTP/1.0. + + Int32 + + + CheckPort + + The port to use to check if the service is up. +Specify 0 to unset CheckPort. + + Int32 + + + EnhancedHealthChecks + + Enables or disables Enhanced Health Check Options for the Virtual Service. + + Boolean + + + RsMinimum + + Specifies the minimum number of Real Servers that are required to be active for the Virtual Service to be considered up. + + Int32 + + + Cookie + + Specifies a cookie name. This parameter is only relevant when the persistence mode is set to "cookie", "active-cookie", "cookie-src" or "active-cook-src". + + String + + + Enable + + Enables or disables the Virtual Service. + + Boolean + + + ErrorCode + + If no Real Servers are available, the LoadMaster can terminate the connection with an HTTP error code. Specify the error code number in this parameter. + + String + + + ErrorUrl + + When no Real Servers are available and an error response is sent back to the client, a redirect URL can also be specified. + + String + + + PortFollow + + This parameter was depreciated as of 7.1-24. For LoadMasters with version 7.1-24 or higher, use the FollowVSID parameter to set port following. + + Int32 + + + ForceL7 + + Enabling ForceL7 means the Virtual Service runs at Layer 7 and not Layer 4. This may be needed for various reasons, including that only Layer 7 services can be non-transparent. + + Boolean + + + Idletime + + Specifies the length of time (in seconds) that a connection may remain idle before it is closed. The range for this parameter is 0 to 86400. 0 means indefinitely. + + Int32 + + + LocalBindAddresses + + Specifies a space-separated list of IP addresses. This corresponds to the Alternate Source Address in the Advanced Properties section of the WUI. Allow connections scaling over 64K Connections needs to be enabled in L7 Configuration for this feature to work. + + String[] + + + VSType + + Specifies the type of service being load balanced: +gen - Generic +http - HTTP/HTTPS +ts - Remote Terminal +tls – STARTTLS protocols +log – Log Insight + + String + + + Nickname + + Specifies the "friendly" name of the service. In addition to the usual alphanumeric characters, the following "special" characters can be used as part of the Service Name: +. @ - _ + However, there must be at least one alphanumeric character before the special characters. + + String + + + Persist + + Specifies the type of persistence (stickiness) to be used for this Virtual Service. + +The following persistence values are supported: ssl, cookie, active-cookie, cookie-src, active-cook-src, cookie-hash, cookie-hash-src, url, query-hash, host, header, super, super-src, src, rdp, rdp-src, rdp-sb, rdp-sb-src and none. + +Note: If setting the persistence mode to an option that requires a cookie (or query-hash), the cookie parameter must also be set. + + String + + + PersistTimeout + + The length of time (in seconds) after the last connection that the LoadMaster will remember the persistence information. Timeout values are rounded down to an even number of minutes. Setting a value that is not a number of whole minutes results in the excess being ignored. Setting a value to less than 60 seconds results in a value of 0 being set, which disables persistency. + + Int32 + + + QueryTag + + This is the query tag to be matched if the Persist type is set to query-hash. + + String + + + Schedule + + Specifies the type of scheduling of new connections to Real Servers that is to be performed. The following values are supported: +rr = round robin +wrr = weighted round robin +lc = least connection +wlc = weighted least connection +fixed = fixed weighting +adaptive = resource based (adaptive) +sh = source IP hash +dl = weighted response time +sdn-adaptive = resource based (SDN adaptive) + + String + + + ServerInit + + Specifies one of the following values: +0 - Normal Protocols +1 - SMTP +2 - SSH +3 - Other Server Initiating +4 - IMAP4 +5 - MySQL +6 - POP3 + + Int16 + + + StandByAddr + + Specifies the IP address of the "Sorry" server that is to be used when no other Real Servers are available. This server will not be health checked and is assumed to be always available. + + String + + + StandByPort + + Specifies the port of the "Sorry" server. + + String + + + TransactionLimit + + This is a legacy parameter that should no longer be used. It was used previously when the SSL proxy was limited to 6K total connections. The transaction limit was used to limit one Virtual Service to only handle so many connections out of this 6K. On newer systems, where the limit is greater than 64K - this feature is no longer required. + + Int32 + + + Transparent + + When using Layer 7, when this is enabled - the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent which means that the connections at the Real Server appear to come from the LoadMaster. + + Boolean + + + SubnetOriginating + + When transparency is not enabled, the source IP address of connections to the Real Servers is that of the Virtual Service. When transparency is enabled, the source IP address will be the IP address that is initiating connection to the Virtual Service. If the Real Server is on a subnet, and the Subnet Originating Requests option is enabled, then the subnet address of the LoadMaster will be used as the source IP address. + + Boolean + + + QoS + + Specifies the Quality of Service. The following values are supported: +0 - Normal-Service +1 - Minimize-Cost +2 - Maximize-Reliability +4 - Maximize-Throughput +8 - Minimize-Delay + + String + + + CheckUseGet + + When accessing the health check URL - the system can use the HEAD, the GET or the POST method: +0 - HEAD +1 - GET +2 - POST + + Int32 + + + Verify + + Specifies a verification bitmask. The valid values of the Verify parameter are as follows: +Bit 0: set this to 1 to enable detection intrusion. +Note: Bit 0 needs to be set to 1 in order to use the other two bits. +Bit 1: Determines whether to reject or drop a connection. Setting it to 1 will drop the connection. +Bit 2: Determines whether to give just warnings on bad requests or also on malicious (but not invalid) requests. +The following table lists the valid integers and the values they set the fields to when used: +Integer Detect Malicious Requests Intrusion Handling Warnings Checkbox +0 Disabled N/A N/A +1 Enabled Drop Connection Unchecked +2 Enabled Send Reject Unchecked +3 Enabled Send Reject Unchecked +4 Enabled Drop Connection Checked +5 Enabled Drop Connection Checked +6 Enabled Send Reject Checked +7 Enabled Send Reject Checked + + Int16 + + + ExtraHdrKey + + Specifies the key for the extra header to be inserted into every request sent to the Real Servers. + + String + + + ExtraHdrValue + + Specifies the value for the extra header to be inserted into every request sent to the Real Servers. + + String + + + AllowedHosts + + This parameter is only relevant when ESP is enabled. Specifies all the virtual hosts that can be accessed via this Virtual Service. + + String + + + AllowedDirectories + + This parameter is only relevant when ESP is enabled. Specifies all the virtual directories that can be accessed via this Virtual Service. + + String + + + AllowedGroups + + Specifies the groups that are allowed to access this Virtual Service. + + String + + + GroupSIDs + + Specify the group SID(s) that are allowed to access this Virtual Service. Multiple SIDs can be separating them with a semicolon. + + String + + + SteeringGroups + + Enter the Active Directory group names that will be used for steering traffic. Use a semi-colon to separate multiple group names. The steering group index number corresponds to the location of the group in this list. + + String + + + IncludeNestedGroups + + Specify if nested groups should be included in the authentication attempt. + + Boolean + + + DisplayPubPriv + + Display the public/private option on the login page. Based on the option the user selects on the login form, the session timeout value will be set to the +value specified for either the public or private timeout. + + Boolean + + + DisablePasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + Boolean + + + Domain + + Specifies the Single Sign On (SSO) domain in which this Virtual Service will operate. + + String + + + AltDomains + + Specifies alternative domains to be assigned to a Virtual Service when configuring multi-domain authentication. To specify multiple alternative domains use a space-separated list. + + String + + + Logoff + + This parameter is only relevant when ESP is enabled and when the Client Authentication Mode is set to Form Based. Specify the string that the LoadMaster should use to detect a logout event. Multiple logoff strings can be specified by using a space-separated list. + +If the URL to be matched contains sub-directories before the specified string, the Logoff String will not be matched. Therefore the LoadMaster will not log the user off. + + String + + + ESPLogs + + Enable ESP logging. Valid values are below: +0 - Logging off +1 - User Access +2 - Security +3 - User Access and Security +4 - Connection +5 - User Access and Connection +6 - Security and connection +7 - User Access, Security and Connection + +Note: The only valid values for SMTP services are 0 and 4. For SMTP services, security issues are always logged. Nothing is logged for user access because +there are no logins. + + Int16 + + + SMTPAllowedDomains + + Specifies all the permitted domains that are allowed to be received by this Virtual Service. + + String + + + ESPEnabled + + Specifies whether to enable or disable the Edge Security Pack (ESP) features. + + Boolean + + + UserPwdChangeUrl + + This is relevant when using form-based or LDAP authentication. Specify the URL that users can use to change their password. If a user’s password has expired, or if they must reset their password, this URL and the UserPwdChangeMsg is displayed on the login form. +This URL must be put into the exception list for authentication, if required. + + String + + + UserPwdChangeMsg + + This parameter is only relevant if the UserPwdChangeURL parameter is set. Specify the text to be displayed on the login form when the user must reset their password. + + String + + + SecurityHeaderOptions + + + + Int16 + + + InputAuthMode + + Specifies the client authentication method to be used: +0 - Delegate to Server +1 - Basic Authentication +2 - Form Based +3 - KCD +4 - Client Certificate +5 - NTLM + + Int16 + + + OutConf + + + + String + + + OutputAuthMode + + Specifies the server authentication mode to be used: +0 - None +1 - Basic Authentication +2 - KCD + + Int16 + + + StartTLSMode + + 0 - HTTP/HTTPS (the Service Type needs to be set to HTTP/HTTPS for this to work) + The Virtual Service Type must be set to STARTTLS for the remaining values to be set: +1 - SMTP (STARTTLS if requested) +2 - SMTP (STARTTLS always) +3 - FTP +4 - IMAP +6 - POP3 + + Int16 + + + MultiConnect + + Enabling this option permits the LoadMaster to manage connection handling between the LoadMaster and the Real Servers. Requests from multiple clients will be +sent over the same TCP connection. +Multiplexing only works for simple HTTP GET operations. This parameter cannot be enabled in certain situations, for example if WAF, ESP or SSL Acceleration is +enabled. + + Boolean + + + SingleSignOnDir + + This parameter relates to the SSO Image Set drop-down in the ESP Options section of the modify Virtual Service screen. Specify the name of the image set to be used for the login screen. If no image set is specified, the default Exchange image set will be used. + + String + + + OCSPVerify + + Specifies whether to verify (via Online Certificate Status Protocol (OCSP)) that the client certificate is valid. + + String + + + FollowVSID + + Specifies the ID of the Virtual Service to follow. + + Int32 + + + TlsType + + Specify which of the following protocols to support; SSLv3, TLS1.0, TLS1.1 or TLS1.2. By default, TLS1.1 and TLS1.2 are enabled. The protocols can be enabled +and disabled using a bitmask value. Refer to the table below to find out what number corresponds to which settings. + +Number.... SSLv3.... TLS1.0.... TLS1.1.... TLS1.2 +0......... Enabled.. Enabled... Enabled... Enabled +1......... Disabled. Enabled... Enabled... Enabled +2......... Enabled.. Disabled.. Enabled... Enabled +3......... Disabled. Disabled.. Enabled... Enabled +4......... Enabled.. Enabled... Disabled.. Enabled +5......... Disabled. Enabled... Disabled.. Enabled +6......... Enabled.. Disabled.. Disabled.. Enabled +7......... Disabled. Disabled.. Disabled.. Enabled +8......... Enabled.. Enabled... Enabled... Disabled +9......... Disabled. Enabled... Enabled... Disabled +10........ Enabled.. Disabled.. Enabled... Disabled +11........ Disabled. Disabled.. Enabled... Disabled +12........ Enabled.. Enabled... Disabled.. Disabled +13........ Disabled. Enabled... Disabled.. Disabled +14........ Enabled.. Disabled.. Disabled.. Disabled + + Int32 + + + CheckPostData + + This parameter is only relevant if the HTTP Method is set to POST. When using the POST method, up to 2047 characters of POST data can be sent to the server. + + String + + + CheckCodes + + A space-separated list of HTTP status codes that should be treated as successful when received from the Real Server. +Range: 300-599 + + String + + + PreProcPrecedence + + This parameter should be used in conjunction with PreProcPrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. This parameter relates to Content Matching Rules only. + + String + + + PreProcPrecedencePos + + This parameter, in conjunction with the PreProcPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. This parameter relates to the Content Matching Rules only. + + Int16 + + + RequestPrecedence + + This parameter should be used in conjunction with RequestPrecedencePos. This parameter is used to specify the name of the existing request rule whose position you wish to change. + This parameter relates to the following rule types: +Content Matching +Add Header +Delete Header +Replace Header +Modify URL + + String + + + RequestPrecedencePos + + This parameter, in conjunction with the RequestPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. + + Int16 + + + ResponsePrecedence + + This parameter should be used in conjunction with ResponsePrecedencePos. This parameter is used to specify the name of the existing response rule whose position you wish to change. + +This parameter relates to the following rule types: +Content Matching +Add Header +Delete Header +Replace Header + + String + + + ResponsePrecedencePos + + This parameter, in conjunction with the ResponsePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + RsRulePrecedence + + This parameter should be used in conjunction with RSRulePrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. + + String + + + RsRulePrecedencePos + + This parameter, in conjunction with the RSRulePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + NeedHostName + + When this parameter is enabled, the hostname is always required to be sent in the TLS client hello message. If it is not sent, the connection is dropped. +Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + CopyHdrFrom + + This is the name of the source header field to copy into the new header field before the request is sent to the Real Servers. + + String + + + CopyHdrTo + + This parameter is used in conjunction with the CopyHdrFrom parameter. +The name of the header field into which the source header is to be copied. + + String + + + ServerFbaPath + + Only relevant when using form-based authentication as the Server Authentication Mode (OutputAuthMode). Set the authentication path for server-side Form Based Authentication (FBA). When used in Exchange environments, this does not need to be set. + + String + + + ServerFbaPost + + Only relevant when using form-based authentication as the Server Athentication Mode (OutputAuthMode). Set the format string used to generate POST body for server side FBA. The value must be base64-encoded. +When used in Exchange environments, this does not need to be set. + + String + + + Intercept + + Enable or disable the Web Application Firewall (WAF) for this Virtual Service. + + Boolean + + + InterceptOpts + + Specifies Web Application Firewall (WAF) options for this Virtual Service. +The AFP InterceptOpts parameter is a special parameter – it can be used to set the value for multiple fields, rather than just one field as with most other parameters. The InterceptOpts parameter allows the specification of most of the fields in the WAF Options section of the Virtual Service modify screen in the LoadMaster WUI. +To enable WAF, set the Intercept parameter to 1. +The names of the specific WUI fields that the InterceptOpts parameter is related to, are listed in the table below. +One or more field values can be set in one command. Multiple values can be set in the one command by separating the values with a semi-colon. +The values that are related to the same WUI option are mutually exclusive. For example, you cannot set Basic Operation to both opnormal and opblock. +Value Related WUI Option Default Meaning +opnormal Default Operation Audit Only Set the Basic Operation to Audit Only +opblock Default Operation Audit Only Set the Basic Operation to Block Mode +auditnone Audit mode No Audit Set the Audit mode to No Audit. No data is logged. +auditrelevant Audit mode No Audit Set the Audit mode to Audit Relevant. Logs data which is of a warning level and higher. +auditall Audit mode No Audit Set the Audit mode to Audit All. Logs all data through the Virtual Service. +The Audit All option is not recommended for use in normal operation. Audit All should only be used when troubleshooting a specific problem. +reqdataenable Inspect HTML POST Request Content Disabled Enable the Inspect HTML POST Request Content option +reqdatadisable Inspect HTML POST Request Content Disabled Disable the Inspect HTML POST Request Content option +resdataenable Process Response Data Disabled Enable the Process Response Data option +resdatadisable Process Response Data Disabled Disable the Process Response Data option +jsondisable Disable JSON Parser Disabled Disable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +jsonenable Disable JSON Parser Disabled Enable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmldisable Disable XML Parser Disabled Disable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmlenable Disable XML Parser Disabled Enable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. + + String + + + InterceptRules + + Specifies Web Application Firewall (WAF) rules for this Virtual Service. + + String + + + AlertThreshold + + Specifies Web Application Firewall (WAF) alert threshold for this Virtual Service + + Int32 + + + Weight + + Specify the weight of this SubVS. + + Int32 + + + Limit + + The maximum number of connections that can be sent to this SubVS before it is taken out of rotation from the main Virtual Service (the maximum limit is 100000). + + Int64 + + + Critical + + Indicate that this SubVS is required for the Virtual Service to be available. + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdcSubVirtualService + + SubVSIndex + + The ID number of the SubVS to configure. + + Int32 + + + AddVia + + Specifies which headers should be added to the HTTP stream. The parameter takes the following arguments: + 0 = Legacy Operation + 1 = X-Forwarded-For + 2 = None + 3 = X-Client-Side + 4 = X-Client-Side No Via + 5 = X-Forwarded-For No Via + 6 = Via Only + + Int16 + + + CheckType + + Specifies the protocol to use to check if the service is up. Valid options are "tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", +"imap", "rdp", "ldap" or "none". + + String + + + CheckHost + + The address to use to check if the service is up. + + String + + + CheckPattern + + A regular expression string that can be validate on a 200 reply to determine if the service is up. +Specify an empty value to unset CheckPattern. + + String + + + CheckUrl + + The URL to check if the service is up. The maximum character length for the CheckUrl parameter value is 126 characters. + + String + + + CheckHeaders + + Specify up to four additional headers/fields which will be sent with each health check request. Separate the pairs with a pipe, for example; +Host:xyc|UserAgent:prq. + + String + + + LdapEndpoint + + Specify the LDAP endpoint to use for health checks (if LDAP is selected as the CheckType). If LDAP is selected as the health check protocol, the server IP +address (or addresses) and ports from the LDAP endpoint configuration will be used instead of the Real Server IP address and port. + + String + + + MatchLen + + This parameter is only relevant when the CheckType is set to "bdata". Specify the number of bytes to find the CheckPattern within. + + String + + + CheckUse1_1 + + Specifies that the health checker use HTTP/1.1 instead of HTTP/1.0. + + Int32 + + + CheckPort + + The port to use to check if the service is up. +Specify 0 to unset CheckPort. + + Int32 + + + EnhancedHealthChecks + + Enables or disables Enhanced Health Check Options for the Virtual Service. + + Boolean + + + RsMinimum + + Specifies the minimum number of Real Servers that are required to be active for the Virtual Service to be considered up. + + Int32 + + + Cookie + + Specifies a cookie name. This parameter is only relevant when the persistence mode is set to "cookie", "active-cookie", "cookie-src" or "active-cook-src". + + String + + + Enable + + Enables or disables the Virtual Service. + + Boolean + + + ErrorCode + + If no Real Servers are available, the LoadMaster can terminate the connection with an HTTP error code. Specify the error code number in this parameter. + + String + + + ErrorUrl + + When no Real Servers are available and an error response is sent back to the client, a redirect URL can also be specified. + + String + + + PortFollow + + This parameter was depreciated as of 7.1-24. For LoadMasters with version 7.1-24 or higher, use the FollowVSID parameter to set port following. + + Int32 + + + ForceL7 + + Enabling ForceL7 means the Virtual Service runs at Layer 7 and not Layer 4. This may be needed for various reasons, including that only Layer 7 services can be non-transparent. + + Boolean + + + Idletime + + Specifies the length of time (in seconds) that a connection may remain idle before it is closed. The range for this parameter is 0 to 86400. 0 means indefinitely. + + Int32 + + + LocalBindAddresses + + Specifies a space-separated list of IP addresses. This corresponds to the Alternate Source Address in the Advanced Properties section of the WUI. Allow connections scaling over 64K Connections needs to be enabled in L7 Configuration for this feature to work. + + String[] + + + VSType + + Specifies the type of service being load balanced: +gen - Generic +http - HTTP/HTTPS +ts - Remote Terminal +tls – STARTTLS protocols +log – Log Insight + + String + + + Nickname + + Specifies the "friendly" name of the service. In addition to the usual alphanumeric characters, the following "special" characters can be used as part of the Service Name: +. @ - _ + However, there must be at least one alphanumeric character before the special characters. + + String + + + Persist + + Specifies the type of persistence (stickiness) to be used for this Virtual Service. + +The following persistence values are supported: ssl, cookie, active-cookie, cookie-src, active-cook-src, cookie-hash, cookie-hash-src, url, query-hash, host, header, super, super-src, src, rdp, rdp-src, rdp-sb, rdp-sb-src and none. + +Note: If setting the persistence mode to an option that requires a cookie (or query-hash), the cookie parameter must also be set. + + String + + + PersistTimeout + + The length of time (in seconds) after the last connection that the LoadMaster will remember the persistence information. Timeout values are rounded down to an even number of minutes. Setting a value that is not a number of whole minutes results in the excess being ignored. Setting a value to less than 60 seconds results in a value of 0 being set, which disables persistency. + + Int32 + + + QueryTag + + This is the query tag to be matched if the Persist type is set to query-hash. + + String + + + Schedule + + Specifies the type of scheduling of new connections to Real Servers that is to be performed. The following values are supported: +rr = round robin +wrr = weighted round robin +lc = least connection +wlc = weighted least connection +fixed = fixed weighting +adaptive = resource based (adaptive) +sh = source IP hash +dl = weighted response time +sdn-adaptive = resource based (SDN adaptive) + + String + + + ServerInit + + Specifies one of the following values: +0 - Normal Protocols +1 - SMTP +2 - SSH +3 - Other Server Initiating +4 - IMAP4 +5 - MySQL +6 - POP3 + + Int16 + + + StandByAddr + + Specifies the IP address of the "Sorry" server that is to be used when no other Real Servers are available. This server will not be health checked and is assumed to be always available. + + String + + + StandByPort + + Specifies the port of the "Sorry" server. + + String + + + TransactionLimit + + This is a legacy parameter that should no longer be used. It was used previously when the SSL proxy was limited to 6K total connections. The transaction limit was used to limit one Virtual Service to only handle so many connections out of this 6K. On newer systems, where the limit is greater than 64K - this feature is no longer required. + + Int32 + + + Transparent + + When using Layer 7, when this is enabled - the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent which means that the connections at the Real Server appear to come from the LoadMaster. + + Boolean + + + SubnetOriginating + + When transparency is not enabled, the source IP address of connections to the Real Servers is that of the Virtual Service. When transparency is enabled, the source IP address will be the IP address that is initiating connection to the Virtual Service. If the Real Server is on a subnet, and the Subnet Originating Requests option is enabled, then the subnet address of the LoadMaster will be used as the source IP address. + + Boolean + + + QoS + + Specifies the Quality of Service. The following values are supported: +0 - Normal-Service +1 - Minimize-Cost +2 - Maximize-Reliability +4 - Maximize-Throughput +8 - Minimize-Delay + + String + + + CheckUseGet + + When accessing the health check URL - the system can use the HEAD, the GET or the POST method: +0 - HEAD +1 - GET +2 - POST + + Int32 + + + Verify + + Specifies a verification bitmask. The valid values of the Verify parameter are as follows: +Bit 0: set this to 1 to enable detection intrusion. +Note: Bit 0 needs to be set to 1 in order to use the other two bits. +Bit 1: Determines whether to reject or drop a connection. Setting it to 1 will drop the connection. +Bit 2: Determines whether to give just warnings on bad requests or also on malicious (but not invalid) requests. +The following table lists the valid integers and the values they set the fields to when used: +Integer Detect Malicious Requests Intrusion Handling Warnings Checkbox +0 Disabled N/A N/A +1 Enabled Drop Connection Unchecked +2 Enabled Send Reject Unchecked +3 Enabled Send Reject Unchecked +4 Enabled Drop Connection Checked +5 Enabled Drop Connection Checked +6 Enabled Send Reject Checked +7 Enabled Send Reject Checked + + Int16 + + + ExtraHdrKey + + Specifies the key for the extra header to be inserted into every request sent to the Real Servers. + + String + + + ExtraHdrValue + + Specifies the value for the extra header to be inserted into every request sent to the Real Servers. + + String + + + AllowedHosts + + This parameter is only relevant when ESP is enabled. Specifies all the virtual hosts that can be accessed via this Virtual Service. + + String + + + AllowedDirectories + + This parameter is only relevant when ESP is enabled. Specifies all the virtual directories that can be accessed via this Virtual Service. + + String + + + AllowedGroups + + Specifies the groups that are allowed to access this Virtual Service. + + String + + + GroupSIDs + + Specify the group SID(s) that are allowed to access this Virtual Service. Multiple SIDs can be separating them with a semicolon. + + String + + + SteeringGroups + + Enter the Active Directory group names that will be used for steering traffic. Use a semi-colon to separate multiple group names. The steering group index number corresponds to the location of the group in this list. + + String + + + IncludeNestedGroups + + Specify if nested groups should be included in the authentication attempt. + + Boolean + + + DisplayPubPriv + + Display the public/private option on the login page. Based on the option the user selects on the login form, the session timeout value will be set to the +value specified for either the public or private timeout. + + Boolean + + + DisablePasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + Boolean + + + Domain + + Specifies the Single Sign On (SSO) domain in which this Virtual Service will operate. + + String + + + AltDomains + + Specifies alternative domains to be assigned to a Virtual Service when configuring multi-domain authentication. To specify multiple alternative domains use a space-separated list. + + String + + + Logoff + + This parameter is only relevant when ESP is enabled and when the Client Authentication Mode is set to Form Based. Specify the string that the LoadMaster should use to detect a logout event. Multiple logoff strings can be specified by using a space-separated list. + +If the URL to be matched contains sub-directories before the specified string, the Logoff String will not be matched. Therefore the LoadMaster will not log the user off. + + String + + + ESPLogs + + Enable ESP logging. Valid values are below: +0 - Logging off +1 - User Access +2 - Security +3 - User Access and Security +4 - Connection +5 - User Access and Connection +6 - Security and connection +7 - User Access, Security and Connection + +Note: The only valid values for SMTP services are 0 and 4. For SMTP services, security issues are always logged. Nothing is logged for user access because +there are no logins. + + Int16 + + + SMTPAllowedDomains + + Specifies all the permitted domains that are allowed to be received by this Virtual Service. + + String + + + ESPEnabled + + Specifies whether to enable or disable the Edge Security Pack (ESP) features. + + Boolean + + + UserPwdChangeUrl + + This is relevant when using form-based or LDAP authentication. Specify the URL that users can use to change their password. If a user’s password has expired, or if they must reset their password, this URL and the UserPwdChangeMsg is displayed on the login form. +This URL must be put into the exception list for authentication, if required. + + String + + + UserPwdChangeMsg + + This parameter is only relevant if the UserPwdChangeURL parameter is set. Specify the text to be displayed on the login form when the user must reset their password. + + String + + + SecurityHeaderOptions + + + + Int16 + + + InputAuthMode + + Specifies the client authentication method to be used: +0 - Delegate to Server +1 - Basic Authentication +2 - Form Based +3 - KCD +4 - Client Certificate +5 - NTLM + + Int16 + + + OutConf + + + + String + + + OutputAuthMode + + Specifies the server authentication mode to be used: +0 - None +1 - Basic Authentication +2 - KCD + + Int16 + + + StartTLSMode + + 0 - HTTP/HTTPS (the Service Type needs to be set to HTTP/HTTPS for this to work) + The Virtual Service Type must be set to STARTTLS for the remaining values to be set: +1 - SMTP (STARTTLS if requested) +2 - SMTP (STARTTLS always) +3 - FTP +4 - IMAP +6 - POP3 + + Int16 + + + MultiConnect + + Enabling this option permits the LoadMaster to manage connection handling between the LoadMaster and the Real Servers. Requests from multiple clients will be +sent over the same TCP connection. +Multiplexing only works for simple HTTP GET operations. This parameter cannot be enabled in certain situations, for example if WAF, ESP or SSL Acceleration is +enabled. + + Boolean + + + SingleSignOnDir + + This parameter relates to the SSO Image Set drop-down in the ESP Options section of the modify Virtual Service screen. Specify the name of the image set to be used for the login screen. If no image set is specified, the default Exchange image set will be used. + + String + + + OCSPVerify + + Specifies whether to verify (via Online Certificate Status Protocol (OCSP)) that the client certificate is valid. + + String + + + FollowVSID + + Specifies the ID of the Virtual Service to follow. + + Int32 + + + TlsType + + Specify which of the following protocols to support; SSLv3, TLS1.0, TLS1.1 or TLS1.2. By default, TLS1.1 and TLS1.2 are enabled. The protocols can be enabled +and disabled using a bitmask value. Refer to the table below to find out what number corresponds to which settings. + +Number.... SSLv3.... TLS1.0.... TLS1.1.... TLS1.2 +0......... Enabled.. Enabled... Enabled... Enabled +1......... Disabled. Enabled... Enabled... Enabled +2......... Enabled.. Disabled.. Enabled... Enabled +3......... Disabled. Disabled.. Enabled... Enabled +4......... Enabled.. Enabled... Disabled.. Enabled +5......... Disabled. Enabled... Disabled.. Enabled +6......... Enabled.. Disabled.. Disabled.. Enabled +7......... Disabled. Disabled.. Disabled.. Enabled +8......... Enabled.. Enabled... Enabled... Disabled +9......... Disabled. Enabled... Enabled... Disabled +10........ Enabled.. Disabled.. Enabled... Disabled +11........ Disabled. Disabled.. Enabled... Disabled +12........ Enabled.. Enabled... Disabled.. Disabled +13........ Disabled. Enabled... Disabled.. Disabled +14........ Enabled.. Disabled.. Disabled.. Disabled + + Int32 + + + CheckPostData + + This parameter is only relevant if the HTTP Method is set to POST. When using the POST method, up to 2047 characters of POST data can be sent to the server. + + String + + + CheckCodes + + A space-separated list of HTTP status codes that should be treated as successful when received from the Real Server. +Range: 300-599 + + String + + + PreProcPrecedence + + This parameter should be used in conjunction with PreProcPrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. This parameter relates to Content Matching Rules only. + + String + + + PreProcPrecedencePos + + This parameter, in conjunction with the PreProcPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. This parameter relates to the Content Matching Rules only. + + Int16 + + + RequestPrecedence + + This parameter should be used in conjunction with RequestPrecedencePos. This parameter is used to specify the name of the existing request rule whose position you wish to change. + This parameter relates to the following rule types: +Content Matching +Add Header +Delete Header +Replace Header +Modify URL + + String + + + RequestPrecedencePos + + This parameter, in conjunction with the RequestPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. + + Int16 + + + ResponsePrecedence + + This parameter should be used in conjunction with ResponsePrecedencePos. This parameter is used to specify the name of the existing response rule whose position you wish to change. + +This parameter relates to the following rule types: +Content Matching +Add Header +Delete Header +Replace Header + + String + + + ResponsePrecedencePos + + This parameter, in conjunction with the ResponsePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + RsRulePrecedence + + This parameter should be used in conjunction with RSRulePrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. + + String + + + RsRulePrecedencePos + + This parameter, in conjunction with the RSRulePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + NeedHostName + + When this parameter is enabled, the hostname is always required to be sent in the TLS client hello message. If it is not sent, the connection is dropped. +Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + CopyHdrFrom + + This is the name of the source header field to copy into the new header field before the request is sent to the Real Servers. + + String + + + CopyHdrTo + + This parameter is used in conjunction with the CopyHdrFrom parameter. +The name of the header field into which the source header is to be copied. + + String + + + ServerFbaPath + + Only relevant when using form-based authentication as the Server Authentication Mode (OutputAuthMode). Set the authentication path for server-side Form Based Authentication (FBA). When used in Exchange environments, this does not need to be set. + + String + + + ServerFbaPost + + Only relevant when using form-based authentication as the Server Athentication Mode (OutputAuthMode). Set the format string used to generate POST body for server side FBA. The value must be base64-encoded. +When used in Exchange environments, this does not need to be set. + + String + + + Intercept + + Enable or disable the Web Application Firewall (WAF) for this Virtual Service. + + Boolean + + + InterceptOpts + + Specifies Web Application Firewall (WAF) options for this Virtual Service. +The AFP InterceptOpts parameter is a special parameter – it can be used to set the value for multiple fields, rather than just one field as with most other parameters. The InterceptOpts parameter allows the specification of most of the fields in the WAF Options section of the Virtual Service modify screen in the LoadMaster WUI. +To enable WAF, set the Intercept parameter to 1. +The names of the specific WUI fields that the InterceptOpts parameter is related to, are listed in the table below. +One or more field values can be set in one command. Multiple values can be set in the one command by separating the values with a semi-colon. +The values that are related to the same WUI option are mutually exclusive. For example, you cannot set Basic Operation to both opnormal and opblock. +Value Related WUI Option Default Meaning +opnormal Default Operation Audit Only Set the Basic Operation to Audit Only +opblock Default Operation Audit Only Set the Basic Operation to Block Mode +auditnone Audit mode No Audit Set the Audit mode to No Audit. No data is logged. +auditrelevant Audit mode No Audit Set the Audit mode to Audit Relevant. Logs data which is of a warning level and higher. +auditall Audit mode No Audit Set the Audit mode to Audit All. Logs all data through the Virtual Service. +The Audit All option is not recommended for use in normal operation. Audit All should only be used when troubleshooting a specific problem. +reqdataenable Inspect HTML POST Request Content Disabled Enable the Inspect HTML POST Request Content option +reqdatadisable Inspect HTML POST Request Content Disabled Disable the Inspect HTML POST Request Content option +resdataenable Process Response Data Disabled Enable the Process Response Data option +resdatadisable Process Response Data Disabled Disable the Process Response Data option +jsondisable Disable JSON Parser Disabled Disable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +jsonenable Disable JSON Parser Disabled Enable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmldisable Disable XML Parser Disabled Disable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmlenable Disable XML Parser Disabled Enable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. + + String + + + InterceptRules + + Specifies Web Application Firewall (WAF) rules for this Virtual Service. + + String + + + AlertThreshold + + Specifies Web Application Firewall (WAF) alert threshold for this Virtual Service + + Int32 + + + Weight + + Specify the weight of this SubVS. + + Int32 + + + Limit + + The maximum number of connections that can be sent to this SubVS before it is taken out of rotation from the main Virtual Service (the maximum limit is 100000). + + Int64 + + + Critical + + Indicate that this SubVS is required for the Virtual Service to be available. + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SubVSIndex + + The ID number of the SubVS to configure. + + Int32 + + Int32 + + + + + + AddVia + + Specifies which headers should be added to the HTTP stream. The parameter takes the following arguments: + 0 = Legacy Operation + 1 = X-Forwarded-For + 2 = None + 3 = X-Client-Side + 4 = X-Client-Side No Via + 5 = X-Forwarded-For No Via + 6 = Via Only + + Int16 + + Int16 + + + + + + CheckType + + Specifies the protocol to use to check if the service is up. Valid options are "tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", +"imap", "rdp", "ldap" or "none". + + String + + String + + + + + + CheckHost + + The address to use to check if the service is up. + + String + + String + + + + + + CheckPattern + + A regular expression string that can be validate on a 200 reply to determine if the service is up. +Specify an empty value to unset CheckPattern. + + String + + String + + + + + + CheckUrl + + The URL to check if the service is up. The maximum character length for the CheckUrl parameter value is 126 characters. + + String + + String + + + + + + CheckHeaders + + Specify up to four additional headers/fields which will be sent with each health check request. Separate the pairs with a pipe, for example; +Host:xyc|UserAgent:prq. + + String + + String + + + + + + LdapEndpoint + + Specify the LDAP endpoint to use for health checks (if LDAP is selected as the CheckType). If LDAP is selected as the health check protocol, the server IP +address (or addresses) and ports from the LDAP endpoint configuration will be used instead of the Real Server IP address and port. + + String + + String + + + + + + MatchLen + + This parameter is only relevant when the CheckType is set to "bdata". Specify the number of bytes to find the CheckPattern within. + + String + + String + + + + + + CheckUse1_1 + + Specifies that the health checker use HTTP/1.1 instead of HTTP/1.0. + + Int32 + + Int32 + + + + + + CheckPort + + The port to use to check if the service is up. +Specify 0 to unset CheckPort. + + Int32 + + Int32 + + + + + + EnhancedHealthChecks + + Enables or disables Enhanced Health Check Options for the Virtual Service. + + Boolean + + Boolean + + + + + + RsMinimum + + Specifies the minimum number of Real Servers that are required to be active for the Virtual Service to be considered up. + + Int32 + + Int32 + + + + + + Cookie + + Specifies a cookie name. This parameter is only relevant when the persistence mode is set to "cookie", "active-cookie", "cookie-src" or "active-cook-src". + + String + + String + + + + + + Enable + + Enables or disables the Virtual Service. + + Boolean + + Boolean + + + + + + ErrorCode + + If no Real Servers are available, the LoadMaster can terminate the connection with an HTTP error code. Specify the error code number in this parameter. + + String + + String + + + + + + ErrorUrl + + When no Real Servers are available and an error response is sent back to the client, a redirect URL can also be specified. + + String + + String + + + + + + PortFollow + + This parameter was depreciated as of 7.1-24. For LoadMasters with version 7.1-24 or higher, use the FollowVSID parameter to set port following. + + Int32 + + Int32 + + + + + + ForceL7 + + Enabling ForceL7 means the Virtual Service runs at Layer 7 and not Layer 4. This may be needed for various reasons, including that only Layer 7 services can be non-transparent. + + Boolean + + Boolean + + + + + + Idletime + + Specifies the length of time (in seconds) that a connection may remain idle before it is closed. The range for this parameter is 0 to 86400. 0 means indefinitely. + + Int32 + + Int32 + + + + + + LocalBindAddresses + + Specifies a space-separated list of IP addresses. This corresponds to the Alternate Source Address in the Advanced Properties section of the WUI. Allow connections scaling over 64K Connections needs to be enabled in L7 Configuration for this feature to work. + + String[] + + String[] + + + + + + VSType + + Specifies the type of service being load balanced: +gen - Generic +http - HTTP/HTTPS +ts - Remote Terminal +tls – STARTTLS protocols +log – Log Insight + + String + + String + + + + + + Nickname + + Specifies the "friendly" name of the service. In addition to the usual alphanumeric characters, the following "special" characters can be used as part of the Service Name: +. @ - _ + However, there must be at least one alphanumeric character before the special characters. + + String + + String + + + + + + Persist + + Specifies the type of persistence (stickiness) to be used for this Virtual Service. + +The following persistence values are supported: ssl, cookie, active-cookie, cookie-src, active-cook-src, cookie-hash, cookie-hash-src, url, query-hash, host, header, super, super-src, src, rdp, rdp-src, rdp-sb, rdp-sb-src and none. + +Note: If setting the persistence mode to an option that requires a cookie (or query-hash), the cookie parameter must also be set. + + String + + String + + + + + + PersistTimeout + + The length of time (in seconds) after the last connection that the LoadMaster will remember the persistence information. Timeout values are rounded down to an even number of minutes. Setting a value that is not a number of whole minutes results in the excess being ignored. Setting a value to less than 60 seconds results in a value of 0 being set, which disables persistency. + + Int32 + + Int32 + + + + + + QueryTag + + This is the query tag to be matched if the Persist type is set to query-hash. + + String + + String + + + + + + Schedule + + Specifies the type of scheduling of new connections to Real Servers that is to be performed. The following values are supported: +rr = round robin +wrr = weighted round robin +lc = least connection +wlc = weighted least connection +fixed = fixed weighting +adaptive = resource based (adaptive) +sh = source IP hash +dl = weighted response time +sdn-adaptive = resource based (SDN adaptive) + + String + + String + + + + + + ServerInit + + Specifies one of the following values: +0 - Normal Protocols +1 - SMTP +2 - SSH +3 - Other Server Initiating +4 - IMAP4 +5 - MySQL +6 - POP3 + + Int16 + + Int16 + + + + + + StandByAddr + + Specifies the IP address of the "Sorry" server that is to be used when no other Real Servers are available. This server will not be health checked and is assumed to be always available. + + String + + String + + + + + + StandByPort + + Specifies the port of the "Sorry" server. + + String + + String + + + + + + TransactionLimit + + This is a legacy parameter that should no longer be used. It was used previously when the SSL proxy was limited to 6K total connections. The transaction limit was used to limit one Virtual Service to only handle so many connections out of this 6K. On newer systems, where the limit is greater than 64K - this feature is no longer required. + + Int32 + + Int32 + + + + + + Transparent + + When using Layer 7, when this is enabled - the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent which means that the connections at the Real Server appear to come from the LoadMaster. + + Boolean + + Boolean + + + + + + SubnetOriginating + + When transparency is not enabled, the source IP address of connections to the Real Servers is that of the Virtual Service. When transparency is enabled, the source IP address will be the IP address that is initiating connection to the Virtual Service. If the Real Server is on a subnet, and the Subnet Originating Requests option is enabled, then the subnet address of the LoadMaster will be used as the source IP address. + + Boolean + + Boolean + + + + + + QoS + + Specifies the Quality of Service. The following values are supported: +0 - Normal-Service +1 - Minimize-Cost +2 - Maximize-Reliability +4 - Maximize-Throughput +8 - Minimize-Delay + + String + + String + + + + + + CheckUseGet + + When accessing the health check URL - the system can use the HEAD, the GET or the POST method: +0 - HEAD +1 - GET +2 - POST + + Int32 + + Int32 + + + + + + Verify + + Specifies a verification bitmask. The valid values of the Verify parameter are as follows: +Bit 0: set this to 1 to enable detection intrusion. +Note: Bit 0 needs to be set to 1 in order to use the other two bits. +Bit 1: Determines whether to reject or drop a connection. Setting it to 1 will drop the connection. +Bit 2: Determines whether to give just warnings on bad requests or also on malicious (but not invalid) requests. +The following table lists the valid integers and the values they set the fields to when used: +Integer Detect Malicious Requests Intrusion Handling Warnings Checkbox +0 Disabled N/A N/A +1 Enabled Drop Connection Unchecked +2 Enabled Send Reject Unchecked +3 Enabled Send Reject Unchecked +4 Enabled Drop Connection Checked +5 Enabled Drop Connection Checked +6 Enabled Send Reject Checked +7 Enabled Send Reject Checked + + Int16 + + Int16 + + + + + + ExtraHdrKey + + Specifies the key for the extra header to be inserted into every request sent to the Real Servers. + + String + + String + + + + + + ExtraHdrValue + + Specifies the value for the extra header to be inserted into every request sent to the Real Servers. + + String + + String + + + + + + AllowedHosts + + This parameter is only relevant when ESP is enabled. Specifies all the virtual hosts that can be accessed via this Virtual Service. + + String + + String + + + + + + AllowedDirectories + + This parameter is only relevant when ESP is enabled. Specifies all the virtual directories that can be accessed via this Virtual Service. + + String + + String + + + + + + AllowedGroups + + Specifies the groups that are allowed to access this Virtual Service. + + String + + String + + + + + + GroupSIDs + + Specify the group SID(s) that are allowed to access this Virtual Service. Multiple SIDs can be separating them with a semicolon. + + String + + String + + + + + + SteeringGroups + + Enter the Active Directory group names that will be used for steering traffic. Use a semi-colon to separate multiple group names. The steering group index number corresponds to the location of the group in this list. + + String + + String + + + + + + IncludeNestedGroups + + Specify if nested groups should be included in the authentication attempt. + + Boolean + + Boolean + + + + + + DisplayPubPriv + + Display the public/private option on the login page. Based on the option the user selects on the login form, the session timeout value will be set to the +value specified for either the public or private timeout. + + Boolean + + Boolean + + + + + + DisablePasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + Boolean + + Boolean + + + + + + Domain + + Specifies the Single Sign On (SSO) domain in which this Virtual Service will operate. + + String + + String + + + + + + AltDomains + + Specifies alternative domains to be assigned to a Virtual Service when configuring multi-domain authentication. To specify multiple alternative domains use a space-separated list. + + String + + String + + + + + + Logoff + + This parameter is only relevant when ESP is enabled and when the Client Authentication Mode is set to Form Based. Specify the string that the LoadMaster should use to detect a logout event. Multiple logoff strings can be specified by using a space-separated list. + +If the URL to be matched contains sub-directories before the specified string, the Logoff String will not be matched. Therefore the LoadMaster will not log the user off. + + String + + String + + + + + + ESPLogs + + Enable ESP logging. Valid values are below: +0 - Logging off +1 - User Access +2 - Security +3 - User Access and Security +4 - Connection +5 - User Access and Connection +6 - Security and connection +7 - User Access, Security and Connection + +Note: The only valid values for SMTP services are 0 and 4. For SMTP services, security issues are always logged. Nothing is logged for user access because +there are no logins. + + Int16 + + Int16 + + + + + + SMTPAllowedDomains + + Specifies all the permitted domains that are allowed to be received by this Virtual Service. + + String + + String + + + + + + ESPEnabled + + Specifies whether to enable or disable the Edge Security Pack (ESP) features. + + Boolean + + Boolean + + + + + + UserPwdChangeUrl + + This is relevant when using form-based or LDAP authentication. Specify the URL that users can use to change their password. If a user’s password has expired, or if they must reset their password, this URL and the UserPwdChangeMsg is displayed on the login form. +This URL must be put into the exception list for authentication, if required. + + String + + String + + + + + + UserPwdChangeMsg + + This parameter is only relevant if the UserPwdChangeURL parameter is set. Specify the text to be displayed on the login form when the user must reset their password. + + String + + String + + + + + + SecurityHeaderOptions + + + + Int16 + + Int16 + + + + + + InputAuthMode + + Specifies the client authentication method to be used: +0 - Delegate to Server +1 - Basic Authentication +2 - Form Based +3 - KCD +4 - Client Certificate +5 - NTLM + + Int16 + + Int16 + + + + + + OutConf + + + + String + + String + + + + + + OutputAuthMode + + Specifies the server authentication mode to be used: +0 - None +1 - Basic Authentication +2 - KCD + + Int16 + + Int16 + + + + + + StartTLSMode + + 0 - HTTP/HTTPS (the Service Type needs to be set to HTTP/HTTPS for this to work) + The Virtual Service Type must be set to STARTTLS for the remaining values to be set: +1 - SMTP (STARTTLS if requested) +2 - SMTP (STARTTLS always) +3 - FTP +4 - IMAP +6 - POP3 + + Int16 + + Int16 + + + + + + MultiConnect + + Enabling this option permits the LoadMaster to manage connection handling between the LoadMaster and the Real Servers. Requests from multiple clients will be +sent over the same TCP connection. +Multiplexing only works for simple HTTP GET operations. This parameter cannot be enabled in certain situations, for example if WAF, ESP or SSL Acceleration is +enabled. + + Boolean + + Boolean + + + + + + SingleSignOnDir + + This parameter relates to the SSO Image Set drop-down in the ESP Options section of the modify Virtual Service screen. Specify the name of the image set to be used for the login screen. If no image set is specified, the default Exchange image set will be used. + + String + + String + + + + + + OCSPVerify + + Specifies whether to verify (via Online Certificate Status Protocol (OCSP)) that the client certificate is valid. + + String + + String + + + + + + FollowVSID + + Specifies the ID of the Virtual Service to follow. + + Int32 + + Int32 + + + + + + TlsType + + Specify which of the following protocols to support; SSLv3, TLS1.0, TLS1.1 or TLS1.2. By default, TLS1.1 and TLS1.2 are enabled. The protocols can be enabled +and disabled using a bitmask value. Refer to the table below to find out what number corresponds to which settings. + +Number.... SSLv3.... TLS1.0.... TLS1.1.... TLS1.2 +0......... Enabled.. Enabled... Enabled... Enabled +1......... Disabled. Enabled... Enabled... Enabled +2......... Enabled.. Disabled.. Enabled... Enabled +3......... Disabled. Disabled.. Enabled... Enabled +4......... Enabled.. Enabled... Disabled.. Enabled +5......... Disabled. Enabled... Disabled.. Enabled +6......... Enabled.. Disabled.. Disabled.. Enabled +7......... Disabled. Disabled.. Disabled.. Enabled +8......... Enabled.. Enabled... Enabled... Disabled +9......... Disabled. Enabled... Enabled... Disabled +10........ Enabled.. Disabled.. Enabled... Disabled +11........ Disabled. Disabled.. Enabled... Disabled +12........ Enabled.. Enabled... Disabled.. Disabled +13........ Disabled. Enabled... Disabled.. Disabled +14........ Enabled.. Disabled.. Disabled.. Disabled + + Int32 + + Int32 + + + + + + CheckPostData + + This parameter is only relevant if the HTTP Method is set to POST. When using the POST method, up to 2047 characters of POST data can be sent to the server. + + String + + String + + + + + + CheckCodes + + A space-separated list of HTTP status codes that should be treated as successful when received from the Real Server. +Range: 300-599 + + String + + String + + + + + + PreProcPrecedence + + This parameter should be used in conjunction with PreProcPrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. This parameter relates to Content Matching Rules only. + + String + + String + + + + + + PreProcPrecedencePos + + This parameter, in conjunction with the PreProcPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. This parameter relates to the Content Matching Rules only. + + Int16 + + Int16 + + + + + + RequestPrecedence + + This parameter should be used in conjunction with RequestPrecedencePos. This parameter is used to specify the name of the existing request rule whose position you wish to change. + This parameter relates to the following rule types: +Content Matching +Add Header +Delete Header +Replace Header +Modify URL + + String + + String + + + + + + RequestPrecedencePos + + This parameter, in conjunction with the RequestPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. + + Int16 + + Int16 + + + + + + ResponsePrecedence + + This parameter should be used in conjunction with ResponsePrecedencePos. This parameter is used to specify the name of the existing response rule whose position you wish to change. + +This parameter relates to the following rule types: +Content Matching +Add Header +Delete Header +Replace Header + + String + + String + + + + + + ResponsePrecedencePos + + This parameter, in conjunction with the ResponsePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + Int16 + + + + + + RsRulePrecedence + + This parameter should be used in conjunction with RSRulePrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. + + String + + String + + + + + + RsRulePrecedencePos + + This parameter, in conjunction with the RSRulePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + Int16 + + + + + + NeedHostName + + When this parameter is enabled, the hostname is always required to be sent in the TLS client hello message. If it is not sent, the connection is dropped. +Valid values: +0 - Disabled +1 - Enabled + + Boolean + + Boolean + + + + + + CopyHdrFrom + + This is the name of the source header field to copy into the new header field before the request is sent to the Real Servers. + + String + + String + + + + + + CopyHdrTo + + This parameter is used in conjunction with the CopyHdrFrom parameter. +The name of the header field into which the source header is to be copied. + + String + + String + + + + + + ServerFbaPath + + Only relevant when using form-based authentication as the Server Authentication Mode (OutputAuthMode). Set the authentication path for server-side Form Based Authentication (FBA). When used in Exchange environments, this does not need to be set. + + String + + String + + + + + + ServerFbaPost + + Only relevant when using form-based authentication as the Server Athentication Mode (OutputAuthMode). Set the format string used to generate POST body for server side FBA. The value must be base64-encoded. +When used in Exchange environments, this does not need to be set. + + String + + String + + + + + + Intercept + + Enable or disable the Web Application Firewall (WAF) for this Virtual Service. + + Boolean + + Boolean + + + + + + InterceptOpts + + Specifies Web Application Firewall (WAF) options for this Virtual Service. +The AFP InterceptOpts parameter is a special parameter – it can be used to set the value for multiple fields, rather than just one field as with most other parameters. The InterceptOpts parameter allows the specification of most of the fields in the WAF Options section of the Virtual Service modify screen in the LoadMaster WUI. +To enable WAF, set the Intercept parameter to 1. +The names of the specific WUI fields that the InterceptOpts parameter is related to, are listed in the table below. +One or more field values can be set in one command. Multiple values can be set in the one command by separating the values with a semi-colon. +The values that are related to the same WUI option are mutually exclusive. For example, you cannot set Basic Operation to both opnormal and opblock. +Value Related WUI Option Default Meaning +opnormal Default Operation Audit Only Set the Basic Operation to Audit Only +opblock Default Operation Audit Only Set the Basic Operation to Block Mode +auditnone Audit mode No Audit Set the Audit mode to No Audit. No data is logged. +auditrelevant Audit mode No Audit Set the Audit mode to Audit Relevant. Logs data which is of a warning level and higher. +auditall Audit mode No Audit Set the Audit mode to Audit All. Logs all data through the Virtual Service. +The Audit All option is not recommended for use in normal operation. Audit All should only be used when troubleshooting a specific problem. +reqdataenable Inspect HTML POST Request Content Disabled Enable the Inspect HTML POST Request Content option +reqdatadisable Inspect HTML POST Request Content Disabled Disable the Inspect HTML POST Request Content option +resdataenable Process Response Data Disabled Enable the Process Response Data option +resdatadisable Process Response Data Disabled Disable the Process Response Data option +jsondisable Disable JSON Parser Disabled Disable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +jsonenable Disable JSON Parser Disabled Enable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmldisable Disable XML Parser Disabled Disable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmlenable Disable XML Parser Disabled Enable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. + + String + + String + + + + + + InterceptRules + + Specifies Web Application Firewall (WAF) rules for this Virtual Service. + + String + + String + + + + + + AlertThreshold + + Specifies Web Application Firewall (WAF) alert threshold for this Virtual Service + + Int32 + + Int32 + + + + + + Weight + + Specify the weight of this SubVS. + + Int32 + + Int32 + + + + + + Limit + + The maximum number of connections that can be sent to this SubVS before it is taken out of rotation from the main Virtual Service (the maximum limit is 100000). + + Int64 + + Int64 + + + + + + Critical + + Indicate that this SubVS is required for the Virtual Service to be available. + + Boolean + + Boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + AllowHTTP2 + + Enable HTTP2 for this Virtual Service. SSL Acceleration must be enabled before HTTP2 can be enabled. The Best Practices cipher set should be used when HTTP2 is enabled. + + boolean + + boolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-AdcSubVirtualService -SubVSIndex 3 -CheckType http + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{VS=} +Param........: @{Status=Down; Index=3; VSPort=0; Layer=7; Enable=Y; SSLReverse=N; SSLReencrypt=N; Intercept=N; InterceptOpts=; AlertThreshold=0; Transac +tionlimit=0; Transparent=N; SubnetOriginating=Y; ServerInit=0; StartTLSMode=0; Idletime=660; Cache=N; Compress=N; Verify=0; UseforSnat=N; ForceL4=N; For +ceL7=Y; MultiConnect=N; ClientCert=0; ErrorCode=0; CheckUse1.1=N; MatchLen=0; CheckUseGet=0; SSLRewrite=0; VStype=http; FollowVSID=0; Protocol=tcp; Sche +dule=rr; CheckType=http; PersistTimeout=0; CheckPort=0; NRules=0; NRequestRules=0; NResponseRules=0; NPreProcessRules=0; EspEnabled=N; InputAuthMode=0; +OutputAuthMode=0; MasterVS=0; MasterVSID=1; IsTransparent=2; AddVia=0; QoS=0; TlsType=0; NeedHostName=N; OCSPVerify=N; AllowHTTP2=N; EnhancedHealthCheck +s=N; RsMinimum=0; NumberOfRSs=0} + + + + + + + + + + + + + + + + + Set-AdcVirtualService + + Set options on a configured Virtual Service. + + + + + Set + AdcVirtualService + + + + Modifies the settings for a configured Virtual Service. + + + + Set-AdcVirtualService + + VirtualService + + The IP address for the Virtual Service. + + String + + + VSPort + + The port for the Virtual Service. +The port parameter is used to assign a port when initially creating a Virtual Service. If modifying the port of an existing Virtual Service, specify the existing port as the Port parameter and use the VSPort parameter to assign the new port. +The reason why these must be separate parameters is because you need to specify what the port of the existing Virtual Service is (because there may be another Virtual Service with the same IP address but a different port) and if you want to change the port, a second port parameter (VSPort) is needed to specify the new port value. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The index number of the Virtual Service. + + Int32 + + + AddVia + + Specifies which headers are added to the HTTP stream. Choose the number of the option to use. + 0 - Legacy Operation(XXX) +1 - None +2 - X-Forwarded-For +3 - X-Forwarded-For (No Via) +4 - X-ClientSide +5 - X-ClientSide (No Via) +6 - Via Only + + Int16 + + + Cache + + Enables or disables caching on this Virtual Service. + + Boolean + + + CertFile + + Specifies the name of the certificate file to use that is already installed on the load balancer. Note: This will NOT upload a certificate file to the load balancer. + + String + + + CheckType + + Specifies the protocol to use to check if the service is up. Valid options are "tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", "ldap" or "none". + + String + + + CheckHost + + The address to use to check if the service is up. + + String + + + CheckPattern + + A regular expression string that can be validate on a 200 reply to determine if the service is up. +Specify an empty value to unset CheckPattern. + + String + + + CheckUrl + + The URL to check if the service is up. The maximum character length for the CheckUrl parameter value is 126 characters. + + String + + + CheckHeaders + + Specify up to four additional headers/fields which will be sent with each health check request. Separate the pairs with a pipe, for example; Host:xyc|UserAgent:prq. + + String + + + LdapEndpoint + + Specify the LDAP endpoint to use for health checks (if LDAP is selected as the CheckType). If LDAP is selected as the health check protocol, the server IP address (or addresses) and ports from the LDAP endpoint configuration will be used instead of the Real Server IP address and port. + + String + + + MatchLen + + This parameter is only relevant when the CheckType is set to "bdata". Specify the number of bytes to find the CheckPattern within. + + String + + + CheckUse1_1 + + Specifies that the health checker use HTTP/1.1 instead of HTTP/1.0. +0 - HTTP/1.0 +1 - HTTP/1.1 + + Int32 + + + CheckPort + + The port to use to check if the service is up. +Specify 0 to unset CheckPort. + + Int32 + + + EnhancedHealthChecks + + Enables or disables Enhanced Health Check Options for the Virtual Service. + + Boolean + + + RsMinimum + + Specifies the minimum number of Real Servers that are required to be active for the Virtual Service to be considered up. + + Int32 + + + ClientCert + + Specify how client certificates should be used. Valid values are 0, 1, or 2. Zero indicates that client certificates are not use. One indicates that client certificates are required. Two indicates that client certificates are required and additional HEAD information is being sent. + + Int16 + + + Compress + + Enable or disable file compression for the Virtual Service. + + Boolean + + + Cookie + + Specifies a cookie name. This parameter is only relevant when the persistence mode is set to "cookie", "active-cookie", "cookie-src" or "active-cook-src". + + String + + + CachePercent + + Specifies the maximum cache usage for this virtual service. + Note: Setting two Virtual Services using 50% of cache will use 100% of all cache storage. This parameter accepts values from 0 to 100. + + Int16 + + + DefaultGW + + Specifies a Virtual Service-specific default gateway to be used to send responses back to clients. If not set, the global default gateway will be used. + + String + + + Enable + + Enables or disables the Virtual Service. + + Boolean + + + ErrorCode + + If no Real Servers are available, the LoadMaster can terminate the connection with an HTTP error code. Specify the error code number in this parameter. + + String + + + ErrorUrl + + When no Real Servers are available and an error response is sent back to the client, a redirect URL can also be specified. + + String + + + PortFollow + + This parameter was depreciated as of 7.1-24. For LoadMasters with version 7.1-24 or higher, use the FollowVSID parameter to set port following. + + Int32 + + + ForceL7 + + Enabling ForceL7 means the Virtual Service runs at Layer 7 and not Layer 4. This may be needed for various reasons, including that only Layer 7 services can be non-transparent. + + Boolean + + + Idletime + + Specifies the length of time (in seconds) that a connection may remain idle before it is closed. The range for this parameter is 0 to 86400. There are some special values that can be set for this parameter: +- 0: Ensures the default L7 connection timeout is used. The default timeout value can be modified by setting the conntimeout parameter. +- 1: Discards the connection after the packet is first forwarded – a response is not expected or handled. +- 2: Uses a DNS-type of operation. The connection is dropped after the reply message. +Setting it to 1 or 2 enables better performance and memory usage for UDP connections and they correspond better to how UDP is used. + + Int32 + + + LocalBindAddresses + + Specifies a space-separated list of IP addresses. This corresponds to the Alternate Source Address in the Advanced Properties section of the WUI. Allow connections scaling over 64K Connections needs to be enabled in L7 Configuration for this feature to work. + + String[] + + + VSType + + Specifies the type of service being load balanced: + gen - Generic +http - HTTP/HTTPS +ts - Remote Terminal +tls – STARTTLS protocols +log – Log Insight + + String + + + Nickname + + Specifies the "friendly" name of the service. In addition to the usual alphanumeric characters, the following "special" characters can be used as part of the Service Name: + . @ - _ + However, there must be at least one alphanumeric character before the special characters. + + String + + + Persist + + Specifies the type of persistence (stickiness) to be used for this Virtual Service. + The following persistence values are supported: ssl, cookie, active-cookie, cookie-src, active-cook-src, cookie-hash, cookie-hash-src, url, query-hash, host, header, super, super-src, src, rdp, rdp-src, rdp-sb, rdp-sb-src, udpsip and none. + Note: If setting the persistence mode to an option that requires a cookie (or query-hash), the cookie parameter must also be set. + + String + + + PersistTimeout + + The length of time (in seconds) after the last connection that the LoadMaster will remember the persistence information. Timeout values are rounded down to an even number of minutes. Setting a value that is not a number of whole minutes results in the excess being ignored. Setting a value to less than 60 seconds results in a value of 0 being set, which disables persistency. + + Int32 + + + QueryTag + + This is the query tag to be matched if the Persist type is set to query-hash. + + String + + + CipherSet + + Specifies a cipher set name. + + String + + + SSLReencrypt + + This parameter is only relevant if SSL Acceleration is enabled. When this option is enabled, the SSL data stream is re-encrypted before sending to the Real Server. + + Boolean + + + SSLReverse + + Enabling this parameter means that the data from the LoadMaster to the Real Server is re-encrypted. + + Boolean + + + SSLRewrite + + When the Real Server rejects a request with an HTTP redirect, the requesting Location URL may need to be converted to specify HTTPS instead of HTTP (and vice versa). + + String + + + ReverseSNIHostname + + If this option is enabled, the host name is required to be sent in the TLS client hello message. If it is not sent the connection will be dropped. + + String + + + Schedule + + Specifies the type of scheduling of new connections to Real Servers that is to be performed. The following values are supported: + rr = round robin +wrr = weighted round robin +lc = least connection +wlc = weighted least connection +fixed = fixed weighting +adaptive = resource based (adaptive) +sh = source IP hash +dl = weighted response time +sdn-adaptive = resource based (SDN adaptive) + + String + + + ServerInit + + Specifies one of the following values: + 0 - Normal Protocols +1 - SMTP +2 - SSH +3 - Other Server Initiating +4 - IMAP4 +5 - MySQL +6 - POP3 + + Int16 + + + SSLAcceleration + + Specifies whether to enable SSL handling on the Virtual Service. + + Boolean + + + StandByAddr + + Specifies the IP address of the "Sorry" server that is to be used when no other Real Servers are available. This server will not be health checked and is assumed to be always available. + + String + + + StandByPort + + Specifies the port of the "Sorry" server. + + String + + + TransactionLimit + + This is a legacy parameter that should no longer be used. It was used previously when the SSL proxy was limited to 6K total connections. The transaction limit was used to limit one Virtual Service to only handle so many connections out of this 6K. On newer systems, where the limit is greater than 64K - this feature is no longer required. + + Int32 + + + Transparent + + When using Layer 7, when this is enabled - the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent, which means that the connections at the Real Server appear to come from the LoadMaster. +0 - Disabled +1 - Enabled +If a Virtual Service (with or without a SubVS) has SSL re-encrypt enabled, the transparency flag of the Virtual Service has no meaning (re-encryption forces transparency to be off). The transparency setting can still be modified by the API, and is honored when re-encrypt is disabled on the Virtual Service. + + Boolean + + + SubnetOriginating + + When transparency is not enabled, the source IP address of connections to the Real Servers is that of the Virtual Service. When transparency is enabled, the source IP address will be the IP address that is initiating connection to the Virtual Service. If the Real Server is on a subnet, and the Subnet Originating Requests option is enabled, then the subnet address of the LoadMaster will be used as the source IP address. + + Boolean + + + UseforSnat + + By default, when the LoadMaster is being used to NAT Real Servers, the source IP address used on the Internet is that of the LoadMaster. Enabling this option allows the Real Servers configured to use the Virtual Service as the source IP address instead. If the Real Servers are configured on more than one Virtual Service which has this option set, only connections to destination port 80 will use this Virtual Service as the source IP address. + + Boolean + + + QoS + + Specifies the Quality of Service. The following values are supported: + 0 - Normal-Service +1 - Minimize-Cost +2 - Maximize-Reliability +4 - Maximize-Throughput +8 - Minimize-Delay + + String + + + CheckUseGet + + When accessing the health check URL - the system can use the HEAD, the GET or the POST method: + 0 - HEAD +1 - GET +2 - POST + + Int32 + + + Verify + + Specifies a verification bitmask. The valid values of the Verify parameter are as follows: + Bit 0: set this to 1 to enable detection intrusion. + Note: Bit 0 needs to be set to 1 in order to use the other two bits. + Bit 1: Determines whether to reject or drop a connection. Setting it to 1 will drop the connection. + Bit 2: Determines whether to give just warnings on bad requests or also on malicious (but not invalid) requests. + The following table lists the valid integers and the values they set the fields to when used: +Integer Detect Malicious Requests Intrusion Handling Warnings Checkbox +0 Disabled N/A N/A +1 Enabled Drop Connection Unchecked +2 Enabled Send Reject Unchecked +3 Enabled Send Reject Unchecked +4 Enabled Drop Connection Checked +5 Enabled Drop Connection Checked +6 Enabled Send Reject Checked +7 Enabled Send Reject Checked + + Int16 + + + ExtraHdrKey + + Specifies the key for the extra header to be inserted into every request sent to the Real Servers. + + String + + + ExtraHdrValue + + Specifies the value for the extra header to be inserted into every request sent to the Real Servers. + + String + + + AllowedHosts + + This parameter is only relevant when ESP is enabled. Specifies all the virtual hosts that can be accessed via this Virtual Service. + + String + + + AllowedDirectories + + This parameter is only relevant when ESP is enabled. Specifies all the virtual directories that can be accessed via this Virtual Service. + + String + + + AllowedGroups + + Specifies the groups that are allowed to access this Virtual Service. + + String + + + GroupSIDs + + Specify the group security identifiers (SIDs) that are allowed to access this Virtual Service. Each group must be separated by a semicolon. + + String + + + SteeringGroups + + Enter the Active Directory group names that will be used for steering traffic. Use a semi-colon to separate multiple group names. The steering group index number corresponds to the location of the group in this list. + + String + + + IncludeNestedGroups + + Specify if nested groups should be included in the authentication attempt. + + Boolean + + + DisplayPubPriv + + Display the public/private option on the login page. Based on the option the user selects on the login form, the session timeout value will be set to the value specified for either the public or private timeout. + + Boolean + + + DisablePasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + Boolean + + + Domain + + Specifies the Single Sign On (SSO) domain in which this Virtual Service will operate. + + String + + + AltDomains + + Specifies alternative domains to be assigned to a Virtual Service when configuring multi-domain authentication. To specify multiple alternative domains use a space-separated list. + + String + + + Logoff + + This parameter is only relevant when ESP is enabled and when the Client Authentication Mode is set to Form Based. Specify the string that the LoadMaster should use to detect a logout event. Multiple logoff strings can be specified by using a space-separated list. + If the URL to be matched contains sub-directories before the specified string, the Logoff String will not be matched. Therefore the LoadMaster will not log the user off. + + String + + + ESPLogs + + Enable ESP logging. Valid values are below: + 0 - Logging off +1 - User Access +2 - Security +3 - User Access and Security +4 - Connection +5 - User Access and Connection +6 - Security and connection +7 - User Access, Security and Connection + Note: The only valid values for SMTP services are 0 and 4. For SMTP services, security issues are always logged. Nothing is logged for user access because there are no logins. + + Int16 + + + SMTPAllowedDomains + + Specifies all the permitted domains that are allowed to be received by this Virtual Service. + + String + + + ESPEnabled + + Specifies whether to enable or disable the Edge Security Pack (ESP) features. + + Boolean + + + UserPwdChangeUrl + + This is relevant when using form-based LDAP authentication. Specify the URL that users can use to change their password. If a user’s password has expired, or if they must reset their password, this URL and the UserPwdChangeMsg is displayed on the login form. +This URL must be put into the exception list for authentication, if required. + + String + + + UserPwdChangeMsg + + This parameter is only relevant if the UserPwdChangeURL parameter is set. Specify the text to be displayed on the login form when the user must reset their password. + + String + + + SecurityHeaderOptions + + Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). +0 - Don't add the Strict Transport Security Header (default value) +1 - Add the Strict Transport Security Header - no subdomains +2 - Add the Strict Transport Security Header - include subdomains Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). + + Int16 + + + InputAuthMode + + Specifies the client authentication method to be used: + 0 - Delegate to Server +1 - Basic Authentication +2 - Form Based +4 - Client Certificate +5 - NTLM +6 - SAML + + Int16 + + + OutConf + + + + String + + + OutputAuthMode + + Specifies the server authentication mode to be used: + 0 - None +1 - Basic Authentication +2 - Form Based +3 - KCD + + Int16 + + + StartTLSMode + + 0 - HTTP/HTTPS (the Service Type needs to be set to HTTP/HTTPS for this to work) + The Virtual Service Type must be set to STARTTLS for the remaining values to be set: + 1 - SMTP (STARTTLS if requested) +2 - SMTP (STARTTLS always) +3 - FTP +4 - IMAP +6 - POP3 + + Int16 + + + ExtraPorts + + Specifies extra ports that the Virtual Service will listen to. + + String + + + AltAddress + + Specifies the alternate address for this Virtual Service. + + String + + + MultiConnect + + Enabling this option permits the LoadMaster to manage connection handling between the LoadMaster and the Real Servers. Requests from multiple clients will be sent over the same TCP connection. + Multiplexing only works for simple HTTP GET operations. This parameter cannot be enabled in certain situations, for example if WAF, ESP or SSL Acceleration is enabled. + + Boolean + + + SingleSignOnDir + + This parameter relates to the SSO Image Set drop-down in the ESP Options section of the modify Virtual Service screen. Specify the name of the image set to be used for the login screen. If no image set is specified, the default Exchange image set will be used. + + String + + + OCSPVerify + + Specifies whether to verify (via Online Certificate Status Protocol (OCSP)) that the client certificate is valid. + + String + + + FollowVSID + + Specifies the ID of the Virtual Service to follow. + + Int32 + + + TlsType + + Specify which of the following protocols to support; SSLv3, TLS1.0, TLS1.1 or TLS1.2. By default, TLS1.1 and TLS1.2 are enabled. The protocols can be enabled and disabled using a bitmask value. Refer to the table below to find out what number corresponds to which settings. + Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + + Int32 + + + CheckPostData + + This parameter is only relevant if the HTTP Method is set to POST. When using the POST method, up to 2047 characters of POST data can be sent to the server. + + String + + + CheckCodes + + A space-separated list of HTTP status codes that should be treated as successful when received from the Real Server. +Range: 300-599 + + String + + + PreProcPrecedence + + This parameter should be used in conjunction with PreProcPrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. This parameter relates to Content Matching Rules only. + + String + + + PreProcPrecedencePos + + This parameter, in conjunction with the PreProcPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. This parameter relates to the Content Matching Rules only. + + Int16 + + + RequestPrecedence + + This parameter should be used in conjunction with RequestPrecedencePos. This parameter is used to specify the name of the existing request rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header +Modify URL + + String + + + RequestPrecedencePos + + This parameter, in conjunction with the RequestPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. + + Int16 + + + ResponsePrecedence + + This parameter should be used in conjunction with ResponsePrecedencePos. This parameter is used to specify the name of the existing response rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header + + String + + + ResponsePrecedencePos + + This parameter, in conjunction with the ResponsePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + RsRulePrecedence + + This parameter should be used in conjunction with RSRulePrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. + + String + + + RsRulePrecedencePos + + This parameter, in conjunction with the RSRulePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + NeedHostName + + When this parameter is enabled, the hostname is always required to be sent in the TLS client hello message. If it is not sent, the connection is dropped. +Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + CopyHdrFrom + + This is the name of the source header field to copy into the new header field before the request is sent to the Real Servers. + + String + + + CopyHdrTo + + This parameter is used in conjunction with the CopyHdrFrom parameter. +The name of the header field into which the source header is to be copied. + + String + + + ServerFbaPath + + Only relevant when using form-based authentication as the Server Authentication Mode (OutputAuthMode). Set the authentication path for server-side Form Based Authentication (FBA). When used in Exchange environments, this does not need to be set. + + String + + + ServerFbaPost + + Only relevant when using form-based authentication as the Server Athentication Mode (OutputAuthMode). Set the format string used to generate POST body for server side FBA. The value must be base64-encoded. +When used in Exchange environments, this does not need to be set. + + String + + + Intercept + + Enable or disable the Web Application Firewall (WAF) for this Virtual Service. + + Boolean + + + AllowHTTP2 + + Enable HTTP2 for this Virtual Service. SSL Acceleration must be enabled before HTTP2 can be enabled. The Best Practices cipher set should be used when HTTP2 is enabled. + + Boolean + + + InterceptOpts + + Specifies Web Application Firewall (WAF) options for this Virtual Service. +The AFP InterceptOpts parameter is a special parameter – it can be used to set the value for multiple fields, rather than just one field as with most other parameters. The InterceptOpts parameter allows the specification of most of the fields in the WAF Options section of the Virtual Service modify screen in the LoadMaster WUI. +To enable WAF, set the Intercept parameter to 1. +The names of the specific WUI fields that the InterceptOpts parameter is related to, are listed in the table below. + One or more field values can be set in one command. Multiple values can be set in the one command by separating the values with a semi-colon. +The values that are related to the same WUI option are mutually exclusive. For example, you cannot set Basic Operation to both opnormal and opblock. + Value Related WUI Option Default Meaning +opnormal Default Operation Audit Only Set the Basic Operation to Audit Only +opblock Default Operation Audit Only Set the Basic Operation to Block Mode +auditnone Audit mode No Audit Set the Audit mode to No Audit. No data is logged. +auditrelevant Audit mode No Audit Set the Audit mode to Audit Relevant. Logs data which is of a warning level and higher. +auditall Audit mode No Audit Set the Audit mode to Audit All. Logs all data through the Virtual Service. +The Audit All option is not recommended for use in normal operation. Audit All should only be used when troubleshooting a specific problem. +reqdataenable Inspect HTML POST Request Content Disabled Enable the Inspect HTML POST Request Content option +reqdatadisable Inspect HTML POST Request Content Disabled Disable the Inspect HTML POST Request Content option +resdataenable Process Response Data Disabled Enable the Process Response Data option +resdatadisable Process Response Data Disabled Disable the Process Response Data option +jsondisable Disable JSON Parser Disabled Disable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +jsonenable Disable JSON Parser Disabled Enable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmldisable Disable XML Parser Disabled Disable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmlenable Disable XML Parser Disabled Enable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. + + String + + + InterceptRules + + Specifies Web Application Firewall (WAF) rules for this Virtual Service. + + String + + + AlertThreshold + + Specifies Web Application Firewall (WAF) alert threshold for this Virtual Service. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdcVirtualService + + VirtualService + + The IP address for the Virtual Service. + + String + + + VSPort + + The port for the Virtual Service. +The port parameter is used to assign a port when initially creating a Virtual Service. If modifying the port of an existing Virtual Service, specify the existing port as the Port parameter and use the VSPort parameter to assign the new port. +The reason why these must be separate parameters is because you need to specify what the port of the existing Virtual Service is (because there may be another Virtual Service with the same IP address but a different port) and if you want to change the port, a second port parameter (VSPort) is needed to specify the new port value. + + Int32 + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + + VSIndex + + The index number of the Virtual Service. + + Int32 + + + AddVia + + Specifies which headers are added to the HTTP stream. Choose the number of the option to use. + 0 - Legacy Operation(XXX) +1 - None +2 - X-Forwarded-For +3 - X-Forwarded-For (No Via) +4 - X-ClientSide +5 - X-ClientSide (No Via) +6 - Via Only + + Int16 + + + Cache + + Enables or disables caching on this Virtual Service. + + Boolean + + + CertFile + + Specifies the name of the certificate file to use that is already installed on the load balancer. Note: This will NOT upload a certificate file to the load balancer. + + String + + + CheckType + + Specifies the protocol to use to check if the service is up. Valid options are "tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", "ldap" or "none". + + String + + + CheckHost + + The address to use to check if the service is up. + + String + + + CheckPattern + + A regular expression string that can be validate on a 200 reply to determine if the service is up. +Specify an empty value to unset CheckPattern. + + String + + + CheckUrl + + The URL to check if the service is up. The maximum character length for the CheckUrl parameter value is 126 characters. + + String + + + CheckHeaders + + Specify up to four additional headers/fields which will be sent with each health check request. Separate the pairs with a pipe, for example; Host:xyc|UserAgent:prq. + + String + + + LdapEndpoint + + Specify the LDAP endpoint to use for health checks (if LDAP is selected as the CheckType). If LDAP is selected as the health check protocol, the server IP address (or addresses) and ports from the LDAP endpoint configuration will be used instead of the Real Server IP address and port. + + String + + + MatchLen + + This parameter is only relevant when the CheckType is set to "bdata". Specify the number of bytes to find the CheckPattern within. + + String + + + CheckUse1_1 + + Specifies that the health checker use HTTP/1.1 instead of HTTP/1.0. +0 - HTTP/1.0 +1 - HTTP/1.1 + + Int32 + + + CheckPort + + The port to use to check if the service is up. +Specify 0 to unset CheckPort. + + Int32 + + + EnhancedHealthChecks + + Enables or disables Enhanced Health Check Options for the Virtual Service. + + Boolean + + + RsMinimum + + Specifies the minimum number of Real Servers that are required to be active for the Virtual Service to be considered up. + + Int32 + + + ClientCert + + Specify how client certificates should be used. Valid values are 0, 1, or 2. Zero indicates that client certificates are not use. One indicates that client certificates are required. Two indicates that client certificates are required and additional HEAD information is being sent. + + Int16 + + + Compress + + Enable or disable file compression for the Virtual Service. + + Boolean + + + Cookie + + Specifies a cookie name. This parameter is only relevant when the persistence mode is set to "cookie", "active-cookie", "cookie-src" or "active-cook-src". + + String + + + CachePercent + + Specifies the maximum cache usage for this virtual service. + Note: Setting two Virtual Services using 50% of cache will use 100% of all cache storage. This parameter accepts values from 0 to 100. + + Int16 + + + DefaultGW + + Specifies a Virtual Service-specific default gateway to be used to send responses back to clients. If not set, the global default gateway will be used. + + String + + + Enable + + Enables or disables the Virtual Service. + + Boolean + + + ErrorCode + + If no Real Servers are available, the LoadMaster can terminate the connection with an HTTP error code. Specify the error code number in this parameter. + + String + + + ErrorUrl + + When no Real Servers are available and an error response is sent back to the client, a redirect URL can also be specified. + + String + + + PortFollow + + This parameter was depreciated as of 7.1-24. For LoadMasters with version 7.1-24 or higher, use the FollowVSID parameter to set port following. + + Int32 + + + ForceL7 + + Enabling ForceL7 means the Virtual Service runs at Layer 7 and not Layer 4. This may be needed for various reasons, including that only Layer 7 services can be non-transparent. + + Boolean + + + Idletime + + Specifies the length of time (in seconds) that a connection may remain idle before it is closed. The range for this parameter is 0 to 86400. There are some special values that can be set for this parameter: +- 0: Ensures the default L7 connection timeout is used. The default timeout value can be modified by setting the conntimeout parameter. +- 1: Discards the connection after the packet is first forwarded – a response is not expected or handled. +- 2: Uses a DNS-type of operation. The connection is dropped after the reply message. +Setting it to 1 or 2 enables better performance and memory usage for UDP connections and they correspond better to how UDP is used. + + Int32 + + + LocalBindAddresses + + Specifies a space-separated list of IP addresses. This corresponds to the Alternate Source Address in the Advanced Properties section of the WUI. Allow connections scaling over 64K Connections needs to be enabled in L7 Configuration for this feature to work. + + String[] + + + VSType + + Specifies the type of service being load balanced: + gen - Generic +http - HTTP/HTTPS +ts - Remote Terminal +tls – STARTTLS protocols +log – Log Insight + + String + + + Nickname + + Specifies the "friendly" name of the service. In addition to the usual alphanumeric characters, the following "special" characters can be used as part of the Service Name: + . @ - _ + However, there must be at least one alphanumeric character before the special characters. + + String + + + Persist + + Specifies the type of persistence (stickiness) to be used for this Virtual Service. + The following persistence values are supported: ssl, cookie, active-cookie, cookie-src, active-cook-src, cookie-hash, cookie-hash-src, url, query-hash, host, header, super, super-src, src, rdp, rdp-src, rdp-sb, rdp-sb-src, udpsip and none. + Note: If setting the persistence mode to an option that requires a cookie (or query-hash), the cookie parameter must also be set. + + String + + + PersistTimeout + + The length of time (in seconds) after the last connection that the LoadMaster will remember the persistence information. Timeout values are rounded down to an even number of minutes. Setting a value that is not a number of whole minutes results in the excess being ignored. Setting a value to less than 60 seconds results in a value of 0 being set, which disables persistency. + + Int32 + + + QueryTag + + This is the query tag to be matched if the Persist type is set to query-hash. + + String + + + CipherSet + + Specifies a cipher set name. + + String + + + SSLReencrypt + + This parameter is only relevant if SSL Acceleration is enabled. When this option is enabled, the SSL data stream is re-encrypted before sending to the Real Server. + + Boolean + + + SSLReverse + + Enabling this parameter means that the data from the LoadMaster to the Real Server is re-encrypted. + + Boolean + + + SSLRewrite + + When the Real Server rejects a request with an HTTP redirect, the requesting Location URL may need to be converted to specify HTTPS instead of HTTP (and vice versa). + + String + + + ReverseSNIHostname + + If this option is enabled, the host name is required to be sent in the TLS client hello message. If it is not sent the connection will be dropped. + + String + + + Schedule + + Specifies the type of scheduling of new connections to Real Servers that is to be performed. The following values are supported: + rr = round robin +wrr = weighted round robin +lc = least connection +wlc = weighted least connection +fixed = fixed weighting +adaptive = resource based (adaptive) +sh = source IP hash +dl = weighted response time +sdn-adaptive = resource based (SDN adaptive) + + String + + + ServerInit + + Specifies one of the following values: + 0 - Normal Protocols +1 - SMTP +2 - SSH +3 - Other Server Initiating +4 - IMAP4 +5 - MySQL +6 - POP3 + + Int16 + + + SSLAcceleration + + Specifies whether to enable SSL handling on the Virtual Service. + + Boolean + + + StandByAddr + + Specifies the IP address of the "Sorry" server that is to be used when no other Real Servers are available. This server will not be health checked and is assumed to be always available. + + String + + + StandByPort + + Specifies the port of the "Sorry" server. + + String + + + TransactionLimit + + This is a legacy parameter that should no longer be used. It was used previously when the SSL proxy was limited to 6K total connections. The transaction limit was used to limit one Virtual Service to only handle so many connections out of this 6K. On newer systems, where the limit is greater than 64K - this feature is no longer required. + + Int32 + + + Transparent + + When using Layer 7, when this is enabled - the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent, which means that the connections at the Real Server appear to come from the LoadMaster. +0 - Disabled +1 - Enabled +If a Virtual Service (with or without a SubVS) has SSL re-encrypt enabled, the transparency flag of the Virtual Service has no meaning (re-encryption forces transparency to be off). The transparency setting can still be modified by the API, and is honored when re-encrypt is disabled on the Virtual Service. + + Boolean + + + SubnetOriginating + + When transparency is not enabled, the source IP address of connections to the Real Servers is that of the Virtual Service. When transparency is enabled, the source IP address will be the IP address that is initiating connection to the Virtual Service. If the Real Server is on a subnet, and the Subnet Originating Requests option is enabled, then the subnet address of the LoadMaster will be used as the source IP address. + + Boolean + + + UseforSnat + + By default, when the LoadMaster is being used to NAT Real Servers, the source IP address used on the Internet is that of the LoadMaster. Enabling this option allows the Real Servers configured to use the Virtual Service as the source IP address instead. If the Real Servers are configured on more than one Virtual Service which has this option set, only connections to destination port 80 will use this Virtual Service as the source IP address. + + Boolean + + + QoS + + Specifies the Quality of Service. The following values are supported: + 0 - Normal-Service +1 - Minimize-Cost +2 - Maximize-Reliability +4 - Maximize-Throughput +8 - Minimize-Delay + + String + + + CheckUseGet + + When accessing the health check URL - the system can use the HEAD, the GET or the POST method: + 0 - HEAD +1 - GET +2 - POST + + Int32 + + + Verify + + Specifies a verification bitmask. The valid values of the Verify parameter are as follows: + Bit 0: set this to 1 to enable detection intrusion. + Note: Bit 0 needs to be set to 1 in order to use the other two bits. + Bit 1: Determines whether to reject or drop a connection. Setting it to 1 will drop the connection. + Bit 2: Determines whether to give just warnings on bad requests or also on malicious (but not invalid) requests. + The following table lists the valid integers and the values they set the fields to when used: +Integer Detect Malicious Requests Intrusion Handling Warnings Checkbox +0 Disabled N/A N/A +1 Enabled Drop Connection Unchecked +2 Enabled Send Reject Unchecked +3 Enabled Send Reject Unchecked +4 Enabled Drop Connection Checked +5 Enabled Drop Connection Checked +6 Enabled Send Reject Checked +7 Enabled Send Reject Checked + + Int16 + + + ExtraHdrKey + + Specifies the key for the extra header to be inserted into every request sent to the Real Servers. + + String + + + ExtraHdrValue + + Specifies the value for the extra header to be inserted into every request sent to the Real Servers. + + String + + + AllowedHosts + + This parameter is only relevant when ESP is enabled. Specifies all the virtual hosts that can be accessed via this Virtual Service. + + String + + + AllowedDirectories + + This parameter is only relevant when ESP is enabled. Specifies all the virtual directories that can be accessed via this Virtual Service. + + String + + + AllowedGroups + + Specifies the groups that are allowed to access this Virtual Service. + + String + + + GroupSIDs + + Specify the group security identifiers (SIDs) that are allowed to access this Virtual Service. Each group must be separated by a semicolon. + + String + + + SteeringGroups + + Enter the Active Directory group names that will be used for steering traffic. Use a semi-colon to separate multiple group names. The steering group index number corresponds to the location of the group in this list. + + String + + + IncludeNestedGroups + + Specify if nested groups should be included in the authentication attempt. + + Boolean + + + DisplayPubPriv + + Display the public/private option on the login page. Based on the option the user selects on the login form, the session timeout value will be set to the value specified for either the public or private timeout. + + Boolean + + + DisablePasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + Boolean + + + Domain + + Specifies the Single Sign On (SSO) domain in which this Virtual Service will operate. + + String + + + AltDomains + + Specifies alternative domains to be assigned to a Virtual Service when configuring multi-domain authentication. To specify multiple alternative domains use a space-separated list. + + String + + + Logoff + + This parameter is only relevant when ESP is enabled and when the Client Authentication Mode is set to Form Based. Specify the string that the LoadMaster should use to detect a logout event. Multiple logoff strings can be specified by using a space-separated list. + If the URL to be matched contains sub-directories before the specified string, the Logoff String will not be matched. Therefore the LoadMaster will not log the user off. + + String + + + ESPLogs + + Enable ESP logging. Valid values are below: + 0 - Logging off +1 - User Access +2 - Security +3 - User Access and Security +4 - Connection +5 - User Access and Connection +6 - Security and connection +7 - User Access, Security and Connection + Note: The only valid values for SMTP services are 0 and 4. For SMTP services, security issues are always logged. Nothing is logged for user access because there are no logins. + + Int16 + + + SMTPAllowedDomains + + Specifies all the permitted domains that are allowed to be received by this Virtual Service. + + String + + + ESPEnabled + + Specifies whether to enable or disable the Edge Security Pack (ESP) features. + + Boolean + + + UserPwdChangeUrl + + This is relevant when using form-based LDAP authentication. Specify the URL that users can use to change their password. If a user’s password has expired, or if they must reset their password, this URL and the UserPwdChangeMsg is displayed on the login form. +This URL must be put into the exception list for authentication, if required. + + String + + + UserPwdChangeMsg + + This parameter is only relevant if the UserPwdChangeURL parameter is set. Specify the text to be displayed on the login form when the user must reset their password. + + String + + + SecurityHeaderOptions + + Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). +0 - Don't add the Strict Transport Security Header (default value) +1 - Add the Strict Transport Security Header - no subdomains +2 - Add the Strict Transport Security Header - include subdomains Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). + + Int16 + + + InputAuthMode + + Specifies the client authentication method to be used: + 0 - Delegate to Server +1 - Basic Authentication +2 - Form Based +4 - Client Certificate +5 - NTLM +6 - SAML + + Int16 + + + OutConf + + + + String + + + OutputAuthMode + + Specifies the server authentication mode to be used: + 0 - None +1 - Basic Authentication +2 - Form Based +3 - KCD + + Int16 + + + StartTLSMode + + 0 - HTTP/HTTPS (the Service Type needs to be set to HTTP/HTTPS for this to work) + The Virtual Service Type must be set to STARTTLS for the remaining values to be set: + 1 - SMTP (STARTTLS if requested) +2 - SMTP (STARTTLS always) +3 - FTP +4 - IMAP +6 - POP3 + + Int16 + + + ExtraPorts + + Specifies extra ports that the Virtual Service will listen to. + + String + + + AltAddress + + Specifies the alternate address for this Virtual Service. + + String + + + MultiConnect + + Enabling this option permits the LoadMaster to manage connection handling between the LoadMaster and the Real Servers. Requests from multiple clients will be sent over the same TCP connection. + Multiplexing only works for simple HTTP GET operations. This parameter cannot be enabled in certain situations, for example if WAF, ESP or SSL Acceleration is enabled. + + Boolean + + + SingleSignOnDir + + This parameter relates to the SSO Image Set drop-down in the ESP Options section of the modify Virtual Service screen. Specify the name of the image set to be used for the login screen. If no image set is specified, the default Exchange image set will be used. + + String + + + OCSPVerify + + Specifies whether to verify (via Online Certificate Status Protocol (OCSP)) that the client certificate is valid. + + String + + + FollowVSID + + Specifies the ID of the Virtual Service to follow. + + Int32 + + + TlsType + + Specify which of the following protocols to support; SSLv3, TLS1.0, TLS1.1 or TLS1.2. By default, TLS1.1 and TLS1.2 are enabled. The protocols can be enabled and disabled using a bitmask value. Refer to the table below to find out what number corresponds to which settings. + Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + + Int32 + + + CheckPostData + + This parameter is only relevant if the HTTP Method is set to POST. When using the POST method, up to 2047 characters of POST data can be sent to the server. + + String + + + CheckCodes + + A space-separated list of HTTP status codes that should be treated as successful when received from the Real Server. +Range: 300-599 + + String + + + PreProcPrecedence + + This parameter should be used in conjunction with PreProcPrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. This parameter relates to Content Matching Rules only. + + String + + + PreProcPrecedencePos + + This parameter, in conjunction with the PreProcPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. This parameter relates to the Content Matching Rules only. + + Int16 + + + RequestPrecedence + + This parameter should be used in conjunction with RequestPrecedencePos. This parameter is used to specify the name of the existing request rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header +Modify URL + + String + + + RequestPrecedencePos + + This parameter, in conjunction with the RequestPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. + + Int16 + + + ResponsePrecedence + + This parameter should be used in conjunction with ResponsePrecedencePos. This parameter is used to specify the name of the existing response rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header + + String + + + ResponsePrecedencePos + + This parameter, in conjunction with the ResponsePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + RsRulePrecedence + + This parameter should be used in conjunction with RSRulePrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. + + String + + + RsRulePrecedencePos + + This parameter, in conjunction with the RSRulePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + + NeedHostName + + When this parameter is enabled, the hostname is always required to be sent in the TLS client hello message. If it is not sent, the connection is dropped. +Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + CopyHdrFrom + + This is the name of the source header field to copy into the new header field before the request is sent to the Real Servers. + + String + + + CopyHdrTo + + This parameter is used in conjunction with the CopyHdrFrom parameter. +The name of the header field into which the source header is to be copied. + + String + + + ServerFbaPath + + Only relevant when using form-based authentication as the Server Authentication Mode (OutputAuthMode). Set the authentication path for server-side Form Based Authentication (FBA). When used in Exchange environments, this does not need to be set. + + String + + + ServerFbaPost + + Only relevant when using form-based authentication as the Server Athentication Mode (OutputAuthMode). Set the format string used to generate POST body for server side FBA. The value must be base64-encoded. +When used in Exchange environments, this does not need to be set. + + String + + + Intercept + + Enable or disable the Web Application Firewall (WAF) for this Virtual Service. + + Boolean + + + AllowHTTP2 + + Enable HTTP2 for this Virtual Service. SSL Acceleration must be enabled before HTTP2 can be enabled. The Best Practices cipher set should be used when HTTP2 is enabled. + + Boolean + + + InterceptOpts + + Specifies Web Application Firewall (WAF) options for this Virtual Service. +The AFP InterceptOpts parameter is a special parameter – it can be used to set the value for multiple fields, rather than just one field as with most other parameters. The InterceptOpts parameter allows the specification of most of the fields in the WAF Options section of the Virtual Service modify screen in the LoadMaster WUI. +To enable WAF, set the Intercept parameter to 1. +The names of the specific WUI fields that the InterceptOpts parameter is related to, are listed in the table below. + One or more field values can be set in one command. Multiple values can be set in the one command by separating the values with a semi-colon. +The values that are related to the same WUI option are mutually exclusive. For example, you cannot set Basic Operation to both opnormal and opblock. + Value Related WUI Option Default Meaning +opnormal Default Operation Audit Only Set the Basic Operation to Audit Only +opblock Default Operation Audit Only Set the Basic Operation to Block Mode +auditnone Audit mode No Audit Set the Audit mode to No Audit. No data is logged. +auditrelevant Audit mode No Audit Set the Audit mode to Audit Relevant. Logs data which is of a warning level and higher. +auditall Audit mode No Audit Set the Audit mode to Audit All. Logs all data through the Virtual Service. +The Audit All option is not recommended for use in normal operation. Audit All should only be used when troubleshooting a specific problem. +reqdataenable Inspect HTML POST Request Content Disabled Enable the Inspect HTML POST Request Content option +reqdatadisable Inspect HTML POST Request Content Disabled Disable the Inspect HTML POST Request Content option +resdataenable Process Response Data Disabled Enable the Process Response Data option +resdatadisable Process Response Data Disabled Disable the Process Response Data option +jsondisable Disable JSON Parser Disabled Disable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +jsonenable Disable JSON Parser Disabled Enable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmldisable Disable XML Parser Disabled Disable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmlenable Disable XML Parser Disabled Enable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. + + String + + + InterceptRules + + Specifies Web Application Firewall (WAF) rules for this Virtual Service. + + String + + + AlertThreshold + + Specifies Web Application Firewall (WAF) alert threshold for this Virtual Service. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + The IP address for the Virtual Service. + + String + + String + + + + + + VSPort + + The port for the Virtual Service. +The port parameter is used to assign a port when initially creating a Virtual Service. If modifying the port of an existing Virtual Service, specify the existing port as the Port parameter and use the VSPort parameter to assign the new port. +The reason why these must be separate parameters is because you need to specify what the port of the existing Virtual Service is (because there may be another Virtual Service with the same IP address but a different port) and if you want to change the port, a second port parameter (VSPort) is needed to specify the new port value. + + Int32 + + Int32 + + + + + + VSProtocol + + The protocol of the relevant Virtual Service. + + String + + String + + + + + + VSIndex + + The index number of the Virtual Service. + + Int32 + + Int32 + + + + + + AddVia + + Specifies which headers are added to the HTTP stream. Choose the number of the option to use. + 0 - Legacy Operation(XXX) +1 - None +2 - X-Forwarded-For +3 - X-Forwarded-For (No Via) +4 - X-ClientSide +5 - X-ClientSide (No Via) +6 - Via Only + + Int16 + + Int16 + + + + + + Cache + + Enables or disables caching on this Virtual Service. + + Boolean + + Boolean + + + + + + CertFile + + Specifies the name of the certificate file to use that is already installed on the load balancer. Note: This will NOT upload a certificate file to the load balancer. + + String + + String + + + + + + CheckType + + Specifies the protocol to use to check if the service is up. Valid options are "tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", "ldap" or "none". + + String + + String + + + + + + CheckHost + + The address to use to check if the service is up. + + String + + String + + + + + + CheckPattern + + A regular expression string that can be validate on a 200 reply to determine if the service is up. +Specify an empty value to unset CheckPattern. + + String + + String + + + + + + CheckUrl + + The URL to check if the service is up. The maximum character length for the CheckUrl parameter value is 126 characters. + + String + + String + + + + + + CheckHeaders + + Specify up to four additional headers/fields which will be sent with each health check request. Separate the pairs with a pipe, for example; Host:xyc|UserAgent:prq. + + String + + String + + + + + + LdapEndpoint + + Specify the LDAP endpoint to use for health checks (if LDAP is selected as the CheckType). If LDAP is selected as the health check protocol, the server IP address (or addresses) and ports from the LDAP endpoint configuration will be used instead of the Real Server IP address and port. + + String + + String + + + + + + MatchLen + + This parameter is only relevant when the CheckType is set to "bdata". Specify the number of bytes to find the CheckPattern within. + + String + + String + + + + + + CheckUse1_1 + + Specifies that the health checker use HTTP/1.1 instead of HTTP/1.0. +0 - HTTP/1.0 +1 - HTTP/1.1 + + Int32 + + Int32 + + + + + + CheckPort + + The port to use to check if the service is up. +Specify 0 to unset CheckPort. + + Int32 + + Int32 + + + + + + EnhancedHealthChecks + + Enables or disables Enhanced Health Check Options for the Virtual Service. + + Boolean + + Boolean + + + + + + RsMinimum + + Specifies the minimum number of Real Servers that are required to be active for the Virtual Service to be considered up. + + Int32 + + Int32 + + + + + + ClientCert + + Specify how client certificates should be used. Valid values are 0, 1, or 2. Zero indicates that client certificates are not use. One indicates that client certificates are required. Two indicates that client certificates are required and additional HEAD information is being sent. + + Int16 + + Int16 + + + + + + Compress + + Enable or disable file compression for the Virtual Service. + + Boolean + + Boolean + + + + + + Cookie + + Specifies a cookie name. This parameter is only relevant when the persistence mode is set to "cookie", "active-cookie", "cookie-src" or "active-cook-src". + + String + + String + + + + + + CachePercent + + Specifies the maximum cache usage for this virtual service. + Note: Setting two Virtual Services using 50% of cache will use 100% of all cache storage. This parameter accepts values from 0 to 100. + + Int16 + + Int16 + + + + + + DefaultGW + + Specifies a Virtual Service-specific default gateway to be used to send responses back to clients. If not set, the global default gateway will be used. + + String + + String + + + + + + Enable + + Enables or disables the Virtual Service. + + Boolean + + Boolean + + + + + + ErrorCode + + If no Real Servers are available, the LoadMaster can terminate the connection with an HTTP error code. Specify the error code number in this parameter. + + String + + String + + + + + + ErrorUrl + + When no Real Servers are available and an error response is sent back to the client, a redirect URL can also be specified. + + String + + String + + + + + + PortFollow + + This parameter was depreciated as of 7.1-24. For LoadMasters with version 7.1-24 or higher, use the FollowVSID parameter to set port following. + + Int32 + + Int32 + + + + + + ForceL7 + + Enabling ForceL7 means the Virtual Service runs at Layer 7 and not Layer 4. This may be needed for various reasons, including that only Layer 7 services can be non-transparent. + + Boolean + + Boolean + + + + + + Idletime + + Specifies the length of time (in seconds) that a connection may remain idle before it is closed. The range for this parameter is 0 to 86400. There are some special values that can be set for this parameter: +- 0: Ensures the default L7 connection timeout is used. The default timeout value can be modified by setting the conntimeout parameter. +- 1: Discards the connection after the packet is first forwarded – a response is not expected or handled. +- 2: Uses a DNS-type of operation. The connection is dropped after the reply message. +Setting it to 1 or 2 enables better performance and memory usage for UDP connections and they correspond better to how UDP is used. + + Int32 + + Int32 + + + + + + LocalBindAddresses + + Specifies a space-separated list of IP addresses. This corresponds to the Alternate Source Address in the Advanced Properties section of the WUI. Allow connections scaling over 64K Connections needs to be enabled in L7 Configuration for this feature to work. + + String[] + + String[] + + + + + + VSType + + Specifies the type of service being load balanced: + gen - Generic +http - HTTP/HTTPS +ts - Remote Terminal +tls – STARTTLS protocols +log – Log Insight + + String + + String + + + + + + Nickname + + Specifies the "friendly" name of the service. In addition to the usual alphanumeric characters, the following "special" characters can be used as part of the Service Name: + . @ - _ + However, there must be at least one alphanumeric character before the special characters. + + String + + String + + + + + + Persist + + Specifies the type of persistence (stickiness) to be used for this Virtual Service. + The following persistence values are supported: ssl, cookie, active-cookie, cookie-src, active-cook-src, cookie-hash, cookie-hash-src, url, query-hash, host, header, super, super-src, src, rdp, rdp-src, rdp-sb, rdp-sb-src, udpsip and none. + Note: If setting the persistence mode to an option that requires a cookie (or query-hash), the cookie parameter must also be set. + + String + + String + + + + + + PersistTimeout + + The length of time (in seconds) after the last connection that the LoadMaster will remember the persistence information. Timeout values are rounded down to an even number of minutes. Setting a value that is not a number of whole minutes results in the excess being ignored. Setting a value to less than 60 seconds results in a value of 0 being set, which disables persistency. + + Int32 + + Int32 + + + + + + QueryTag + + This is the query tag to be matched if the Persist type is set to query-hash. + + String + + String + + + + + + CipherSet + + Specifies a cipher set name. + + String + + String + + + + + + SSLReencrypt + + This parameter is only relevant if SSL Acceleration is enabled. When this option is enabled, the SSL data stream is re-encrypted before sending to the Real Server. + + Boolean + + Boolean + + + + + + SSLReverse + + Enabling this parameter means that the data from the LoadMaster to the Real Server is re-encrypted. + + Boolean + + Boolean + + + + + + SSLRewrite + + When the Real Server rejects a request with an HTTP redirect, the requesting Location URL may need to be converted to specify HTTPS instead of HTTP (and vice versa). + + String + + String + + + + + + ReverseSNIHostname + + If this option is enabled, the host name is required to be sent in the TLS client hello message. If it is not sent the connection will be dropped. + + String + + String + + + + + + Schedule + + Specifies the type of scheduling of new connections to Real Servers that is to be performed. The following values are supported: + rr = round robin +wrr = weighted round robin +lc = least connection +wlc = weighted least connection +fixed = fixed weighting +adaptive = resource based (adaptive) +sh = source IP hash +dl = weighted response time +sdn-adaptive = resource based (SDN adaptive) + + String + + String + + + + + + ServerInit + + Specifies one of the following values: + 0 - Normal Protocols +1 - SMTP +2 - SSH +3 - Other Server Initiating +4 - IMAP4 +5 - MySQL +6 - POP3 + + Int16 + + Int16 + + + + + + SSLAcceleration + + Specifies whether to enable SSL handling on the Virtual Service. + + Boolean + + Boolean + + + + + + StandByAddr + + Specifies the IP address of the "Sorry" server that is to be used when no other Real Servers are available. This server will not be health checked and is assumed to be always available. + + String + + String + + + + + + StandByPort + + Specifies the port of the "Sorry" server. + + String + + String + + + + + + TransactionLimit + + This is a legacy parameter that should no longer be used. It was used previously when the SSL proxy was limited to 6K total connections. The transaction limit was used to limit one Virtual Service to only handle so many connections out of this 6K. On newer systems, where the limit is greater than 64K - this feature is no longer required. + + Int32 + + Int32 + + + + + + Transparent + + When using Layer 7, when this is enabled - the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent, which means that the connections at the Real Server appear to come from the LoadMaster. +0 - Disabled +1 - Enabled +If a Virtual Service (with or without a SubVS) has SSL re-encrypt enabled, the transparency flag of the Virtual Service has no meaning (re-encryption forces transparency to be off). The transparency setting can still be modified by the API, and is honored when re-encrypt is disabled on the Virtual Service. + + Boolean + + Boolean + + + + + + SubnetOriginating + + When transparency is not enabled, the source IP address of connections to the Real Servers is that of the Virtual Service. When transparency is enabled, the source IP address will be the IP address that is initiating connection to the Virtual Service. If the Real Server is on a subnet, and the Subnet Originating Requests option is enabled, then the subnet address of the LoadMaster will be used as the source IP address. + + Boolean + + Boolean + + + + + + UseforSnat + + By default, when the LoadMaster is being used to NAT Real Servers, the source IP address used on the Internet is that of the LoadMaster. Enabling this option allows the Real Servers configured to use the Virtual Service as the source IP address instead. If the Real Servers are configured on more than one Virtual Service which has this option set, only connections to destination port 80 will use this Virtual Service as the source IP address. + + Boolean + + Boolean + + + + + + QoS + + Specifies the Quality of Service. The following values are supported: + 0 - Normal-Service +1 - Minimize-Cost +2 - Maximize-Reliability +4 - Maximize-Throughput +8 - Minimize-Delay + + String + + String + + + + + + CheckUseGet + + When accessing the health check URL - the system can use the HEAD, the GET or the POST method: + 0 - HEAD +1 - GET +2 - POST + + Int32 + + Int32 + + + + + + Verify + + Specifies a verification bitmask. The valid values of the Verify parameter are as follows: + Bit 0: set this to 1 to enable detection intrusion. + Note: Bit 0 needs to be set to 1 in order to use the other two bits. + Bit 1: Determines whether to reject or drop a connection. Setting it to 1 will drop the connection. + Bit 2: Determines whether to give just warnings on bad requests or also on malicious (but not invalid) requests. + The following table lists the valid integers and the values they set the fields to when used: +Integer Detect Malicious Requests Intrusion Handling Warnings Checkbox +0 Disabled N/A N/A +1 Enabled Drop Connection Unchecked +2 Enabled Send Reject Unchecked +3 Enabled Send Reject Unchecked +4 Enabled Drop Connection Checked +5 Enabled Drop Connection Checked +6 Enabled Send Reject Checked +7 Enabled Send Reject Checked + + Int16 + + Int16 + + + + + + ExtraHdrKey + + Specifies the key for the extra header to be inserted into every request sent to the Real Servers. + + String + + String + + + + + + ExtraHdrValue + + Specifies the value for the extra header to be inserted into every request sent to the Real Servers. + + String + + String + + + + + + AllowedHosts + + This parameter is only relevant when ESP is enabled. Specifies all the virtual hosts that can be accessed via this Virtual Service. + + String + + String + + + + + + AllowedDirectories + + This parameter is only relevant when ESP is enabled. Specifies all the virtual directories that can be accessed via this Virtual Service. + + String + + String + + + + + + AllowedGroups + + Specifies the groups that are allowed to access this Virtual Service. + + String + + String + + + + + + GroupSIDs + + Specify the group security identifiers (SIDs) that are allowed to access this Virtual Service. Each group must be separated by a semicolon. + + String + + String + + + + + + SteeringGroups + + Enter the Active Directory group names that will be used for steering traffic. Use a semi-colon to separate multiple group names. The steering group index number corresponds to the location of the group in this list. + + String + + String + + + + + + IncludeNestedGroups + + Specify if nested groups should be included in the authentication attempt. + + Boolean + + Boolean + + + + + + DisplayPubPriv + + Display the public/private option on the login page. Based on the option the user selects on the login form, the session timeout value will be set to the value specified for either the public or private timeout. + + Boolean + + Boolean + + + + + + DisablePasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + Boolean + + Boolean + + + + + + Domain + + Specifies the Single Sign On (SSO) domain in which this Virtual Service will operate. + + String + + String + + + + + + AltDomains + + Specifies alternative domains to be assigned to a Virtual Service when configuring multi-domain authentication. To specify multiple alternative domains use a space-separated list. + + String + + String + + + + + + Logoff + + This parameter is only relevant when ESP is enabled and when the Client Authentication Mode is set to Form Based. Specify the string that the LoadMaster should use to detect a logout event. Multiple logoff strings can be specified by using a space-separated list. + If the URL to be matched contains sub-directories before the specified string, the Logoff String will not be matched. Therefore the LoadMaster will not log the user off. + + String + + String + + + + + + ESPLogs + + Enable ESP logging. Valid values are below: + 0 - Logging off +1 - User Access +2 - Security +3 - User Access and Security +4 - Connection +5 - User Access and Connection +6 - Security and connection +7 - User Access, Security and Connection + Note: The only valid values for SMTP services are 0 and 4. For SMTP services, security issues are always logged. Nothing is logged for user access because there are no logins. + + Int16 + + Int16 + + + + + + SMTPAllowedDomains + + Specifies all the permitted domains that are allowed to be received by this Virtual Service. + + String + + String + + + + + + ESPEnabled + + Specifies whether to enable or disable the Edge Security Pack (ESP) features. + + Boolean + + Boolean + + + + + + UserPwdChangeUrl + + This is relevant when using form-based LDAP authentication. Specify the URL that users can use to change their password. If a user’s password has expired, or if they must reset their password, this URL and the UserPwdChangeMsg is displayed on the login form. +This URL must be put into the exception list for authentication, if required. + + String + + String + + + + + + UserPwdChangeMsg + + This parameter is only relevant if the UserPwdChangeURL parameter is set. Specify the text to be displayed on the login form when the user must reset their password. + + String + + String + + + + + + SecurityHeaderOptions + + Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). +0 - Don't add the Strict Transport Security Header (default value) +1 - Add the Strict Transport Security Header - no subdomains +2 - Add the Strict Transport Security Header - include subdomains Enable this option to add the Strict-Transport-Security header to all LoadMaster-generated messages (ESP and error messages). + + Int16 + + Int16 + + + + + + InputAuthMode + + Specifies the client authentication method to be used: + 0 - Delegate to Server +1 - Basic Authentication +2 - Form Based +4 - Client Certificate +5 - NTLM +6 - SAML + + Int16 + + Int16 + + + + + + OutConf + + + + String + + String + + + + + + OutputAuthMode + + Specifies the server authentication mode to be used: + 0 - None +1 - Basic Authentication +2 - Form Based +3 - KCD + + Int16 + + Int16 + + + + + + StartTLSMode + + 0 - HTTP/HTTPS (the Service Type needs to be set to HTTP/HTTPS for this to work) + The Virtual Service Type must be set to STARTTLS for the remaining values to be set: + 1 - SMTP (STARTTLS if requested) +2 - SMTP (STARTTLS always) +3 - FTP +4 - IMAP +6 - POP3 + + Int16 + + Int16 + + + + + + ExtraPorts + + Specifies extra ports that the Virtual Service will listen to. + + String + + String + + + + + + AltAddress + + Specifies the alternate address for this Virtual Service. + + String + + String + + + + + + MultiConnect + + Enabling this option permits the LoadMaster to manage connection handling between the LoadMaster and the Real Servers. Requests from multiple clients will be sent over the same TCP connection. + Multiplexing only works for simple HTTP GET operations. This parameter cannot be enabled in certain situations, for example if WAF, ESP or SSL Acceleration is enabled. + + Boolean + + Boolean + + + + + + SingleSignOnDir + + This parameter relates to the SSO Image Set drop-down in the ESP Options section of the modify Virtual Service screen. Specify the name of the image set to be used for the login screen. If no image set is specified, the default Exchange image set will be used. + + String + + String + + + + + + OCSPVerify + + Specifies whether to verify (via Online Certificate Status Protocol (OCSP)) that the client certificate is valid. + + String + + String + + + + + + FollowVSID + + Specifies the ID of the Virtual Service to follow. + + Int32 + + Int32 + + + + + + TlsType + + Specify which of the following protocols to support; SSLv3, TLS1.0, TLS1.1 or TLS1.2. By default, TLS1.1 and TLS1.2 are enabled. The protocols can be enabled and disabled using a bitmask value. Refer to the table below to find out what number corresponds to which settings. + Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + + Int32 + + Int32 + + + + + + CheckPostData + + This parameter is only relevant if the HTTP Method is set to POST. When using the POST method, up to 2047 characters of POST data can be sent to the server. + + String + + String + + + + + + CheckCodes + + A space-separated list of HTTP status codes that should be treated as successful when received from the Real Server. +Range: 300-599 + + String + + String + + + + + + PreProcPrecedence + + This parameter should be used in conjunction with PreProcPrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. This parameter relates to Content Matching Rules only. + + String + + String + + + + + + PreProcPrecedencePos + + This parameter, in conjunction with the PreProcPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. This parameter relates to the Content Matching Rules only. + + Int16 + + Int16 + + + + + + RequestPrecedence + + This parameter should be used in conjunction with RequestPrecedencePos. This parameter is used to specify the name of the existing request rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header +Modify URL + + String + + String + + + + + + RequestPrecedencePos + + This parameter, in conjunction with the RequestPrecedence parameter, is used to change the position of the rule in a sequence of rules. For example a position of 2 means the rule will be checked second. + + Int16 + + Int16 + + + + + + ResponsePrecedence + + This parameter should be used in conjunction with ResponsePrecedencePos. This parameter is used to specify the name of the existing response rule whose position you wish to change. + This parameter relates to the following rule types: + Content Matching +Add Header +Delete Header +Replace Header + + String + + String + + + + + + ResponsePrecedencePos + + This parameter, in conjunction with the ResponsePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + Int16 + + + + + + RsRulePrecedence + + This parameter should be used in conjunction with RSRulePrecedencePos. This parameter is used to specify the name of the existing rule whose position you wish to change. + + String + + String + + + + + + RsRulePrecedencePos + + This parameter, in conjunction with the RSRulePrecedence parameter, is used to change the position of the rule in a sequence of rules. For example, a position of 2 means the rule will be checked second. + + Int16 + + Int16 + + + + + + NeedHostName + + When this parameter is enabled, the hostname is always required to be sent in the TLS client hello message. If it is not sent, the connection is dropped. +Valid values: +0 - Disabled +1 - Enabled + + Boolean + + Boolean + + + + + + CopyHdrFrom + + This is the name of the source header field to copy into the new header field before the request is sent to the Real Servers. + + String + + String + + + + + + CopyHdrTo + + This parameter is used in conjunction with the CopyHdrFrom parameter. +The name of the header field into which the source header is to be copied. + + String + + String + + + + + + ServerFbaPath + + Only relevant when using form-based authentication as the Server Authentication Mode (OutputAuthMode). Set the authentication path for server-side Form Based Authentication (FBA). When used in Exchange environments, this does not need to be set. + + String + + String + + + + + + ServerFbaPost + + Only relevant when using form-based authentication as the Server Athentication Mode (OutputAuthMode). Set the format string used to generate POST body for server side FBA. The value must be base64-encoded. +When used in Exchange environments, this does not need to be set. + + String + + String + + + + + + Intercept + + Enable or disable the Web Application Firewall (WAF) for this Virtual Service. + + Boolean + + Boolean + + + + + + AllowHTTP2 + + Enable HTTP2 for this Virtual Service. SSL Acceleration must be enabled before HTTP2 can be enabled. The Best Practices cipher set should be used when HTTP2 is enabled. + + Boolean + + Boolean + + + + + + InterceptOpts + + Specifies Web Application Firewall (WAF) options for this Virtual Service. +The AFP InterceptOpts parameter is a special parameter – it can be used to set the value for multiple fields, rather than just one field as with most other parameters. The InterceptOpts parameter allows the specification of most of the fields in the WAF Options section of the Virtual Service modify screen in the LoadMaster WUI. +To enable WAF, set the Intercept parameter to 1. +The names of the specific WUI fields that the InterceptOpts parameter is related to, are listed in the table below. + One or more field values can be set in one command. Multiple values can be set in the one command by separating the values with a semi-colon. +The values that are related to the same WUI option are mutually exclusive. For example, you cannot set Basic Operation to both opnormal and opblock. + Value Related WUI Option Default Meaning +opnormal Default Operation Audit Only Set the Basic Operation to Audit Only +opblock Default Operation Audit Only Set the Basic Operation to Block Mode +auditnone Audit mode No Audit Set the Audit mode to No Audit. No data is logged. +auditrelevant Audit mode No Audit Set the Audit mode to Audit Relevant. Logs data which is of a warning level and higher. +auditall Audit mode No Audit Set the Audit mode to Audit All. Logs all data through the Virtual Service. +The Audit All option is not recommended for use in normal operation. Audit All should only be used when troubleshooting a specific problem. +reqdataenable Inspect HTML POST Request Content Disabled Enable the Inspect HTML POST Request Content option +reqdatadisable Inspect HTML POST Request Content Disabled Disable the Inspect HTML POST Request Content option +resdataenable Process Response Data Disabled Enable the Process Response Data option +resdatadisable Process Response Data Disabled Disable the Process Response Data option +jsondisable Disable JSON Parser Disabled Disable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +jsonenable Disable JSON Parser Disabled Enable the JSON parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmldisable Disable XML Parser Disabled Disable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. +xmlenable Disable XML Parser Disabled Enable the XML parser. This option is only relevant if the Inspect HTML POST Request Content option is enabled. + + String + + String + + + + + + InterceptRules + + Specifies Web Application Firewall (WAF) rules for this Virtual Service. + + String + + String + + + + + + AlertThreshold + + Specifies Web Application Firewall (WAF) alert threshold for this Virtual Service. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Port + + The port for the Virtual Service. A wildcard port can also be specified by using an asterisk (*). +The Port parameter is used to assign a port when initially creating a Virtual Service. If modifying the port of an existing Virtual Service, specify the existing port as the Port parameter and use the VSPort parameter to assign the new port. +The reason why these must be separate parameters is because you need to specify what the port of the existing Virtual Service is (because there may be another Virtual Service with the same IP address but a different port) and if you want to change the port, a second port parameter (VSPort) is needed to specify the new port value. + + int32 + + int32 + + + + + + Protocol + + Specify if the service is using TCP or UDP protocols. + + string + + string + + + + + + DisplayPasswordForm + + Enabling this option removes the password field from the login page. This may be needed when password validation is not required, for example if using RSA SecurID authentication in a singular fashion. + + boolean + + boolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-AdcVirtualService -Port 80 -Protocol tcp -VirtualService 10.154.11.90 -persist header + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{VS=} +Param........: @{Status=Down; Index=4; VSAddress=10.154.11.90; VSPort=80; Layer=7; Enable=Y; SSLReverse=N; SSLReencrypt=N; Intercept=N; InterceptOpts=; +AlertThreshold=0; Transactionlimit=0; Transparent=N; SubnetOriginating=Y; ServerInit=0; StartTLSMode=0; Idletime=660; Cache=N; Compress=N; Verify=0; Use +forSnat=N; ForceL4=N; ForceL7=Y; MultiConnect=N; ClientCert=0; ErrorCode=0; CheckUse1.1=N; MatchLen=0; CheckUseGet=0; SSLRewrite=0; VStype=http; FollowV +SID=0; Protocol=tcp; Schedule=rr; CheckType=http; Persist=header; PersistTimeout=360; CheckPort=0; NRules=0; NRequestRules=0; NResponseRules=0; NPreProc +essRules=0; EspEnabled=N; InputAuthMode=0; OutputAuthMode=0; MasterVS=0; MasterVSID=0; IsTransparent=2; AddVia=0; QoS=0; TlsType=0; NeedHostName=N; OCSP +Verify=N; AllowHTTP2=N; EnhancedHealthChecks=N; RsMinimum=0; NumberOfRSs=0} +Status : Down +Index : 4 +VSAddress : 10.154.11.90 +VSPort : 80 +Layer : 7 +Enable : Y +SSLReverse : N +SSLReencrypt : N +Intercept : N +InterceptOpts : @{Opt=System.Object[]} +AlertThreshold : 0 +Transactionlimit : 0 +Transparent : N +SubnetOriginating : Y +ServerInit : 0 +StartTLSMode : 0 +Idletime : 660 +Cache : N +Compress : N +Verify : 0 +UseforSnat : N +ForceL4 : N +ForceL7 : Y +MultiConnect : N +ClientCert : 0 +ErrorCode : 0 +CheckUse1.1 : N +MatchLen : 0 +CheckUseGet : 0 +SSLRewrite : 0 +VStype : http +FollowVSID : 0 +Protocol : tcp +Schedule : rr +CheckType : http +Persist : header +PersistTimeout : 360 +CheckPort : 0 +NRules : 0 +NRequestRules : 0 +NResponseRules : 0 +NPreProcessRules : 0 +EspEnabled : N +InputAuthMode : 0 +OutputAuthMode : 0 +MasterVS : 0 +MasterVSID : 0 +IsTransparent : 2 +AddVia : 0 +QoS : 0 +TlsType : 0 +NeedHostName : N +OCSPVerify : N +AllowHTTP2 : N +EnhancedHealthChecks : N +RsMinimum : 0 +NumberOfRSs : 0 + + + + + + + + + + + + + + + + + Set-AdminAccess + + WARNING: This function is deprecated. Use the following command instead: +Set-SecAdminAccess + + + + + Set + AdminAccess + + + + WARNING: This function is deprecated. Use the following command instead: +Set-SecAdminAccess + + + + Set-AdminAccess + + WuiNetworkInterfaceId + + + + Int32 + + + WuiPort + + + + Int32 + + + WuiDefaultGateway + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AdminAccess + + WuiNetworkInterfaceId + + + + Int32 + + + WuiPort + + + + Int32 + + + WuiDefaultGateway + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + WuiNetworkInterfaceId + + + + Int32 + + Int32 + + + + + + WuiPort + + + + Int32 + + Int32 + + + + + + WuiDefaultGateway + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-AFEConfiguration + + WARNING: This function is deprecated. Use the following command instead: +Set-LmAFEConfiguration + + + + + Set + AFEConfiguration + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmAFEConfiguration + + + + Set-AFEConfiguration + + CacheSize + + + + Int32 + + + HostCache + + + + Boolean + + + DetectionLevel + + + + String + + + LimitInput + + + + Int64 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AFEConfiguration + + CacheSize + + + + Int32 + + + HostCache + + + + Boolean + + + DetectionLevel + + + + String + + + LimitInput + + + + Int64 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + CacheSize + + + + Int32 + + Int32 + + + + + + HostCache + + + + Boolean + + Boolean + + + + + + DetectionLevel + + + + String + + String + + + + + + LimitInput + + + + Int64 + + Int64 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-AwsHAMode + + WARNING: This function is deprecated. Use the following command instead: +Set-LmAwsHAMode + + + + + Set + AwsHAMode + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmAwsHAMode + + + + Set-AwsHAMode + + HAMode + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AwsHAMode + + HAMode + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + HAMode + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-AwsHAOption + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAwsHAConfiguration + + + + + Set + AwsHAOption + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmAwsHAConfiguration + + + + Set-AwsHAOption + + Partner + + + + String + + + HealthCheckPort + + + + String + + + haprefered + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AwsHAOption + + Partner + + + + String + + + HealthCheckPort + + + + String + + + haprefered + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Partner + + + + String + + String + + + + + + HealthCheckPort + + + + String + + String + + + + + + haprefered + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-AzureHAMode + + WARNING: This function is deprecated. Use the following command instead: +Set-LmAzureHAMode + + + + + Set + AzureHAMode + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmAzureHAMode + + + + Set-AzureHAMode + + HAMode + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AzureHAMode + + HAMode + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + HAMode + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-AzureHAOption + + WARNING: This function is deprecated. Use the following command instead: +Set-AzureHAOption + + + + + Set + AzureHAOption + + + + WARNING: This function is deprecated. Use the following command instead: +Set-AzureHAOption + + + + Set-AzureHAOption + + Partner + + + + String + + + Hcp + + + + String + + + haprefered + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-AzureHAOption + + Partner + + + + String + + + Hcp + + + + String + + + haprefered + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Partner + + + + String + + String + + + + + + Hcp + + + + String + + String + + + + + + haprefered + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-BackupOption + + WARNING: This function is deprecated. Use the following command instead: +Set-LmBackupConfiguration + + + + + Set + BackupOption + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmBackupConfiguration + + + + Set-BackupOption + + BackupEnable + + + + String + + + BackupHour + + + + Int16 + + + BackupMinute + + + + Int16 + + + BackupDay + + + + Int16 + + + BackupMethod + + + + String + + + BackupUser + + + + String + + + BackupPassword + + + + String + + + BackupHost + + + + String + + + BackupPath + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-BackupOption + + BackupEnable + + + + String + + + BackupHour + + + + Int16 + + + BackupMinute + + + + Int16 + + + BackupDay + + + + Int16 + + + BackupMethod + + + + String + + + BackupUser + + + + String + + + BackupPassword + + + + String + + + BackupHost + + + + String + + + BackupPath + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + BackupEnable + + + + String + + String + + + + + + BackupHour + + + + Int16 + + Int16 + + + + + + BackupMinute + + + + Int16 + + Int16 + + + + + + BackupDay + + + + Int16 + + Int16 + + + + + + BackupMethod + + + + String + + String + + + + + + BackupUser + + + + String + + String + + + + + + BackupPassword + + + + String + + String + + + + + + BackupHost + + + + String + + String + + + + + + BackupPath + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-DateTimeOption + + WARNING: This function is deprecated. Use the following command instead: +Set-LmDateTimeConfiguration + + + + + Set + DateTimeOption + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmDateTimeConfiguration + + + + Set-DateTimeOption + + NTPHost + + + + String + + + TimeZone + + + + String + + + NTPKeyId + + + + Int32 + + + NTPKeySecret + + + + String + + + NTPKeyType + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-DateTimeOption + + NTPHost + + + + String + + + TimeZone + + + + String + + + NTPKeyId + + + + Int32 + + + NTPKeySecret + + + + String + + + NTPKeyType + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + NTPHost + + + + String + + String + + + + + + TimeZone + + + + String + + String + + + + + + NTPKeyId + + + + Int32 + + Int32 + + + + + + NTPKeySecret + + + + String + + String + + + + + + NTPKeyType + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-DebugOption + + WARNING: This function is deprecated. Use the following command instead: +Set-LmDebugConfiguration + + + + + Set + DebugOption + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmDebugConfiguration + + + + Set-DebugOption + + transparent + + + + Boolean + + + irqbalance + + + + Boolean + + + linearesplogs + + + + Boolean + + + netconsole + + + + String + + + netconsoleinterface + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-DebugOption + + transparent + + + + Boolean + + + irqbalance + + + + Boolean + + + linearesplogs + + + + Boolean + + + netconsole + + + + String + + + netconsoleinterface + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + transparent + + + + Boolean + + Boolean + + + + + + irqbalance + + + + Boolean + + Boolean + + + + + + linearesplogs + + + + Boolean + + Boolean + + + + + + netconsole + + + + String + + String + + + + + + netconsoleinterface + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-DNSConfiguration + + WARNING: This function is deprecated. Use the following command instead: +Set-NetworkDNSConfiguration + + + + + Set + DNSConfiguration + + + + WARNING: This function is deprecated. Use the following command instead: +Set-NetworkDNSConfiguration + + + + Set-DNSConfiguration + + Hostname + + + + String + + + HA1Hostname + + + + String + + + HA2Hostname + + + + String + + + NameServer + + + + String + + + Searchlist + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-DNSConfiguration + + Hostname + + + + String + + + HA1Hostname + + + + String + + + HA2Hostname + + + + String + + + NameServer + + + + String + + + Searchlist + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Hostname + + + + String + + String + + + + + + HA1Hostname + + + + String + + String + + + + + + HA2Hostname + + + + String + + String + + + + + + NameServer + + + + String + + String + + + + + + Searchlist + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-EmailOption + + WARNING: This function is deprecated. Use the following command instead: +Set-LogEmailConfiguration + + + + + Set + EmailOption + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LogEmailConfiguration + + + + Set-EmailOption + + EmailEnable + + + + Boolean + + + EmailServer + + + + String + + + EmailPort + + + + Int32 + + + EmailUser + + + + String + + + EmailPassword + + + + String + + + EmailDomain + + + + String + + + EmailSSLMode + + + + Int16 + + + EmailEmergency + + + + String + + + EmailCritical + + + + String + + + EmailError + + + + String + + + EmailWarn + + + + String + + + EmailNotice + + + + String + + + EmailInfo + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-EmailOption + + EmailEnable + + + + Boolean + + + EmailServer + + + + String + + + EmailPort + + + + Int32 + + + EmailUser + + + + String + + + EmailPassword + + + + String + + + EmailDomain + + + + String + + + EmailSSLMode + + + + Int16 + + + EmailEmergency + + + + String + + + EmailCritical + + + + String + + + EmailError + + + + String + + + EmailWarn + + + + String + + + EmailNotice + + + + String + + + EmailInfo + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + EmailEnable + + + + Boolean + + Boolean + + + + + + EmailServer + + + + String + + String + + + + + + EmailPort + + + + Int32 + + Int32 + + + + + + EmailUser + + + + String + + String + + + + + + EmailPassword + + + + String + + String + + + + + + EmailDomain + + + + String + + String + + + + + + EmailSSLMode + + + + Int16 + + Int16 + + + + + + EmailEmergency + + + + String + + String + + + + + + EmailCritical + + + + String + + String + + + + + + EmailError + + + + String + + String + + + + + + EmailWarn + + + + String + + String + + + + + + EmailNotice + + + + String + + String + + + + + + EmailInfo + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-GeoCluster + + Used to change the settings of a cluster. + + + + + Set + GeoCluster + + + + Used to change the settings of a cluster. + + + + Set-GeoCluster + + ClusterIp + + The IP address of the cluster. + + String + + + ClusterName + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + String + + + Type + + Specify the type of cluster. +Valid values: + - default + - remoteLM + - localLM +Note: The values are case sensitive. + + String + + + Checker + + Specify the method used to check the status of the cluster. +none – No checking is performed +tcp – TCP Connect +icmp – ICMP Ping + + String + + + CheckerPort + + Set the port used for checking the cluster. This parameter is only relevant if the checker is set to tcp. + + Int32 + + + Enable + + Enable/disable the cluster. +0 - Disable +1 - Enable + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoCluster + + ClusterIp + + The IP address of the cluster. + + String + + + ClusterName + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + String + + + Type + + Specify the type of cluster. +Valid values: + - default + - remoteLM + - localLM +Note: The values are case sensitive. + + String + + + Checker + + Specify the method used to check the status of the cluster. +none – No checking is performed +tcp – TCP Connect +icmp – ICMP Ping + + String + + + CheckerPort + + Set the port used for checking the cluster. This parameter is only relevant if the checker is set to tcp. + + Int32 + + + Enable + + Enable/disable the cluster. +0 - Disable +1 - Enable + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + The IP address of the cluster. + + String + + String + + + + + + ClusterName + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + String + + String + + + + + + Type + + Specify the type of cluster. +Valid values: + - default + - remoteLM + - localLM +Note: The values are case sensitive. + + String + + String + + + + + + Checker + + Specify the method used to check the status of the cluster. +none – No checking is performed +tcp – TCP Connect +icmp – ICMP Ping + + String + + String + + + + + + CheckerPort + + Set the port used for checking the cluster. This parameter is only relevant if the checker is set to tcp. + + Int32 + + Int32 + + + + + + Enable + + Enable/disable the cluster. +0 - Disable +1 - Enable + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoCluster –IP 10.34.52.55 -Checker tcp -CheckerPort + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Index : 1 +Status : Up +Name : ExampleCluster +ClusterVSAddress : +IPAddress : 10.34.52.55 +Checker : tcp +CheckerPort : 80 +Type : default +Enable : Y +LocationLatitude : +LocationLongitude : + + + + + + + + + + + + + + + + + Set-GeoClusterCoordinates + + Allows you to specify the location of a cluster. + + + + + Set + GeoClusterCoordinates + + + + Allows you to specify the location of a cluster. + + + + Set-GeoClusterCoordinates + + ClusterIp + + The IP address of the cluster. + + String + + + LatSecs + + The latitude of the location. +The latsecs and longsecs values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + LongSecs + + The longitude of the location. +The latsecs and longsecs values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoClusterCoordinates + + ClusterIp + + The IP address of the cluster. + + String + + + LatSecs + + The latitude of the location. +The latsecs and longsecs values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + LongSecs + + The longitude of the location. +The latsecs and longsecs values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + The IP address of the cluster. + + String + + String + + + + + + LatSecs + + The latitude of the location. +The latsecs and longsecs values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + Int32 + + + + + + LongSecs + + The longitude of the location. +The latsecs and longsecs values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoClusterCoordinates –IP 10.34.52.55 -LatSecs 5454 -LongSecs 5222 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Cluster location updated; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Cluster location updated + + + + + + + + + + + + + + + + + Set-GeoCustomLocation + + Used to update an existing custom location. + + + + + Set + GeoCustomLocation + + + + Used to update an existing custom location. + + + + Set-GeoCustomLocation + + clOldName + + The existing name of the custom location. If the custom location name contains two or more words, the name must be surrounded by double-quotes such as “New York City”. + + String + + + clNewName + + The new name of the custom location. If the custom location name contains two or more words, the name must be surrounded by double-quotes such as “New York City”. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoCustomLocation + + clOldName + + The existing name of the custom location. If the custom location name contains two or more words, the name must be surrounded by double-quotes such as “New York City”. + + String + + + clNewName + + The new name of the custom location. If the custom location name contains two or more words, the name must be surrounded by double-quotes such as “New York City”. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + clOldName + + The existing name of the custom location. If the custom location name contains two or more words, the name must be surrounded by double-quotes such as “New York City”. + + String + + String + + + + + + clNewName + + The new name of the custom location. If the custom location name contains two or more words, the name must be surrounded by double-quotes such as “New York City”. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoCustomLocation -clNewName NewExampleLocation -clOldName ExampleLocation + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-GeoDNSSECStatus + + Enable/disable DNSSEC. + + + + + Set + GeoDNSSECStatus + + + + Use this command to enable or disable DNSSEC. + + + + Set-GeoDNSSECStatus + + status + + Specify whether to enable or disable DNSSEC. Valid values: +disabled +enabled + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoDNSSECStatus + + status + + Specify whether to enable or disable DNSSEC. Valid values: +disabled +enabled + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + status + + Specify whether to enable or disable DNSSEC. Valid values: +disabled +enabled + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoDNSSECStatus -status enabled + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-GeoFQDN + + Allows you to update the FQDN settings. + + + + + Set + GeoFQDN + + + + Allows you to update the FQDN settings. + + + + Set-GeoFQDN + + FQDN + + The name of the FQDN. This command cannot change the name of the FQDN - the FQDN name needs to be specified in order to modify the other FQDN settings. + + String + + + SelectionCriteria + + Specify the selection procedure for addresses associated with the FQDN: + RoundRobin + WeightedRoundRobin + FixedWeighting + RealServerLoad + Proximity + LocationBased + AllAvailable + + String + + + SiteFailureDelay + + The number of minutes to wait after a failure before disabling. If this is not set, normal health checking is performed. +Range: 0-1440 + + Int32 + + + SiteRecoveryMode + + auto – Upon site recovery, bring the site back into operation immediately. +manual – Once the site has failed, disable the site. Manual intervention is required to restore normal operation. + + String + + + PublicRequest + + Restrict responses to clients from public IP addresses to specific classes of site. + 0 – Public Sites Only (default) + 1 – Prefer Public Sites + 2 – Prefer Private Sites + 3 – Any Sites + + String + + + PrivateRequest + + Restrict responses to clients from private IP addresses to specific classes of site. + 0 – Private Sites Only (default) + 1 – Prefer Private Sites + 2 – Prefer Public Sites + 3 – Any Sites + + String + + + Failover + + This parameter is only relevant if the SelectionCriteria is set to lb (Location Based). Enable/disable FQDN failover. + 0 – Disabled + 1 - Enabled + + Boolean + + + LocalSettings + + Enabling this parameter provides two additional parameters for the FQDN – localttl and localsticky. + + Boolean + + + localttl + + The Time To Live (TTL) value dictates how long the reply from the GEO LoadMaster can be cached by other DNS servers or client devices. The time interval is defined in seconds. This value should be as practically low as possible. The default value for this field is 10. + + Int32 + + + localsticky + + Stickiness, also known as persistence, is the property that enables all name resolution requests from an individual client to be sent to the same resources until a specified period of time has elapsed. + + Int32 + + + UnanimousChecks + + When this parameter is enabled, if any IP addresses fail health checking - the other FQDN IP addresses which belong to the same cluster will be forced down. + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoFQDN + + FQDN + + The name of the FQDN. This command cannot change the name of the FQDN - the FQDN name needs to be specified in order to modify the other FQDN settings. + + String + + + SelectionCriteria + + Specify the selection procedure for addresses associated with the FQDN: + RoundRobin + WeightedRoundRobin + FixedWeighting + RealServerLoad + Proximity + LocationBased + AllAvailable + + String + + + SiteFailureDelay + + The number of minutes to wait after a failure before disabling. If this is not set, normal health checking is performed. +Range: 0-1440 + + Int32 + + + SiteRecoveryMode + + auto – Upon site recovery, bring the site back into operation immediately. +manual – Once the site has failed, disable the site. Manual intervention is required to restore normal operation. + + String + + + PublicRequest + + Restrict responses to clients from public IP addresses to specific classes of site. + 0 – Public Sites Only (default) + 1 – Prefer Public Sites + 2 – Prefer Private Sites + 3 – Any Sites + + String + + + PrivateRequest + + Restrict responses to clients from private IP addresses to specific classes of site. + 0 – Private Sites Only (default) + 1 – Prefer Private Sites + 2 – Prefer Public Sites + 3 – Any Sites + + String + + + Failover + + This parameter is only relevant if the SelectionCriteria is set to lb (Location Based). Enable/disable FQDN failover. + 0 – Disabled + 1 - Enabled + + Boolean + + + LocalSettings + + Enabling this parameter provides two additional parameters for the FQDN – localttl and localsticky. + + Boolean + + + localttl + + The Time To Live (TTL) value dictates how long the reply from the GEO LoadMaster can be cached by other DNS servers or client devices. The time interval is defined in seconds. This value should be as practically low as possible. The default value for this field is 10. + + Int32 + + + localsticky + + Stickiness, also known as persistence, is the property that enables all name resolution requests from an individual client to be sent to the same resources until a specified period of time has elapsed. + + Int32 + + + UnanimousChecks + + When this parameter is enabled, if any IP addresses fail health checking - the other FQDN IP addresses which belong to the same cluster will be forced down. + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. This command cannot change the name of the FQDN - the FQDN name needs to be specified in order to modify the other FQDN settings. + + String + + String + + + + + + SelectionCriteria + + Specify the selection procedure for addresses associated with the FQDN: + RoundRobin + WeightedRoundRobin + FixedWeighting + RealServerLoad + Proximity + LocationBased + AllAvailable + + String + + String + + + + + + SiteFailureDelay + + The number of minutes to wait after a failure before disabling. If this is not set, normal health checking is performed. +Range: 0-1440 + + Int32 + + Int32 + + + + + + SiteRecoveryMode + + auto – Upon site recovery, bring the site back into operation immediately. +manual – Once the site has failed, disable the site. Manual intervention is required to restore normal operation. + + String + + String + + + + + + PublicRequest + + Restrict responses to clients from public IP addresses to specific classes of site. + 0 – Public Sites Only (default) + 1 – Prefer Public Sites + 2 – Prefer Private Sites + 3 – Any Sites + + String + + String + + + + + + PrivateRequest + + Restrict responses to clients from private IP addresses to specific classes of site. + 0 – Private Sites Only (default) + 1 – Prefer Private Sites + 2 – Prefer Public Sites + 3 – Any Sites + + String + + String + + + + + + Failover + + This parameter is only relevant if the SelectionCriteria is set to lb (Location Based). Enable/disable FQDN failover. + 0 – Disabled + 1 - Enabled + + Boolean + + Boolean + + + + + + LocalSettings + + Enabling this parameter provides two additional parameters for the FQDN – localttl and localsticky. + + Boolean + + Boolean + + + + + + localttl + + The Time To Live (TTL) value dictates how long the reply from the GEO LoadMaster can be cached by other DNS servers or client devices. The time interval is defined in seconds. This value should be as practically low as possible. The default value for this field is 10. + + Int32 + + Int32 + + + + + + localsticky + + Stickiness, also known as persistence, is the property that enables all name resolution requests from an individual client to be sent to the same resources until a specified period of time has elapsed. + + Int32 + + Int32 + + + + + + UnanimousChecks + + When this parameter is enabled, if any IP addresses fail health checking - the other FQDN IP addresses which belong to the same cluster will be forced down. + + Boolean + + Boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + FailTime + + The number of minutes to wait after a failure before disabling. If this is not set, normal health checking is performed. +Range: 0-1440 (minutes) +This is a legacy parameter - use the SiteFailureDelay parameter instead. + + int32 + + int32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoFQDN –FQDN Example.com –SelectionCriteria RoundRobin + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-GeoFQDNSiteAddress + + Allows you to update the details of the map. + + + + + Set + GeoFQDNSiteAddress + + + + Allows you to update the details of the map. + + + + Set-GeoFQDNSiteAddress + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + IPv4 or IPv6 address of the map to be modified. + + String + + + Checker + + Specify the type of checking to be performed on this IP address. Values are: + None + Icmp Ping + Tcp Connect + Cluster Checks + + String + + + Weight + + This parameter is only relevant when the Selection Criteria is set to Weighted Round Robin or Fixed Weighting. Set the weight associated with an IP address. The address with the highest weight is returned. + + Int32 + + + Enable + + Enable or disable the IP address. + 0 - Disable + 1 - Enable + + String + + + Cluster + + Specify the cluster that is associated with this IP address. + + String + + + Mapaddress + + This is only relevant when the Selection Criteria is set to Real Server Load, the Checker is set to Cluster Checks and the cluster is of type Remote LM or Local LM. +Enter a Virtual Service IP address to be mapped from the relevant LoadMaster. + + String + + + Mapport + + This is only relevant when the Selection Criteria is set to Real Server Load, the Checker is set to Cluster Checks and the cluster is of type Remote LM or Local LM. +This parameter is used in conjunction with the MapAddress parameter to specify an IP address and port combination to be mapped. +If this parameter is not set, the health check will check all Virtual Services with the same IP address as the one selected. If one of them is in an “Up” status, the FQDN will show as “Up”. If a port is specified, the health check will only check against the health of that Virtual Service when checking the health of the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoFQDNSiteAddress + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + IPv4 or IPv6 address of the map to be modified. + + String + + + Checker + + Specify the type of checking to be performed on this IP address. Values are: + None + Icmp Ping + Tcp Connect + Cluster Checks + + String + + + Weight + + This parameter is only relevant when the Selection Criteria is set to Weighted Round Robin or Fixed Weighting. Set the weight associated with an IP address. The address with the highest weight is returned. + + Int32 + + + Enable + + Enable or disable the IP address. + 0 - Disable + 1 - Enable + + String + + + Cluster + + Specify the cluster that is associated with this IP address. + + String + + + Mapaddress + + This is only relevant when the Selection Criteria is set to Real Server Load, the Checker is set to Cluster Checks and the cluster is of type Remote LM or Local LM. +Enter a Virtual Service IP address to be mapped from the relevant LoadMaster. + + String + + + Mapport + + This is only relevant when the Selection Criteria is set to Real Server Load, the Checker is set to Cluster Checks and the cluster is of type Remote LM or Local LM. +This parameter is used in conjunction with the MapAddress parameter to specify an IP address and port combination to be mapped. +If this parameter is not set, the health check will check all Virtual Services with the same IP address as the one selected. If one of them is in an “Up” status, the FQDN will show as “Up”. If a port is specified, the health check will only check against the health of that Virtual Service when checking the health of the FQDN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + SiteAddress + + IPv4 or IPv6 address of the map to be modified. + + String + + String + + + + + + Checker + + Specify the type of checking to be performed on this IP address. Values are: + None + Icmp Ping + Tcp Connect + Cluster Checks + + String + + String + + + + + + Weight + + This parameter is only relevant when the Selection Criteria is set to Weighted Round Robin or Fixed Weighting. Set the weight associated with an IP address. The address with the highest weight is returned. + + Int32 + + Int32 + + + + + + Enable + + Enable or disable the IP address. + 0 - Disable + 1 - Enable + + String + + String + + + + + + Cluster + + Specify the cluster that is associated with this IP address. + + String + + String + + + + + + Mapaddress + + This is only relevant when the Selection Criteria is set to Real Server Load, the Checker is set to Cluster Checks and the cluster is of type Remote LM or Local LM. +Enter a Virtual Service IP address to be mapped from the relevant LoadMaster. + + String + + String + + + + + + Mapport + + This is only relevant when the Selection Criteria is set to Real Server Load, the Checker is set to Cluster Checks and the cluster is of type Remote LM or Local LM. +This parameter is used in conjunction with the MapAddress parameter to specify an IP address and port combination to be mapped. +If this parameter is not set, the health check will check all Virtual Services with the same IP address as the one selected. If one of them is in an “Up” status, the FQDN will show as “Up”. If a port is specified, the health check will only check against the health of that Virtual Service when checking the health of the FQDN. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoFQDNSiteAddress –FQDN Example.com -IP 10.134.33.2 -checker "Icmp Ping" + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-GeoFQDNSiteCheckerAddress + + Allows you to set the address and port used to health check the IP address. + + + + + Set + GeoFQDNSiteCheckerAddress + + + + Allows you to set the address and port used to health check the IP address. + + + + Set-GeoFQDNSiteCheckerAddress + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + The address of the site to change the checker address for. + + String + + + CheckerIP + + The IP address to be used to health check the IP address. Setting this to an empty string will unset the checker address. + + String + + + CheckerPort + + The port to be used to health check the IP address. Setting this parameter to an empty string will default the checker port to 80. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoFQDNSiteCheckerAddress + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + The address of the site to change the checker address for. + + String + + + CheckerIP + + The IP address to be used to health check the IP address. Setting this to an empty string will unset the checker address. + + String + + + CheckerPort + + The port to be used to health check the IP address. Setting this parameter to an empty string will default the checker port to 80. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + SiteAddress + + The address of the site to change the checker address for. + + String + + String + + + + + + CheckerIP + + The IP address to be used to health check the IP address. Setting this to an empty string will unset the checker address. + + String + + String + + + + + + CheckerPort + + The port to be used to health check the IP address. Setting this parameter to an empty string will default the checker port to 80. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoFQDNSiteCheckerAddress -CheckerIP 10.134.44.55 -FQDN Example.com -SiteAddress 10.134.33.2 -Port 80 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Status : Down +SelectionCriteria : RoundRobin +SiteRecoveryMode : auto +Mapping : 1 +LocalSettings : 0 +UnanimousChecks : N +Map : @{Status=Down; Index=1; IPAddress=10.134.33.2; Checker=icmp; CheckerPort=80; CheckerAddr=10.134.44.55; Weight=1000; Enable=Y; + LocationLatitude=; LocationLongitude=} +Failover : N +SiteFailureDelay : 0 +Fqdn : Example.com. +PrivateRequest : 0 +PublicRequest : 0 + + + + + + + + + + + + + + + + + Set-GeoFQDNSiteCoordinates + + Allows you to set the latitude and longitude of an IP address. + + + + + Set + GeoFQDNSiteCoordinates + + + + Allows you to set the latitude and longitude of an IP address when the Selection Criteria of the FQDN is set to Proximity. + + + + Set-GeoFQDNSiteCoordinates + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + IP address of the map to be modified. + + String + + + Lat + + The latitude of the IP address in the format of total seconds. +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + Long + + The longitude of the IP address in the format of total seconds. +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoFQDNSiteCoordinates + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + IP address of the map to be modified. + + String + + + Lat + + The latitude of the IP address in the format of total seconds. +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + Long + + The longitude of the IP address in the format of total seconds. +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + SiteAddress + + IP address of the map to be modified. + + String + + String + + + + + + Lat + + The latitude of the IP address in the format of total seconds. +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + Int32 + + + + + + Long + + The longitude of the IP address in the format of total seconds. +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + IP + + IP address of the map to be modified. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoFQDNSiteCoordinates –FQDN Example.com -IP 10.134.33.2 -Lat 3000 -Long 3000 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Map location updated.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Map location updated. + + + + + + + + + + + + + + + + + Set-GeoFQDNSiteCountry + + Assign a country/continent to an IP address. + + + + + Set + GeoFQDNSiteCountry + + + + Assigns a country or continent to an IP address in an FQDN which has the Selection Criteria set to Location Based. + + + + Set-GeoFQDNSiteCountry + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + The address of the map to be modified. + + String + + + CountryCode + + Two-letter country or continent code for the country/continent to be assigned. +The country code and continent codes used are the standard ISO codes. +To specify everywhere as the country, type ALL as the country code and set the IsContinent parameter to yes. + + String + + + IsContinent + + Some country codes and continent codes are the same, for example AF could mean Africa or Afghanistan. You must specify in this parameter if the code is for a country or continent. +yes – code is for a continent +no – code is for a country + + String + + + CustomLocation + + The name of an existing custom location. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoFQDNSiteCountry + + FQDN + + The name of the FQDN. + + String + + + SiteAddress + + The address of the map to be modified. + + String + + + CountryCode + + Two-letter country or continent code for the country/continent to be assigned. +The country code and continent codes used are the standard ISO codes. +To specify everywhere as the country, type ALL as the country code and set the IsContinent parameter to yes. + + String + + + IsContinent + + Some country codes and continent codes are the same, for example AF could mean Africa or Afghanistan. You must specify in this parameter if the code is for a country or continent. +yes – code is for a continent +no – code is for a country + + String + + + CustomLocation + + The name of an existing custom location. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + FQDN + + The name of the FQDN. + + String + + String + + + + + + SiteAddress + + The address of the map to be modified. + + String + + String + + + + + + CountryCode + + Two-letter country or continent code for the country/continent to be assigned. +The country code and continent codes used are the standard ISO codes. +To specify everywhere as the country, type ALL as the country code and set the IsContinent parameter to yes. + + String + + String + + + + + + IsContinent + + Some country codes and continent codes are the same, for example AF could mean Africa or Afghanistan. You must specify in this parameter if the code is for a country or continent. +yes – code is for a continent +no – code is for a country + + String + + String + + + + + + CustomLocation + + The name of an existing custom location. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoFQDNSiteCountry -FQDN Example.com -SiteAddress 10.134.33.2 -CountryCode IE -IsContinent no + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Country/Continent updated.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Country/Continent updated. + + + + + + + + + + + + + + + + + Set-GeoIPBlacklistDatabaseConfiguration + + Configure the GEO IP blacklist database settings. + + + + + Set + GeoIPBlacklistDatabaseConfiguration + + + + This command can be run to set the GEO IP blacklist database settings, such as: +- The auto-update time +- The auto-install setting +- The auto-install time + + + + Set-GeoIPBlacklistDatabaseConfiguration + + DatabaseAutoUpdate + + Enable or disable automatic downloading of updates. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoIPBlacklistDatabaseConfiguration + + DatabaseAutoInstall + + Enable or disable automatic installation of the updates. + + SwitchParameter + + + DatabaseInstallTimeHour + + Set the time of the automatic installation. The hour is the hour value from the 24-hour clock (0-23), for example 13 is 1pm. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + DatabaseAutoUpdate + + Enable or disable automatic downloading of updates. + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + DatabaseAutoInstall + + Enable or disable automatic installation of the updates. + + SwitchParameter + + SwitchParameter + + + + + + DatabaseInstallTimeHour + + Set the time of the automatic installation. The hour is the hour value from the 24-hour clock (0-23), for example 13 is 1pm. + + Int32 + + Int32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + You can only use one login method - either certificate or credential. You cannot use both. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoIPBlacklistDatabaseConfiguration -DatabaseAutoInstall -DatabaseInstallTimeHour 14 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-GeoIPRangeCoordinates + + Allows you to change the location of an IP address. + + + + + Set + GeoIPRangeCoordinates + + + + Allows you to change the location of an IP address. + + + + Set-GeoIPRangeCoordinates + + IP + + The IP address to be modified. + + String + + + Lat + + The latitude of the location. This parameter accepts values from -324000 (which converts to 90 degrees south) to 324000 (which converts to 90 degrees north). +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + Long + + The longitude of the location. This parameter accepts values from -648000 (which converts to 180 degrees East) to 648000 which converts to 180 degrees West). +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoIPRangeCoordinates + + IP + + The IP address to be modified. + + String + + + Lat + + The latitude of the location. This parameter accepts values from -324000 (which converts to 90 degrees south) to 324000 (which converts to 90 degrees north). +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + Long + + The longitude of the location. This parameter accepts values from -648000 (which converts to 180 degrees East) to 648000 which converts to 180 degrees West). +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + The IP address to be modified. + + String + + String + + + + + + Lat + + The latitude of the location. This parameter accepts values from -324000 (which converts to 90 degrees south) to 324000 (which converts to 90 degrees north). +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + Int32 + + + + + + Long + + The longitude of the location. This parameter accepts values from -648000 (which converts to 180 degrees East) to 648000 which converts to 180 degrees West). +The lat and long values should be entered as an integer containing the total seconds. This total seconds value is converted to degrees, minutes and seconds when displayed in the WUI. +There are 60 seconds in a minute and 60 minutes in a degree. +• Degrees = º +• Minutes = ‘ +• Seconds = “ + • 60” = 1’ +• 3600” = 1º +• 3660 = 1º1’ +• 3661 = 1º1’1” +You can also represent this as a decimal value for degrees where the minutes and seconds are divided by 3600 to get the decimal value. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoIPRangeCoordinates –IP 10.154.11.55 -Lat 5875 -Long 6565 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. IP range location updated; Data=} +Return Code..: 200 +Response.....: Command successfully executed. IP range location updated + + + + + + + + + + + + + + + + + Set-GeoIPRangeCountry + + Assigns a country to an IP address. + + + + + Set + GeoIPRangeCountry + + + + Assigns a country to an IP address. + + + + Set-GeoIPRangeCountry + + IP + + The IP address to be modified. + + String + + + CountryCode + + Two-character country code, for example IE is Ireland. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoIPRangeCountry + + IP + + The IP address to be modified. + + String + + + CountryCode + + Two-character country code, for example IE is Ireland. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + The IP address to be modified. + + String + + String + + + + + + CountryCode + + Two-character country code, for example IE is Ireland. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoIPRangeCountry –CountryCode US -IP 10.154.11.55 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. IP range country updated; Data=} +Return Code..: 200 +Response.....: Command successfully executed. IP range country updated + + + + + + + + + + + + + + + + + Set-GeoIPRangeCustomLocation + + Assigns a custom location to an IP address. + + + + + Set + GeoIPRangeCustomLocation + + + + Assigns a custom location to an IP address. + + + + Set-GeoIPRangeCustomLocation + + IP + + The IP address to be modified. + + String + + + CustomLoc + + The name of an existing custom location. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoIPRangeCustomLocation + + IP + + The IP address to be modified. + + String + + + CustomLoc + + The name of an existing custom location. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + The IP address to be modified. + + String + + String + + + + + + CustomLoc + + The name of an existing custom location. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoIPRangeCustomLocation -CustomLoc "US West" -IP 10.11.0.14 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. IP range country updated; Data=} +Return Code..: 200 +Response.....: Command successfully executed. IP range country updated + + + + + + + + + + + + + + + + + Set-GeoMiscParameter + + Update the miscellaneous GEO parameters. + + + + + Set + GeoMiscParameter + + + + Update the miscellaneous GEO parameters, such as those relating to the Source of Authority, Resource Check Parameters and Stickiness. + + + + Set-GeoMiscParameter + + SourceOfAuthority + + Specify the response set for Source Of Authority requests. + + String + + + NameSrv + + Specify the response set for Name Server requests + + String + + + SOAEmail + + Specify the response email string sent for SOA requests. + + String + + + TTL + + Specify the Time To Live (TTL) of the responses returned by the LoadMaster. The default value for this is 10. +The range is 1-86400. + + Int32 + + + Persist + + This parameter corresponds to the Stickiness field in the WUI. Specify how long a specific request will be returned to a host. + + Int32 + + + CheckInterval + + Specify how often to check the devices. +Range: 9-3600 +Note: The interval value must be greater than the ConnTimeout value multiplied by the RetryAttempts value (Interval > Timeout * Retry + 1). + This is to ensure that the next health check does not start before the previous one completes. + If the timeout or retry values are increased to a value that breaks this rule, the interval value will be automatically increased. + + Int32 + + + ConnTimeout + + Specify the timeout value for the check request. +Range: 4-60 + + Int32 + + + RetryAttempts + + Specify the number of times the check will be retried before the device is marked as failed. + + Int32 + + + Zone + + Specify the zone name. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-GeoMiscParameter + + SourceOfAuthority + + Specify the response set for Source Of Authority requests. + + String + + + NameSrv + + Specify the response set for Name Server requests + + String + + + SOAEmail + + Specify the response email string sent for SOA requests. + + String + + + TTL + + Specify the Time To Live (TTL) of the responses returned by the LoadMaster. The default value for this is 10. +The range is 1-86400. + + Int32 + + + Persist + + This parameter corresponds to the Stickiness field in the WUI. Specify how long a specific request will be returned to a host. + + Int32 + + + CheckInterval + + Specify how often to check the devices. +Range: 9-3600 +Note: The interval value must be greater than the ConnTimeout value multiplied by the RetryAttempts value (Interval > Timeout * Retry + 1). + This is to ensure that the next health check does not start before the previous one completes. + If the timeout or retry values are increased to a value that breaks this rule, the interval value will be automatically increased. + + Int32 + + + ConnTimeout + + Specify the timeout value for the check request. +Range: 4-60 + + Int32 + + + RetryAttempts + + Specify the number of times the check will be retried before the device is marked as failed. + + Int32 + + + Zone + + Specify the zone name. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SourceOfAuthority + + Specify the response set for Source Of Authority requests. + + String + + String + + + + + + NameSrv + + Specify the response set for Name Server requests + + String + + String + + + + + + SOAEmail + + Specify the response email string sent for SOA requests. + + String + + String + + + + + + TTL + + Specify the Time To Live (TTL) of the responses returned by the LoadMaster. The default value for this is 10. +The range is 1-86400. + + Int32 + + Int32 + + + + + + Persist + + This parameter corresponds to the Stickiness field in the WUI. Specify how long a specific request will be returned to a host. + + Int32 + + Int32 + + + + + + CheckInterval + + Specify how often to check the devices. +Range: 9-3600 +Note: The interval value must be greater than the ConnTimeout value multiplied by the RetryAttempts value (Interval > Timeout * Retry + 1). + This is to ensure that the next health check does not start before the previous one completes. + If the timeout or retry values are increased to a value that breaks this rule, the interval value will be automatically increased. + + Int32 + + Int32 + + + + + + ConnTimeout + + Specify the timeout value for the check request. +Range: 4-60 + + Int32 + + Int32 + + + + + + RetryAttempts + + Specify the number of times the check will be retried before the device is marked as failed. + + Int32 + + Int32 + + + + + + Zone + + Specify the zone name. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoMiscParameter -ConnTimeout 50 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +soa : @{TTL=10; persist=60; Zone=; SourceOfAuthority=; NameSrv=; SOAEmail=} +check : @{CheckInterval=120; ConnTimeout=50; RetryAttempts=2} + + + + + + + + + + + + + + + + + Set-HAOption + + WARNING: This function is deprecated. Use the following command instead: +Set-LmHAConfiguration + + + + + Set + HAOption + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmHAConfiguration + + + + Set-HAOption + + hatimeout + + + + Int16 + + + hawait + + + + Int16 + + + havhid + + + + Int16 + + + haprefered + + + + String + + + haif + + + + Int16 + + + hal4update + + + + Boolean + + + hal7update + + + + Boolean + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-HAOption + + hatimeout + + + + Int16 + + + hawait + + + + Int16 + + + havhid + + + + Int16 + + + haprefered + + + + String + + + haif + + + + Int16 + + + hal4update + + + + Boolean + + + hal7update + + + + Boolean + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + hatimeout + + + + Int16 + + Int16 + + + + + + hawait + + + + Int16 + + Int16 + + + + + + havhid + + + + Int16 + + Int16 + + + + + + haprefered + + + + String + + String + + + + + + haif + + + + Int16 + + Int16 + + + + + + hal4update + + + + Boolean + + Boolean + + + + + + hal7update + + + + Boolean + + Boolean + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-Interface + + WARNING: This function is deprecated. Use the following command instead: +Set-NetworkInterface + + + + + Set + Interface + + + + WARNING: This function is deprecated. Use the following command instead: +Set-NetworkInterface + + + + Set-Interface + + InterfaceID + + + + Int16 + + + IPAddress + + + + String + + + MTU + + + + Int32 + + + HACheck + + + + Boolean + + + GWIface + + + + Boolean + + + clupdate + + + + Boolean + + + GeoTraffic + + + + Boolean + + + BondMode + + + + String + + + Partner + + + + String + + + Shared + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-Interface + + InterfaceID + + + + Int16 + + + IPAddress + + + + String + + + MTU + + + + Int32 + + + HACheck + + + + Boolean + + + GWIface + + + + Boolean + + + clupdate + + + + Boolean + + + GeoTraffic + + + + Boolean + + + BondMode + + + + String + + + Partner + + + + String + + + Shared + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + IPAddress + + + + String + + String + + + + + + MTU + + + + Int32 + + Int32 + + + + + + HACheck + + + + Boolean + + Boolean + + + + + + GWIface + + + + Boolean + + Boolean + + + + + + clupdate + + + + Boolean + + Boolean + + + + + + GeoTraffic + + + + Boolean + + Boolean + + + + + + BondMode + + + + String + + String + + + + + + Partner + + + + String + + String + + + + + + Shared + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-L7Configuration + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcL7Configuration + + + + + Set + L7Configuration + + + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcL7Configuration + + + + Set-L7Configuration + + ScalingOver64KConnections + + + + Boolean + + + AlwaysCheckPersist + + + + String + + + AddPortToActiveCookie + + + + Boolean + + + RFCConform + + + + Boolean + + + CloseOnError + + + + Boolean + + + AddViaHeaderInCacheResponses + + + + Boolean + + + RSAreLocal + + + + Boolean + + + DropOnRSFail + + + + Boolean + + + DropAtDrainEnd + + + + Boolean + + + L7AuthTimeoutSecs + + + + Int16 + + + L7ClientTokenTimeoutSecs + + + + Int16 + + + L7ConnectionDrainTimeoutSecs + + + + Int32 + + + AdditionalL7Header + + + + String + + + OneHundredContinueHandling + + + + String + + + AllowEmptyPosts + + + + Boolean + + + AllowEmptyHttpHeaders + + + + Boolean + + + ForceCompleteRSMatch + + + + Boolean + + + SlowStart + + + + Int16 + + + ShareSubVSPersistance + + + + Boolean + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-L7Configuration + + ScalingOver64KConnections + + + + Boolean + + + AlwaysCheckPersist + + + + String + + + AddPortToActiveCookie + + + + Boolean + + + RFCConform + + + + Boolean + + + CloseOnError + + + + Boolean + + + AddViaHeaderInCacheResponses + + + + Boolean + + + RSAreLocal + + + + Boolean + + + DropOnRSFail + + + + Boolean + + + DropAtDrainEnd + + + + Boolean + + + L7AuthTimeoutSecs + + + + Int16 + + + L7ClientTokenTimeoutSecs + + + + Int16 + + + L7ConnectionDrainTimeoutSecs + + + + Int32 + + + AdditionalL7Header + + + + String + + + OneHundredContinueHandling + + + + String + + + AllowEmptyPosts + + + + Boolean + + + AllowEmptyHttpHeaders + + + + Boolean + + + ForceCompleteRSMatch + + + + Boolean + + + SlowStart + + + + Int16 + + + ShareSubVSPersistance + + + + Boolean + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ScalingOver64KConnections + + + + Boolean + + Boolean + + + + + + AlwaysCheckPersist + + + + String + + String + + + + + + AddPortToActiveCookie + + + + Boolean + + Boolean + + + + + + RFCConform + + + + Boolean + + Boolean + + + + + + CloseOnError + + + + Boolean + + Boolean + + + + + + AddViaHeaderInCacheResponses + + + + Boolean + + Boolean + + + + + + RSAreLocal + + + + Boolean + + Boolean + + + + + + DropOnRSFail + + + + Boolean + + Boolean + + + + + + DropAtDrainEnd + + + + Boolean + + Boolean + + + + + + L7AuthTimeoutSecs + + + + Int16 + + Int16 + + + + + + L7ClientTokenTimeoutSecs + + + + Int16 + + Int16 + + + + + + L7ConnectionDrainTimeoutSecs + + + + Int32 + + Int32 + + + + + + AdditionalL7Header + + + + String + + String + + + + + + OneHundredContinueHandling + + + + String + + String + + + + + + AllowEmptyPosts + + + + Boolean + + Boolean + + + + + + AllowEmptyHttpHeaders + + + + Boolean + + Boolean + + + + + + ForceCompleteRSMatch + + + + Boolean + + Boolean + + + + + + SlowStart + + + + Int16 + + Int16 + + + + + + ShareSubVSPersistance + + + + Boolean + + Boolean + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-LdapEndpoint + + Modify an existing LDAP endpoint. + + + + + Set + LdapEndpoint + + + + These LDAP endpoints may be used in three different areas: +• Health checks +• SSO domains +• WUI authentication + + + + Set-LdapEndpoint + + Name + + The name of the LDAP endpoint to be modified. + + String + + + Server + + Specify the address, or addresses, of the LDAP server to be used. You can also specify a port number, if desired. Separate multiple addresses with a space. + + String + + + LdapProtocol + + Specify the transport protocol to use when communicating with the LDAP server. +Valid values: +0 – Unencrypted (default) +1 – StartTLS +2 – LDAPS + + String + + + VInterval + + Specify how often to revalidate the user the with the LDAP server. +Range: +10 – 86400 seconds +Default: 60 + + Int16 + + + ReferralCount + + Multiple hops may increase authentication latency. There is a performance impact that depends on the number and depth of referrals required in your configuration. +You must have intimate knowledge of your Active Directory structure to set the referral limit appropriately. The same credentials are used for all lookups, and so on. +The use of Active Directory Global Catalog (GC) is the preferred configuration as the primary means of resolution instead of enabling LDAP referral chasing. A GC query can be used to query the GC cache instead of relying on LDAP and the referral process. Using Active Directory GC has little or no performance drag on the LoadMaster. For steps on how to add/remove the GC, refer to the following TechNet article: https://technet.microsoft.com/en-us/library/cc755257(v=ws.11).aspx + + Int16 + + + AdminUser + + Specify the username of an administrator user. The username that will be used to check the LDAP server. + + String + + + AdminPass + + Specify the password for the specified administrator user. The password that will be used to check the LDAP server. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LdapEndpoint + + Name + + The name of the LDAP endpoint to be modified. + + String + + + Server + + Specify the address, or addresses, of the LDAP server to be used. You can also specify a port number, if desired. Separate multiple addresses with a space. + + String + + + LdapProtocol + + Specify the transport protocol to use when communicating with the LDAP server. +Valid values: +0 – Unencrypted (default) +1 – StartTLS +2 – LDAPS + + String + + + VInterval + + Specify how often to revalidate the user the with the LDAP server. +Range: +10 – 86400 seconds +Default: 60 + + Int16 + + + ReferralCount + + Multiple hops may increase authentication latency. There is a performance impact that depends on the number and depth of referrals required in your configuration. +You must have intimate knowledge of your Active Directory structure to set the referral limit appropriately. The same credentials are used for all lookups, and so on. +The use of Active Directory Global Catalog (GC) is the preferred configuration as the primary means of resolution instead of enabling LDAP referral chasing. A GC query can be used to query the GC cache instead of relying on LDAP and the referral process. Using Active Directory GC has little or no performance drag on the LoadMaster. For steps on how to add/remove the GC, refer to the following TechNet article: https://technet.microsoft.com/en-us/library/cc755257(v=ws.11).aspx + + Int16 + + + AdminUser + + Specify the username of an administrator user. The username that will be used to check the LDAP server. + + String + + + AdminPass + + Specify the password for the specified administrator user. The password that will be used to check the LDAP server. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the LDAP endpoint to be modified. + + String + + String + + + + + + Server + + Specify the address, or addresses, of the LDAP server to be used. You can also specify a port number, if desired. Separate multiple addresses with a space. + + String + + String + + + + + + LdapProtocol + + Specify the transport protocol to use when communicating with the LDAP server. +Valid values: +0 – Unencrypted (default) +1 – StartTLS +2 – LDAPS + + String + + String + + + + + + VInterval + + Specify how often to revalidate the user the with the LDAP server. +Range: +10 – 86400 seconds +Default: 60 + + Int16 + + Int16 + + + + + + ReferralCount + + Multiple hops may increase authentication latency. There is a performance impact that depends on the number and depth of referrals required in your configuration. +You must have intimate knowledge of your Active Directory structure to set the referral limit appropriately. The same credentials are used for all lookups, and so on. +The use of Active Directory Global Catalog (GC) is the preferred configuration as the primary means of resolution instead of enabling LDAP referral chasing. A GC query can be used to query the GC cache instead of relying on LDAP and the referral process. Using Active Directory GC has little or no performance drag on the LoadMaster. For steps on how to add/remove the GC, refer to the following TechNet article: https://technet.microsoft.com/en-us/library/cc755257(v=ws.11).aspx + + Int16 + + Int16 + + + + + + AdminUser + + Specify the username of an administrator user. The username that will be used to check the LDAP server. + + String + + String + + + + + + AdminPass + + Specify the password for the specified administrator user. The password that will be used to check the LDAP server. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LdapEndpoint -Name ExampleLDAPEndpoint -Server "10.154.11.24 10.154.22.45" + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LicenseInitialPassword + + Set the password for the default bal LoadMaster user when initially configuring the LoadMaster. + + + + + Set + LicenseInitialPassword + + + + Set the password for the default bal LoadMaster user when initially configuring the LoadMaster. + + + + Set-LicenseInitialPassword + + Passwd + + The desired password for the default bal LoadMaster user. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Passwd + + The desired password for the default bal LoadMaster user. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LicenseInitialPassword -Passwd 2fourall + + + + + Example Output: +Full response: Command successfully executed. +Return Code..: 200 +Response.....: Command successfully executed +Data field...: + + + + + + + + + + + + + + + + + Set-LmAFEConfiguration + + Allows you to set the values of Cache, Compression and IPS options. + + + + + Set + LmAFEConfiguration + + + + Allows you to set the values of Cache, Compression and IPS options. + + + + Set-LmAFEConfiguration + + CacheSize + + Specifies the cache size. + + Int32 + + + HostCache + + Enable or disable using the host cache. + + Boolean + + + DetectionLevel + + Specify how paranoid the detection rules should be. Valid options are: +Low - Only logging, no rejection +Default - Only Critical problems are rejected +High - Serious and Critical problems are rejected +Paranoid - All problems detected are rejected + + String + + + LimitInput + + Limit the number of connections. + + Int64 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmAFEConfiguration + + CacheSize + + Specifies the cache size. + + Int32 + + + HostCache + + Enable or disable using the host cache. + + Boolean + + + DetectionLevel + + Specify how paranoid the detection rules should be. Valid options are: +Low - Only logging, no rejection +Default - Only Critical problems are rejected +High - Serious and Critical problems are rejected +Paranoid - All problems detected are rejected + + String + + + LimitInput + + Limit the number of connections. + + Int64 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + CacheSize + + Specifies the cache size. + + Int32 + + Int32 + + + + + + HostCache + + Enable or disable using the host cache. + + Boolean + + Boolean + + + + + + DetectionLevel + + Specify how paranoid the detection rules should be. Valid options are: +Low - Only logging, no rejection +Default - Only Critical problems are rejected +High - Serious and Critical problems are rejected +Paranoid - All problems detected are rejected + + String + + String + + + + + + LimitInput + + Limit the number of connections. + + Int64 + + Int64 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Paranoia + + Sets the sensitivity of IDS detection. + + int16 + + int16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmAFEConfiguration -CacheSize 150 -HostCache $True -LimitInput 10 -Paranoia 2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmAwsHAConfiguration + + Set the Amazon Web Services (AWS) High Availability (HA) options. + + + + + Set + LmAwsHAConfiguration + + + + Set the AWS HA options, such as the health check port and partner address. + + + + Set-LmAwsHAConfiguration + + Partner + + Address of the HA partner. + + String + + + HealthCheckPort + + The port over which the health check is run. This needs to be the same on both the master and the slave units in order for HA to function correctly. + + String + + + haprefered + + There are two possible values to set: +0 - No Preferred Host: Each unit takes over when the other unit fails. No switchover is performed when the partner is restarted. +1 - Prefer Master: The HA1 (master) unit always takes over. This is the default option. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmAwsHAConfiguration + + Partner + + Address of the HA partner. + + String + + + HealthCheckPort + + The port over which the health check is run. This needs to be the same on both the master and the slave units in order for HA to function correctly. + + String + + + haprefered + + There are two possible values to set: +0 - No Preferred Host: Each unit takes over when the other unit fails. No switchover is performed when the partner is restarted. +1 - Prefer Master: The HA1 (master) unit always takes over. This is the default option. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Partner + + Address of the HA partner. + + String + + String + + + + + + HealthCheckPort + + The port over which the health check is run. This needs to be the same on both the master and the slave units in order for HA to function correctly. + + String + + String + + + + + + haprefered + + There are two possible values to set: +0 - No Preferred Host: Each unit takes over when the other unit fails. No switchover is performed when the partner is restarted. +1 - Prefer Master: The HA1 (master) unit always takes over. This is the default option. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Hcp + + The port over which the health check is run. This needs to be the same on both the master and the slave units in order for HA to function correctly. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterAwsHAConfiguration –Hcp 443 –Partner 10.141.44.22 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Hcp: 443 + + + + + + + + + + + + + + + + + Set-LmAwsHAMode + + Allows you to specify the Amazon Web Services (AWS) HA mode. + + + + + Set + LmAwsHAMode + + + + Allows you to specify the Amazon Web Services (AWS) HA mode, for example, master HA Mode, slave HA Mode or Non-HA mode. + + + + Set-LmAwsHAMode + + HAMode + + Specifies the HA mode. Valid values are: + - master + - slave + - single + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmAwsHAMode + + HAMode + + Specifies the HA mode. Valid values are: + - master + - slave + - single + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + HAMode + + Specifies the HA mode. Valid values are: + - master + - slave + - single + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmAwsHAMode –HAMode master + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmAzureHAConfiguration + + Configure the HA options for an Azure LoadMaster. + + + + + Set + LmAzureHAConfiguration + + + + Allows you to set the other Azure HA options: health check port and partner address. Run this command on the master LoadMaster. + + + + Set-LmAzureHAConfiguration + + Partner + + The internal IP address of the HA partner. + + String + + + HealthCheckPort + + Set the port over which the health check will be run. The port must be the same on both the master and slave unit for HA to function correctly. + + String + + + Hapreferred + + By default, neither partner in a HA cluster has priority. When a machine restarts after a switchover that machine becomes a slave. Specifying a preferred host means that when this machine restarts it will always become the master and the partner will revert to slave mode. +There are two possible values to set: +0 - No Preferred Host: Each unit takes over when the other unit fails. No switchover is performed when the partner is restarted. +1 - Prefer Master: The HA1 (master) unit always takes over. This is the default option. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmAzureHAConfiguration + + Partner + + The internal IP address of the HA partner. + + String + + + HealthCheckPort + + Set the port over which the health check will be run. The port must be the same on both the master and slave unit for HA to function correctly. + + String + + + Hapreferred + + By default, neither partner in a HA cluster has priority. When a machine restarts after a switchover that machine becomes a slave. Specifying a preferred host means that when this machine restarts it will always become the master and the partner will revert to slave mode. +There are two possible values to set: +0 - No Preferred Host: Each unit takes over when the other unit fails. No switchover is performed when the partner is restarted. +1 - Prefer Master: The HA1 (master) unit always takes over. This is the default option. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Partner + + The internal IP address of the HA partner. + + String + + String + + + + + + HealthCheckPort + + Set the port over which the health check will be run. The port must be the same on both the master and slave unit for HA to function correctly. + + String + + String + + + + + + Hapreferred + + By default, neither partner in a HA cluster has priority. When a machine restarts after a switchover that machine becomes a slave. Specifying a preferred host means that when this machine restarts it will always become the master and the partner will revert to slave mode. +There are two possible values to set: +0 - No Preferred Host: Each unit takes over when the other unit fails. No switchover is performed when the partner is restarted. +1 - Prefer Master: The HA1 (master) unit always takes over. This is the default option. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + haprefered + + There are two possible values to set: +0 - No Preferred Host: Each unit takes over when the other unit fails. No switchover is performed when the partner is restarted. +1 - Prefer Master: The HA1 (master) unit always takes over. This is the default option. + + int32 + + int32 + + + + + + Hcp + + The port over which the health check is run. This needs to be the same on both the master and the slave units in order for HA to function correctly. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterAzureHAConfiguration –HealthCheckPort 8443 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Hcp: 8443 + + + + + + + + + + + + + + + + + Set-LmAzureHAMode + + Allows you to specify the Azure HA mode. + + + + + Set + LmAzureHAMode + + + + Allows you to specify the Azure HA mode. For example, Master HA Mode, Slave HA Mode or Non-HA Mode (single). + + + + Set-LmAzureHAMode + + HAMode + + Specifies the HA mode. Valid options are master, slave or single. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmAzureHAMode + + HAMode + + Specifies the HA mode. Valid options are master, slave or single. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + HAMode + + Specifies the HA mode. Valid options are master, slave or single. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterAzureHAMode –HAMode master + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmBackupConfiguration + + Allows you to set the values of the Automated Backup options. + + + + + Set + LmBackupConfiguration + + + + Allows you to set the values of the Automated Backup options. + + + + Set-LmBackupConfiguration + + BackupEnable + + Specifies if scheduled backups are enabled. + + String + + + BackupHour + + For scheduled backups, this parameter specifies the "hour" number (0-23). + + Int16 + + + BackupMinute + + For scheduled backups, this parameter specifies the "minute" number (0-59). + + Int16 + + + BackupDay + + For scheduled backups, this parameter specifies the "day" number (0-7). + + Int16 + + + BackupMethod + + Specify the file transfer method for automated backups. Valid values are: +Ftp +SCP + + String + + + BackupUser + + Specifies the user account that has access to save the backup file. + + String + + + BackupPassword + + Specifies the password for the user account that has access to save the backup file. + + String + + + BackupHost + + Specifies the host to save the backup file to. + + String + + + BackupPath + + Specifies the path on the remote host for saving the backup file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmBackupConfiguration + + BackupEnable + + Specifies if scheduled backups are enabled. + + String + + + BackupHour + + For scheduled backups, this parameter specifies the "hour" number (0-23). + + Int16 + + + BackupMinute + + For scheduled backups, this parameter specifies the "minute" number (0-59). + + Int16 + + + BackupDay + + For scheduled backups, this parameter specifies the "day" number (0-7). + + Int16 + + + BackupMethod + + Specify the file transfer method for automated backups. Valid values are: +Ftp +SCP + + String + + + BackupUser + + Specifies the user account that has access to save the backup file. + + String + + + BackupPassword + + Specifies the password for the user account that has access to save the backup file. + + String + + + BackupHost + + Specifies the host to save the backup file to. + + String + + + BackupPath + + Specifies the path on the remote host for saving the backup file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + BackupEnable + + Specifies if scheduled backups are enabled. + + String + + String + + + + + + BackupHour + + For scheduled backups, this parameter specifies the "hour" number (0-23). + + Int16 + + Int16 + + + + + + BackupMinute + + For scheduled backups, this parameter specifies the "minute" number (0-59). + + Int16 + + Int16 + + + + + + BackupDay + + For scheduled backups, this parameter specifies the "day" number (0-7). + + Int16 + + Int16 + + + + + + BackupMethod + + Specify the file transfer method for automated backups. Valid values are: +Ftp +SCP + + String + + String + + + + + + BackupUser + + Specifies the user account that has access to save the backup file. + + String + + String + + + + + + BackupPassword + + Specifies the password for the user account that has access to save the backup file. + + String + + String + + + + + + BackupHost + + Specifies the host to save the backup file to. + + String + + String + + + + + + BackupPath + + Specifies the path on the remote host for saving the backup file. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmBackupConfiguration -BackupEnable yes + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Parameters=} +Param........: @{backupenable=yes} +backupenable : yes + + + + + + + + + + + + + + + + + Set-LmBackupSecureIdentity + + If using scp as the BackupMethod, use this command to upload the remote identity value. + + + + + Set + LmBackupSecureIdentity + + + + This is the SSH private key generated using ssh-keygen on the remote scp server. + The key file must be encoded in base64 before uploading. + + + + Set-LmBackupSecureIdentity + + Path + + The path to the private key file, in the format <Path>\<Filename.Extension>, for example C:\t\PrivateKeyExample.ppk. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmBackupSecureIdentity + + Path + + The path to the private key file, in the format <Path>\<Filename.Extension>, for example C:\t\PrivateKeyExample.ppk. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to the private key file, in the format <Path>\<Filename.Extension>, for example C:\t\PrivateKeyExample.ppk. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmBackupSecureIdentity -Path C:\t\PrivateKeyExample.ppk + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmDateTimeConfiguration + + Allows you to set the values of the Date and Time options. + + + + + Set + LmDateTimeConfiguration + + + + Allows you to set the values of the Date and Time options. + + + + Set-LmDateTimeConfiguration + + NTPHost + + Specifies the time synchronization server. Multiple hosts can be specified using a space-separated list. + + String + + + TimeZone + + Specifies the time zone of the LoadMaster. Valid values are timezones, for example: +Etc/UTC +GMT +CET +US/Central +US/Eastern +Europe/Rome + + String + + + NTPKeyId + + The NTP key ID. Valid values range from 1 to 99. + + Int32 + + + NTPKeySecret + + The NTP shared secret string. The NTP secret can be a maximum of 40 characters long. If the secret is more than 20 characters long, it is treated as a hex string. Setting this value to an empty string will disable the NTPv4 feature. + + String + + + NTPKeyType + + Specify the NTP Key Type. The valid values are SHA-1 and MD5. Note that the values are case sensitive and must be in uppercase. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmDateTimeConfiguration + + NTPHost + + Specifies the time synchronization server. Multiple hosts can be specified using a space-separated list. + + String + + + TimeZone + + Specifies the time zone of the LoadMaster. Valid values are timezones, for example: +Etc/UTC +GMT +CET +US/Central +US/Eastern +Europe/Rome + + String + + + NTPKeyId + + The NTP key ID. Valid values range from 1 to 99. + + Int32 + + + NTPKeySecret + + The NTP shared secret string. The NTP secret can be a maximum of 40 characters long. If the secret is more than 20 characters long, it is treated as a hex string. Setting this value to an empty string will disable the NTPv4 feature. + + String + + + NTPKeyType + + Specify the NTP Key Type. The valid values are SHA-1 and MD5. Note that the values are case sensitive and must be in uppercase. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + NTPHost + + Specifies the time synchronization server. Multiple hosts can be specified using a space-separated list. + + String + + String + + + + + + TimeZone + + Specifies the time zone of the LoadMaster. Valid values are timezones, for example: +Etc/UTC +GMT +CET +US/Central +US/Eastern +Europe/Rome + + String + + String + + + + + + NTPKeyId + + The NTP key ID. Valid values range from 1 to 99. + + Int32 + + Int32 + + + + + + NTPKeySecret + + The NTP shared secret string. The NTP secret can be a maximum of 40 characters long. If the secret is more than 20 characters long, it is treated as a hex string. Setting this value to an empty string will disable the NTPv4 feature. + + String + + String + + + + + + NTPKeyType + + Specify the NTP Key Type. The valid values are SHA-1 and MD5. Note that the values are case sensitive and must be in uppercase. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and cannot be used to set all of the available parameters. Please refer to the Get-Help of the Set-Parameter command to view a full list of parameters that can be configured. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmDateTimeConfiguration -NTPHost 128.192.150.11 -TimeZone WET + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{DateTimeConfiguration=} +Param........: @{NTPHost=128.192.150.11; Time=Thu, 20 Apr 17 12:21:06 WEST; BootTime=Thu, 20 Apr 17 12:02:28 WEST; ActiveTime=Thu, 20 Apr 17 12:02:28 WE +ST; TimeZone=WET; NTPKeyId=0} + + + + + + + + + + + + + + + + + Set-LmDebugConfiguration + + Allows to set some of the values of options contained in the in the Debug Option screen of the WUI. + + + + + Set + LmDebugConfiguration + + + + Allows to set some of the values of options contained in the in the Debug Option screen of the WUI. + + + + Set-LmDebugConfiguration + + irqbalance + + The purpose of IRQBalance is distribute hardware interrupts across processors on a multiprocessor system. This should only be enabled after consultation with KEMP technical support. + + Boolean + + + linearesplogs + + By default, the LoadMaster deletes older log files. If this parameter is enabled, older log files will no longer be deleted. If the filesystem fills up, further access via the LoadMaster is blocked. + + Boolean + + + netconsole + + Netconsole is a kernel module which logs kernel printk messages over UDP allowing debugging of problems where disk logging fails. If directed by a KEMP support engineer, the syslog daemon on a specific host will receive all critical kernel messages. This can help in understanding why a LoadMaster is rebooting. Netconsole is mainly used for capturing kernel panic output. +To unset this, set the value to an empty string. + + String + + + netconsoleinterface + + The interface which hosts the Netconsole. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmDebugConfiguration + + irqbalance + + The purpose of IRQBalance is distribute hardware interrupts across processors on a multiprocessor system. This should only be enabled after consultation with KEMP technical support. + + Boolean + + + linearesplogs + + By default, the LoadMaster deletes older log files. If this parameter is enabled, older log files will no longer be deleted. If the filesystem fills up, further access via the LoadMaster is blocked. + + Boolean + + + netconsole + + Netconsole is a kernel module which logs kernel printk messages over UDP allowing debugging of problems where disk logging fails. If directed by a KEMP support engineer, the syslog daemon on a specific host will receive all critical kernel messages. This can help in understanding why a LoadMaster is rebooting. Netconsole is mainly used for capturing kernel panic output. +To unset this, set the value to an empty string. + + String + + + netconsoleinterface + + The interface which hosts the Netconsole. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + irqbalance + + The purpose of IRQBalance is distribute hardware interrupts across processors on a multiprocessor system. This should only be enabled after consultation with KEMP technical support. + + Boolean + + Boolean + + + + + + linearesplogs + + By default, the LoadMaster deletes older log files. If this parameter is enabled, older log files will no longer be deleted. If the filesystem fills up, further access via the LoadMaster is blocked. + + Boolean + + Boolean + + + + + + netconsole + + Netconsole is a kernel module which logs kernel printk messages over UDP allowing debugging of problems where disk logging fails. If directed by a KEMP support engineer, the syslog daemon on a specific host will receive all critical kernel messages. This can help in understanding why a LoadMaster is rebooting. Netconsole is mainly used for capturing kernel panic output. +To unset this, set the value to an empty string. + + String + + String + + + + + + netconsoleinterface + + The interface which hosts the Netconsole. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmDebugConfiguration -irqbalance 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Parameters=} +irqbalance : yes + + + + + + + + + + + + + + + + + Set-LmHAConfiguration + + Allows you to set the values of High Availability (HA) options. + + + + + Set + LmHAConfiguration + + + + Configure the HA options. + + + + Set-LmHAConfiguration + + hatimeout + + The time the master must be unavailable before a switchover occurs. The valid predetermined time intervals are listed below (in seconds): +3 +6 +9 +12 +15 + + Int16 + + + hawait + + This is how long (in seconds) after the initial boot, before the LoadMaster becomes active. If the partner machine is running this value is ignored. This value can be changed to mitigate the time taken for some intelligent switches to detect that the LoadMaster has started and to bring up the link. + + Int16 + + + havhid + + When using multiple HA LoadMasters on the same network, this value identifies each cluster so that there are no potential unwanted interactions. + + Int16 + + + haprefered + + By default, neither partner in a HA cluster has priority. When a machine restarts after a switchover that machine becomes a slave. Specifying a preferred host means that when this machine restarts it will always become the master and the partner will revert to slave mode. + + String + + + haif + + The network interface used when synchronising the configuration between the members of the HA cluster. + + Int16 + + + hal4update + + When using L4 services, enabling updates allows L4 connection maintenance across a HA switchover. This option is ignored for L7 services. Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + hal7update + + When using L7 services, enabling this option allows sharing of persistency information between HA partners. If a HA switchover occurs, the persistency information will then not be lost. Enabling this option can have a significant performance impact. Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + MCast + + The network interface used for multicast traffic which is used to synchronize Layer 4 and Layer 7 traffic when Inter HA Updates are enabled. + + Int16 + + + Vmac + + This option creates a shared MAC address for both units. When failover occurs, the LoadMaster handles the MAC address handover too. This allows the switches to keep the MAC address and not worry about ARP caches or stale records. + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmHAConfiguration + + hatimeout + + The time the master must be unavailable before a switchover occurs. The valid predetermined time intervals are listed below (in seconds): +3 +6 +9 +12 +15 + + Int16 + + + hawait + + This is how long (in seconds) after the initial boot, before the LoadMaster becomes active. If the partner machine is running this value is ignored. This value can be changed to mitigate the time taken for some intelligent switches to detect that the LoadMaster has started and to bring up the link. + + Int16 + + + havhid + + When using multiple HA LoadMasters on the same network, this value identifies each cluster so that there are no potential unwanted interactions. + + Int16 + + + haprefered + + By default, neither partner in a HA cluster has priority. When a machine restarts after a switchover that machine becomes a slave. Specifying a preferred host means that when this machine restarts it will always become the master and the partner will revert to slave mode. + + String + + + haif + + The network interface used when synchronising the configuration between the members of the HA cluster. + + Int16 + + + hal4update + + When using L4 services, enabling updates allows L4 connection maintenance across a HA switchover. This option is ignored for L7 services. Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + hal7update + + When using L7 services, enabling this option allows sharing of persistency information between HA partners. If a HA switchover occurs, the persistency information will then not be lost. Enabling this option can have a significant performance impact. Valid values: +0 - Disabled +1 - Enabled + + Boolean + + + MCast + + The network interface used for multicast traffic which is used to synchronize Layer 4 and Layer 7 traffic when Inter HA Updates are enabled. + + Int16 + + + Vmac + + This option creates a shared MAC address for both units. When failover occurs, the LoadMaster handles the MAC address handover too. This allows the switches to keep the MAC address and not worry about ARP caches or stale records. + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + hatimeout + + The time the master must be unavailable before a switchover occurs. The valid predetermined time intervals are listed below (in seconds): +3 +6 +9 +12 +15 + + Int16 + + Int16 + + + + + + hawait + + This is how long (in seconds) after the initial boot, before the LoadMaster becomes active. If the partner machine is running this value is ignored. This value can be changed to mitigate the time taken for some intelligent switches to detect that the LoadMaster has started and to bring up the link. + + Int16 + + Int16 + + + + + + havhid + + When using multiple HA LoadMasters on the same network, this value identifies each cluster so that there are no potential unwanted interactions. + + Int16 + + Int16 + + + + + + haprefered + + By default, neither partner in a HA cluster has priority. When a machine restarts after a switchover that machine becomes a slave. Specifying a preferred host means that when this machine restarts it will always become the master and the partner will revert to slave mode. + + String + + String + + + + + + haif + + The network interface used when synchronising the configuration between the members of the HA cluster. + + Int16 + + Int16 + + + + + + hal4update + + When using L4 services, enabling updates allows L4 connection maintenance across a HA switchover. This option is ignored for L7 services. Valid values: +0 - Disabled +1 - Enabled + + Boolean + + Boolean + + + + + + hal7update + + When using L7 services, enabling this option allows sharing of persistency information between HA partners. If a HA switchover occurs, the persistency information will then not be lost. Enabling this option can have a significant performance impact. Valid values: +0 - Disabled +1 - Enabled + + Boolean + + Boolean + + + + + + MCast + + The network interface used for multicast traffic which is used to synchronize Layer 4 and Layer 7 traffic when Inter HA Updates are enabled. + + Int16 + + Int16 + + + + + + Vmac + + This option creates a shared MAC address for both units. When failover occurs, the LoadMaster handles the MAC address handover too. This allows the switches to keep the MAC address and not worry about ARP caches or stale records. + + Boolean + + Boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To get the HA status, run the following command: Get-LmParameter -Param HAStatus +To enable HA checking on an interface, run the following command: Set-NetworkInterface -HACheck <InterfaceID> + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LMHAConfiguration -HATimeout 3 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +hatimeout : 3 + + + + + + + + + + + + + + + + + Set-LmHAMode + + Set the High Availability (HA) mode. + + + + + Set + LmHAMode + + + + Set the HA mode. + + + + Set-LmHAMode + + HaMode + + The HA mode can be one of the following options: +SingleMode - Non-HA mode +First - HA 1 mode +Second - HA 2 mode + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmHAMode + + HaMode + + The HA mode can be one of the following options: +SingleMode - Non-HA mode +First - HA 1 mode +Second - HA 2 mode + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + HaMode + + The HA mode can be one of the following options: +SingleMode - Non-HA mode +First - HA 1 mode +Second - HA 2 mode + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmHAMode -HaMode SingleMode + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmParameter + + A large number of LoadMaster parameters can be configured using the Set-LmParameter command. + + + + + Set + LmParameter + + + + Below is a list of the parameters that can be configured using the Set-LmParameter command. The parameters are grouped and ordered by WUI section. + ----------------- +WUI Section: Home +----------------- + version +Retrieves the LoadMaster firmware version. + serialnumber +The serial number of the LoadMaster. + boottime +The time at which the LoadMaster last booted. + activetime +When using non-HA mode, the activetime is the same as the boottime. When in HA mode, the active time is the time at which the LoadMaster last became the master unit. The active time will be zero if the LoadMaster is in slave mode. + +-------------------------------------------------------------------------- +WUI Section: Virtual Services > View/Modify Services > Advanced Properties +-------------------------------------------------------------------------- + addvia +Specifies which headers should be added to the HTTP stream. The parameter takes the following arguments: + 0 = Legacy Operation + 1 = X-Forwarded-For + 2 = None + 3 = X-Client-Side + 4 = X-Client-Side No Via + 5 = X-Forwarded-For No Via + 6 = Via Only + +------------------------------------ +WUI Section: Certificates & Security +------------------------------------ + localcert +This parameter is only relevant when using HA. + +------------------------------------------------------- +WUI Section: Certificates & Security > SSL Certificates +------------------------------------------------------- + admincert +The certificate used, if any, for the administrative interface. + +---------------------------------------------------- +WUI Section: Certificates & Security > Remote Access +---------------------------------------------------- + admingw +When administering the LoadMaster from a non-default interface, this option allows the user to specify a different default gateway for administrative traffic only. + sshaccess +Specify over which addresses remote administrative SSH access to the LoadMaster is allowed. + sshport +Specify the port used to access the LoadMaster via the SSH protocol. + wuiaccess +Enables or disables access to the Web User Interface (WUI). + wuiiface +Specifies the interface for the WUI. + wuiport +Specifies the port to access the WUI. + sshiface +Specify the addresses over which remote administrative SSH access to the LoadMaster is allowed. + enableapi +Enables the programmable command API Interface. +Note: If this is disabled, the API will no longer be accessible. + adminclientaccess +Valid values for this parameter are: +0 – Password only access (default) +1 – Password or client certificate +2 – Client certificate required +3 – Client certificate required (verify via OCSP) +This parameter is only relevant if Session Management is enabled. For further information on Session Management and on the Admin Client Access option, refer to the User Management, Feature Description on the KEMP documentation page: www.kemptechnologies.com/documentation + tethering +Allow the LoadMaster to regularly check the KEMP website for new software versions. +0 - Disabled +1 - Enabled + geoclients +Set the addresses of the GEO LoadMasters which can retrieve service status information from the LoadMaster. + geopartners +Set the IP address of the GEO LoadMaster partner(s). These GEO LoadMasters will keep their DNS configurations in sync. +Note: Before partnering GEO LoadMasters, a backup should be taken of the relevant GEO LoadMaster which has the correct/preferred configuration. This backup should then be restored to the other LoadMasters + that will be partnered with the original LoadMaster. + multihomedwui +Allow WUI access from multiple interfaces. Apart from the main administrative interface, each interface can then be enabled to allow WUI access. + SSHPreAuth +Set the SSH pre-authentication banner, which is displayed before the login prompt when logging in via SSH. Space characters should be escaped by entering %20. +This field accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + sessioncac +If this parameter is enabled, the LoadMaster will also check for a Common Access Card (CAC) certificate when a user is logging on to the WUI. +0 - Disabled +1 - Enabled + -------------------------------------------------------------------------------- +WUI Section: Certificates & Security > Remote Access > WUI Authorization Options +-------------------------------------------------------------------------------- + sessionauthmode +Specifies the authentication mode for the LoadMaster. +Refer to the following table for values: + | RADIUS | LDAP | Local +Value | Authent. Author. | Authent. | Authent. Author. +7 | No No | No | No No +263 | Yes No | No | Yes Yes +775 | Yes Yes | No | Yes Yes +23 | No No | Yes | Yes Yes +22 | No No | Yes | No Yes +788 | Yes Yes | Yes | No No +790 | Yes Yes | Yes | No Yes +791 | Yes Yes | Yes | Yes Yes +789 | Yes Yes | Yes | Yes No +773 | Yes Yes | No | Yes No +262 | Yes No | No | No Yes +774 | Yes Yes | No | No Yes +772 | Yes Yes | No | No No +278 | Yes No | Yes | No No +279 | Yes No | Yes | Yes Yes + sessionlocalauth +Enables or disables local authentication. + radiusbackupport +Specifies the TCP port for the backup RADIUS server. + radiusbackupsecret +Specifies the password (secret) to the backup RADIUS server. + radiusbackupserver +Specifies the backup RADIUS server to use for authentication. + radiusport +Specifies the TCP port for communication to the RADIUS server. + radiussecret +Specifies the password (secret) to the RADIUS server. + radiusserver +Specifies the RADIUS server to use for authentication. + radiusrevalidateinterval +Specifies when to revalidate the authentication to the RADIUS server. + ldapserver +Specifies the LDAP server to use for authentication. + ldapbackupserver +Specifies the backup LDAP server for authentication. + ldapsecurity +Specifies the security mode for LDAP authentication. + ldaprevalidateinterval +Specifies how often to revalidate the authentication to the LDAP server. + +------------------------------------------------------- +WUI Section: Certificates & Security > Admin WUI Access +------------------------------------------------------- + sessionidletime +Specifies the number of seconds that the WUI can be idle before logging the user out. This can be set from 60 to 86400 seconds. + sessionmaxfailattempts +Number of failed attempts before locking the user account. This can be set from 1 to 999. + sessioncontrol +Enables or disables session control. + sessionbasicauth +If the SessionControl and SessionBasicAuth parameters are both enabled, there are two levels of authentication enforced in order to access the LoadMaster WUI. The initial level is Basic Authentication where + users log in using the bal or user logins, which are default usernames defined by the system. + sessionconcurrent +Limit the maximum number of concurrent connections a single user can have. +Range: 0 to 9. A value of 0, means logins are unlimited. + geosshport +The port over which GEO LoadMasters will communicate with on another. + WUIPreAuth +Set the pre-authentication click through banner which will be displayed before the LoadMaster login page. This parameter can contain plain text or HTML code. The field cannot contain JavaScript. This field + accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + WUITLSProtocols +Specify whether or not it is possible to connect to the LoadMaster WUI using the following protocols; SSLv3, TLS1.0, TLS1.1 or TLS1.2. The protocols can be enabled and disabled using a bitmask value in the range 0 to 14. Refer to the table below to find out what number corresponds to which settings. + Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + WUICipherset +Specify the cipher set to use for the LoadMaster WUI. +The valid values are below: +- Default +- Default_NoRc4 +- BestPractices +- Intermediate_compatibility +- Backward_compatibility +- WUI +- FIPS +- Legacy +- <NameOfCustomCipherSet> Specify the cipher set to use for the LoadMaster WUI. + +--------------------------------------------------------- +WUI Section: Certificates & Security > OCSP Configuration +--------------------------------------------------------- + OCSPPort +The port of the OCSP server. + OCSPUseSSL +Specify whether or not to use SSL to connect to the OCSP server. + OCSPOnServerFail +Treat an OCSP server connection failure of timeout as if the OCSP server had returned a valid response, i.e. treat the client certificate as valid. + OCSPServer +The address of the OCSP server. + OCSPUrl +The URL to access on the OCSP server. + SSLStapling +Enable this parameter to enable the LoadMaster to respond to OCSP stapling requests. If a client connects using SSL and asks for an OCSP response, this is returned. Only Virtual Service certificates are validated. The system holds a cache of OCSP responses that are sent back to the client. This cache is maintained by the OCSP daemon. When the OCSP daemon sends a request to the server, it uses the name specified in the certificate (in the Authority Information Access field). If it cannot resolve this name, then it uses the default OCSP server specified in the OCSPServer parameter. + SSHRefreshInterval +Specify how often the LoadMaster should refresh the OCSP stapling information. The OCSP daemon caches the entry for up to the amount of time specified here, after which it is refreshed. +Valid values range from 3600 (1 hour (default)) to 604800 seconds (7 days). + +-------------------------------------------------------------- +WUI Section: System Configuration > Network Setup > Interfaces +-------------------------------------------------------------- + mcast +The network interface used for multicast traffic which is used to synchronize Layer 4 and Layer 7 traffic when Inter HA Updates are enabled. + +---------------------------------------------------------------------------- +WUI Section: System Configuration > Network Setup > Host & DNS Configuration +---------------------------------------------------------------------------- + dnssecclient +Enable or disable DNSSEC client capabilities on the LoadMaster. At least one name server must be configured before DNSSEC can be enabled. After changing this setting, the LoadMaster must be rebooted for the change to be applied. Once the setting is changed, it cannot be changed again until the LoadMaster has been rebooted. If using HA, please set the parameter on both devices separately. + 0 = Disabled + 1 = Enabled + DNSNamesEnable +When this option is enabled, the LoadMaster automatically attempts to update any changed DNS names (based on the update interval): +- If the address is not found, or if it is the same as before – nothing is done (except a log entry is generated). +- If the address is different, the Real Server entry is updated with the new address, if possible. +- If the new address is invalid for some reason, for example if it is a non-local address and the nonlocalrs option is disabled, no changes are made and a log is generated. + dnsupdateinterval +Set the update interval for DNS entries. Valid values range from 1-60 (minutes). The default value is 60. + dnsreloadonerror +If this parameter is enabled, DNS entries are reloaded when health checks have errors and an FQDN is associated with the Real Server IP address. + namserver +The DNS server the LoadMaster will use for name resolution. Setting this parameter to an empty string will delete the name servers. The last remaining name server cannot be deleted if the dnssecclient parameter is enabled. This parameter has been deprecated and replaced with the nameserver parameter. + nameserver +The DNS server the LoadMaster will use for name resolution. Setting this parameter to an empty string will delete the name servers. The last remaining name server cannot be deleted if the dnssecclient parameter is enabled. + ha1hostname +When using the LoadMaster in HA mode, this is the host name of the first node. If the LoadMaster is not in HA mode, then this will return an error. + ha2hostname +When using the LoadMaster in HA mode, this is the host name of the second node. If the LoadMaster is not in HA mode, then this will return an error. + hostname +The hostname assigned to the LoadMaster. + searchlist +The domain suffix search list when performing DNS resolution. + +------------------------------------------------------------------- +WUI Section: System Configuration > Network Setup > Default Gateway +------------------------------------------------------------------- + dfltgw +Specify the IPv4 default gateway that is to be used for communicating with the internet. + dfltgwv6 +Specify the IPv6 default gateway that is to be used for communicating with the internet. + +-------------------------------------------------------------------------- +WUI Section: System Configuration > System Administration > Backup/Restore +-------------------------------------------------------------------------- + backupday +For scheduled backups, this parameter specifies the "day" number (0-7). + backupenable +Specifies if scheduled backups are enabled. + backuphost +Specifies the host to save the backup file to. + backuphour +For scheduled backups, this parameter specifies the "hour" number (0-23). + backupminute +For scheduled backups, this parameter specifies the "minute" number (0-59). + backupsecure +Specify the file transfer method for automated backups. +0 – Ftp (insecure) +1 – scp (secure) + backuppassword +Specifies the password for the user account that has access to save the backup file. + backuppath +Specifies the path on the remote host for saving the backup file. + backupuser +Specifies the user account that has access to save the backup file. + +--------------------------------------------------------------------- +WUI Section: System Configuration > System Administration > Date/Time +--------------------------------------------------------------------- + ntphost +Specifies the time synchronization server. Multiple hosts can be specified using a space-separated list. + ntpkeytype +Specify the NTP Key Type. The valid values are SHA-1 (SHA) and MD5 (M). The values must be specified in uppercase. + ntpkeysecret +The NTP shared secret string. The NTP secret can be a maximum of 40 characters long. If the secret is more than 20 characters long, it is treated as a hex string. Setting this value to an empty string will disable the NTPv4 feature. + ntpkeyid +The NTP key ID. Valid values range from 1 to 99. + timezone +Specifies the time zone of the LoadMaster. + time +Sets the time of the LoadMaster. + ------------------------------------------------------------------- +WUI Section: System Configuration > Logging Options > Debug Options +------------------------------------------------------------------- + irqbalance +The purpose of IRQBalance is distribute hardware interrupts across processors on a multiprocessor system. This should only be enabled after consultation with KEMP Technical Support. + backupnetstat +By default, the LoadMaster includes a Netstat output in backups taken. When this is included, backups take longer to complete. You can stop the Netstat output from being included by disabling this parameter. + linearesplogs +By default, the LoadMaster deletes older log files. If this parameter is enabled, older log files will no longer be deleted. If the filesystem fills up, further access via the LoadMaster is blocked. + netconsole +Netconsole is a kernel module which logs kernel printk messages over UDP allowing debugging of problems where disk logging fails. If directed by a KEMP support engineer, the syslog daemon on a specific host + will receive all critical kernel messages. This can help in understanding why a LoadMaster is rebooting. + netconsoleinterface +The interface which hosts the Netconsole. + +-------------------------------------------------------------------- +WUI Section: System Configuration > Logging Options > Syslog Options +-------------------------------------------------------------------- + syslogemergency +Use this option to set the host(s) which will receive Emergency events only. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslogcritical +Use this option to set the host(s) which will receive Emergency and Critical events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslogerror +Use this option to set the host(s) which will receive Emergency, Critical and Error events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + sysloginfo +Use this option to set the host(s) which will receive Emergency, Critical, Error and Warning events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslognotice +Use this option to set the host(s) which will receive Emergency, Critical, Error, Warning and Notice events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslogwarn +Use this option to set the host(s) which will receive All events. Entries must be comma-separated. Up to 10 entries are supported in total for all levels. + syslogport +Specify the port that syslog messages are sent to on the receiving hosts. + ------------------------------------------------------------------ +WUI Section: System Configuration > Logging Options > SNMP Options +------------------------------------------------------------------ + snmpenable +Enable or disable SNMP. + snmpV3enable +Enable SNMP V3. + 0 = Disabled + 1 = Enabled + snmpv3user +Specify the username. + snmpv3userpasswd +Specify the user password. + snmpAuthProt +Specify the relevant authentication protocol: + - MD5 + - SHA +SHA is a more secure protocol. + snmpPrivProt +Specify the relevant privacy protocol: + - DES + - AES +AES is a more secure protocol. + snmpcontact +Specify the contact address that is sent in SNMP responses. + snmpcommunity +Specify the SNMP community string. + snmplocation +Specify the location that is sent in SNMP responses. + snmpHaTrap +Send SNMP traps from the shared IP address. This option is only available when the LoadMaster is in HA mode. + snmpv1sink +Specify the sink address for SNMP type 1 traps. + snmpv2sink +Specify the sink address for SNMP type 2 traps. + snmpclient +Specify the list of machines that can access the SNMP subsystem. If no clients are specified, then anyone can access SNMP. + snmptrapenable +Enable the generation of SNMP events whenever a significant event occurs. + +------------------------------------------------------------------- +WUI Section: System Configuration > Logging Options > Email Options +------------------------------------------------------------------- + emailuser +The user account with access to send mail messages. + emaildomain +The domain, if required, for the user account authentication. + emailpassword +The email user's password. + emailserver +The host name or address of the SMTP server to send mail messages through. + emailsslmode +Specify the type of security protocol that should be used on the connection: + 0 = None + 1 = STARTTLS, if available + 2 = STARTTLS + 3 = SSL/TLS + emailport +The TCP port on which your mail server accepts connections (usually 25). + emailcritical +The email address to receive critical messages. + emailemergency +The email address to receive emergency messages. + emailerror +The email address to receive error messages. + emailinfo +The email address to receive informational messages. + emailnotice +The email address to receive notices. + emailwarn +The email address to receive warnings. + emailenable +Enables or disables the email logging options. + +------------------------------------------------------------------- +WUI Section: System Configuration > Logging Options > SDN Log Files +------------------------------------------------------------------- + sdnstatsmode +There are two modes that can be used to gather the SDN statistics. +The modes are described below: +• Mode 1: When set to mode 1, the statistics are taken from the switch port that is connected to the server and the statistics are relayed back to the LoadMaster. +• Mode 2: When set to mode 2, the information is taken from all of the switch ports along the path. + +------------------------------------------------------------------------ +WUI Section: System Configuration > Miscellaneous Options > WUI Settings +------------------------------------------------------------------------ + hoverhelp +Enables or disables hover help in the WUI. + motd +Sets the Message Of The Day (MOTD) for the web user interface. Either plain text or a text file can be used. +The maximum number of characters is 5,000. +An error will be displayed if the MOTD is greater than 5,000 characters. + wuidisplaylines +Specifies the number of display lines in the WUI. This can be set from 10 to 100. + +---------------------------------------------------------------------------- +WUI Section: System Configuration > Miscellaneous Options > L7 Configuration +---------------------------------------------------------------------------- + transparent +When using Layer 7, when this is enabled the connection arriving at the Real Server appears to come directly from the client. Alternatively, the connection can be non-transparent which means that the + connections at the Real Server appear to come from the LoadMaster. + alwayspersist +This parameter also accepts no and yes as valid values. No and Yes correspond to 0 and 1 respectively. + expect100 +By default, the L7 module only waits for 100-Continue replies if it sees an Expect-100 header, use RFC-2616 Compliant. If the system will always wait for 100 Continue messages, use Require 100-Continue. If + the client will always send the POST data even if a 100 Continue message is not sent, use RFC-7231 Compliant instead. + localbind +In very high load situations, local port exhaustion can occur. Enabling this option allows the setting of alternate source addresses. This can be used to expand the number of available local ports. + addcookieport +When using the LoadMaster behind a NATing gateway, all client addresses are the same. To create individual cookies the remote port can also be added to the cookie. Enabling this option when not needed wastes + resources. + addforwardheader +This option, only available when L7 Transparency is disabled, allows the addition of either X-ClientSide or X-Forwarded For to the HTTP header. + authtimeout +The duration (in seconds) that a connection remains open for while authentication is ongoing. This value can be between 30 and 300. + clienttokentimeout +The duration (in seconds) to wait for the client token while the process of authentication is ongoing (used for RSA SecurID and RADIUS authentication). The default value for this parameter is 120. + finalpersist +When a Real Server is disabled, the sessions persisting on that Real Server continue to be served until the Drain Time has expired or until no more sessions are being handled by the Real Server. No new sessions will be handled by the Real Server. Valid values include 0, and 60 to 86400. + rfcconform +By default, the LoadMaster conforms to the RFC when parsing HTTP headers. Disabling this will allow interworking with some broken browsers. + dropatdrainend +If enabled, all open connections to disabled Real Servers will be dropped at the end of the Real Servers Drain Stop Time or immediately if there are no Persist entries associated with the Real Server. + droponfail +By default, existing connections are not closed if a Real Server fails. Enabling this feature causes all connections to be immediately dropped on Real Server failure. + closeonerror +When enabled, the LoadMaster will always close the client connection when it sends back an error response. For Example, this changes the behaviour of the LoadMaster when sending back a 304 File not changed + message after receiving an If-Modified-Since HTTP header. + rsarelocal +When checking to see if a client is on the local subnet, also check to see if the client is actually a Real Server. + slowstart +When using the Least Connection (or Weighted Least Connection) scheduling method, specify the time (in seconds) over which the load to a Real Server which has just come online will be throttled. + ShareSubVSPersist +By default, each SubVS has an independent persistence table. Enabling this parameter will allow the SubVS to share this information. + logsplitinterval +When using Log Insight Scheduling this is the number of messages which are received on a connection before the stream is rescheduled. The default value is 10. + allowemptyposts +By default the LoadMaster blocks POSTs that do not contain a Content-Length or Transfer-Encoding header to indicate the length of the requests payload. When this parameter is set to true, such requests are assumed to have no payload data and are therefore not rejected. + forcefullrsmatch +By default, when the LoadMaster is trying to locate a Real Server for use with content switching, it tries to use the same Real Server as currently selected, even if the port is not the same. If this parameter is enabled - the port is also compared. + AllowEmptyHttpHeaders +By default, if the LoadMaster is processing HTTP headers, it will ignore HTTP headers that have empty content. This can break some SOAP Services even though it is against the HTTP RFCs. Enabling this option will allow these empty headers through. + loguseragent +When enabled, the User Agent header field is added to the User Logs. +0 - Disabled +1 - Enabled + +--------------------------------------------------------------------------- +WUI Section: System Configuration > Miscellaneous Options > Network Options +--------------------------------------------------------------------------- + snat +Enabling this options allows the LoadMaster to NAT connections from the Real Servers to the internet. + routefilter +When enabled, this option only accepts IP frames from a host over the interface where the routing algorithm would route frames to the host. This is known as strict source route validation. + subnetoriginating +When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. + If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + nonlocalrs +Enable this option to allow assigning non-local Real Servers to Virtual Services. + multigw +Use this option to enable the ability to move the default gateway to a different interface. + conntimeout +Specify the timeout value for the check request. +Range: 4-60 + tcptimestamp +The LoadMaster can include a timestamp in the SYN when connecting to Real Servers. Only enable this option when requested to from KEMP Support. + resetclose +When enabled, the LoadMaster will close its connection to the Real Servers by using TCP RESET instead of the normal close handshake. + keepalive +By default, the system uses TCP keepalives to check for failed clients. Enabling this option improves the reliability of older TCP connections (SSH sessions). Not normally required for normal HTTP/HTTPS + services. + allowupload +The LoadMaster has been optimized with HTTP workloads in mind. Enabling this option allows non HTTP uploads to work correctly. + subnetorigin +When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. + If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + onlydefaultroutes +Enable this option to force traffic from Virtual Services, which have default route entries set, to be routed to the interface where the Virtual Service’s default route is located. + http_proxy +This option allows clients to specify the HTTP(S) proxy server and port the LoadMaster will use to access the internet. + dhkeysize +Select the strength of the key used in the Diffe-Hellman key exchanges. If this value is changed, a reboot is required in order to use the new value. The default value is 2048 Bits. + sslrenegotiate +By default, the LoadMaster allows a client to automatically renegotiate during an SSL transaction. Disabling this parameter causes SSL connections to terminate if a renegotiation is requested by the client. + sslforceserververify +By default, when re-encrypting traffic the LoadMaster does not check the certificate provided by the Real Server. Enabling this option forces the LoadMaster to verify that the certificate on the Real Server is valid, that is, the certificate authority and expiration are OK. This includes all intermediate certificates. + tcpnorecycle +Enable this option to revert to the legacy mode of reusing TCP timewait connections. +Note: Only enable this after consulting with KEMP Support. + ----------------------------------------------------------------------------- +WUI Section: System Configuration > Miscellaneous Options > AFE Configuration +----------------------------------------------------------------------------- + paranoia +Sets the sensitivity of IDS detection. + cachesize +Specifies the cache size. + hostcache +Enable or disable using the host cache. + limitinput +Limit the number of connections. + L7LimitInput +This setting limits the default maximum number of connection attempts (per second) from a specific host. + +------------------------------------------------------------------------- +WUI Section: System Configuration > Miscellaneous Options > HA Parameters +------------------------------------------------------------------------- + hastatus +The status of a HA or cluster unit. This is a read only parameter and cannot be set. Possible values are: +Normal HA: +Active, Standby, Passive (all as expected). +Cloud HA: +Active, Standby, Passive (if status not yet set). +Cluster: +Active (if master), Standby (if slave), Passive (if disabled). + +hatimeout +The time the master must be unavailable before a switchover occurs. Allowed Values: 1-5, each option being a predetermined time interval: + 1 = 3 seconds + 2 = 6 seconds + 3 = 9 seconds + 4 = 12 seconds + 5 = 15 seconds + hawait +This is how long (in seconds) after the initial boot, before the LoadMaster becomes active. If the partner machine is running this value is ignored. This value can be changed to mitigate the time taken for some intelligent switches to detect that the LoadMaster has started and to bring up the link. + haprefered +By default, neither partner in a HA cluster has priority. When a machine restarts after a switchover that machine becomes a slave. Specifying a preferred host means that when this machine restarts it will always become the master and the partner will revert to slave mode. + hamode +Specify the HA mode. If only using a single LoadMaster, use Non-HA Mode. In HA mode, one LoadMaster must be specified as the first and another as second. HA will not work if both LoadMasters are specified + the same. + 0 = Turn off HA mode + 1 = HA 1 mode + 2 = HA 2 mode + haif +The network interface used when synchronising the configuration between the members of the HA cluster. + havhid +When using multiple HA LoadMasters on the same network, this value identifies each cluster so that there are no potential unwanted interactions. + hastyle +By default, the system uses a version of VRRP (carp) to check the status of the partner. The system can also support the legacy Heartbeat program. This option only takes effect when both machines are rebooted. +0 - legacy heartbeat +1 - carp + hainitial +Perform extra network checks at boot time. This may cause instability and should not be used. + tcpfailover +When using L4 services, enabling updates allows L4 connection maintenance across a HA switchover. This option is ignored for L7 services. +This parameter is now deprecated and has been replaced with the HAL4update parameter. + cookieupdate +When using L7 services, enabling this option allows sharing of persistency information between HA partners. If a HA switchover occurs, the persistency information will then not be lost. Enabling this option + can have a significant performance impact. +This parameter is now deprecated and has been replaced with the HAL7Update parameter. + hal4update +When using L4 services, enabling updates allows L4 connection maintenance across a HA switchover. This option is ignored for L7 services. + hal7update +When using L7 services, enabling this option allows sharing of persistency information between HA partners. If a HA switchover occurs, the persistency information will then not be lost. Enabling this option can have a significant performance impact. + vmac +This option creates a shared MAC address for both units. When failover occurs, the LoadMaster handles the MAC address handover too. This allows the switches to keep the MAC address and not worry about ARP caches or stale records. + + + + Set-LmParameter + + Param + + The parameter to configure. + + String + + + Value + + The value to set the parameter to. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmParameter + + Param + + The parameter to configure. + + String + + + Value + + The value to set the parameter to. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Param + + The parameter to configure. + + String + + String + + + + + + Value + + The value to set the parameter to. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmParameter -Param SSLRefreshInterval -Value 4000 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmVpnAddrs + + Allows you to set the Virtual Private Network (VPN) addresses at the same time. + + + + + Set + LmVpnAddrs + + + + Use this command to set the VPN addresses, such as the local IP address, local subnet(s), remote IP address and remote subnet(s). + + + + Set-LmVpnAddrs + + Name + + The name of the VPN. + + String + + + LocalIp + + In non-HA mode, the default is the LoadMaster IP address, i.e. the IP address of the default gateway interface. +In HA-mode, the default is the shared IP address. + + String + + + LocalSubnets + + When the LocalIp is set, the LocalSubnet is automatically populated. Multiple local subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + + RemoteIp + + Set the IP address for the remote side of the connection. + + String + + + RemoteSubnets + + Set the subnet for the remote side of the connection. Multiple remote subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmVpnAddrs + + Name + + The name of the VPN. + + String + + + LocalIp + + In non-HA mode, the default is the LoadMaster IP address, i.e. the IP address of the default gateway interface. +In HA-mode, the default is the shared IP address. + + String + + + LocalSubnets + + When the LocalIp is set, the LocalSubnet is automatically populated. Multiple local subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + + RemoteIp + + Set the IP address for the remote side of the connection. + + String + + + RemoteSubnets + + Set the subnet for the remote side of the connection. Multiple remote subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + LocalIp + + In non-HA mode, the default is the LoadMaster IP address, i.e. the IP address of the default gateway interface. +In HA-mode, the default is the shared IP address. + + String + + String + + + + + + LocalSubnets + + When the LocalIp is set, the LocalSubnet is automatically populated. Multiple local subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + String + + + + + + RemoteIp + + Set the IP address for the remote side of the connection. + + String + + String + + + + + + RemoteSubnets + + Set the subnet for the remote side of the connection. Multiple remote subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmVpnAddrs -LocalIp 10.12.12.15 -LocalSubnets 10.12.12.0 -Name ExampleVpnAddress -RemoteIp 172.22.55.52 -RemoteSubnets 172.22.55.0 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmVpnLocalIp + + Allows you to set the local IP address of a Virtual Private Network (VPN). + + + + + Set + LmVpnLocalIp + + + + Use this command to configure the local IP address of the specified VPN. + + + + Set-LmVpnLocalIp + + Name + + The name of the VPN. + + String + + + LocalIp + + In non-HA mode, the default is the LoadMaster IP address, i.e. the IP address of the default gateway interface. +In HA-mode, the default is the shared IP address. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmVpnLocalIp + + Name + + The name of the VPN. + + String + + + LocalIp + + In non-HA mode, the default is the LoadMaster IP address, i.e. the IP address of the default gateway interface. +In HA-mode, the default is the shared IP address. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + LocalIp + + In non-HA mode, the default is the LoadMaster IP address, i.e. the IP address of the default gateway interface. +In HA-mode, the default is the shared IP address. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmVpnLocalIp -Name ExampleVPN -LocalIp 10.154.11.123 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmVpnLocalSubnet + + Allows you to set the Local Subnet Address(es). + + + + + Set + LmVpnLocalSubnet + + + + Use this command to configure the Local Subnet Address(es) of the Virtual Private Network (VPN). + + + + Set-LmVpnLocalSubnet + + Name + + The name of the VPN. + + String + + + LocalSubnets + + When the LocalIp is set, the LocalSubnet is automatically populated. Multiple local subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmVpnLocalSubnet + + Name + + The name of the VPN. + + String + + + LocalSubnets + + When the LocalIp is set, the LocalSubnet is automatically populated. Multiple local subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + LocalSubnets + + When the LocalIp is set, the LocalSubnet is automatically populated. Multiple local subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmVpnLocalSubnet -LocalSubnets 10.11.11.0 -Name ExampleVpnLocalSubnet + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmVpnPfsDisable + + Disable the Perfect Forward Secrecy (PFS) option. + + + + + Set + LmVpnPfsDisable + + + + Allows you to disable the PFS option for a particular VPN connection. + + + + Set-LmVpnPfsDisable + + Name + + The name of the VPN connection. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmVpnPfsDisable + + Name + + The name of the VPN connection. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN connection. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmVpnPfsDisable -Name ExampleVpn + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmVpnPfsEnable + + Enable the Perfect Forward Secrecy (PFS) option. + + + + + Set + LmVpnPfsEnable + + + + Allows you to enable the PFS option for a particular VPN connection. + + + + Set-LmVpnPfsEnable + + Name + + The name of the VPN connection. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmVpnPfsEnable + + Name + + The name of the VPN connection. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN connection. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmVpnPfsEnable -Name ExampleVpn + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmVpnRemoteIp + + Allows you to set the Remote IP Address of the specified Virtual Private Network (VPN). + + + + + Set + LmVpnRemoteIp + + + + Set the IP address for the remote side of the connection. + + + + Set-LmVpnRemoteIp + + Name + + The name of the VPN. + + String + + + RemoteIp + + Set the IP address for the remote side of the connection. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmVpnRemoteIp + + Name + + The name of the VPN. + + String + + + RemoteIp + + Set the IP address for the remote side of the connection. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + RemoteIp + + Set the IP address for the remote side of the connection. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmVpnRemoteIp -Name ExampleVpnRemoteIp -RemoteIp 172.22.55.2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmVpnRemoteSubnet + + Allows you to set the Remote Subnet Address(es) of the specified Virtual Private Network (VPN). + + + + + Set + LmVpnRemoteSubnet + + + + Use this command to configure the Remote Subnet Address(es) of the specified VPN. + + + + Set-LmVpnRemoteSubnet + + Name + + The name of the VPN. + + String + + + RemoteSubnets + + Set the subnet for the remote side of the connection. Multiple remote subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmVpnRemoteSubnet + + Name + + The name of the VPN. + + String + + + RemoteSubnets + + Set the subnet for the remote side of the connection. Multiple remote subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + RemoteSubnets + + Set the subnet for the remote side of the connection. Multiple remote subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmVpnRemoteSubnet -Name ExampleVpnRemoteSubnet -RemoteSubnets 10.115.2.0 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmVpnSecret + + Allows you to set the connection secret details of the specified Virtual Private Network (VPN). + + + + + Set + LmVpnSecret + + + + Configure the connection secret details for the specified VPN. + + + + Set-LmVpnSecret + + Name + + The name of the VPN. + + String + + + LocalId + + Identification for the local side of the connection. + + String + + + RemoteId + + Identification for the remote side of the connection. This can be the remoteip. + + String + + + Key + + The Pre Shared Key (PSK) string. This is the Shared key which is generated and managed on the Azure side. The key length should be at least 16 and at most 64 characters. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmVpnSecret + + Name + + The name of the VPN. + + String + + + LocalId + + Identification for the local side of the connection. + + String + + + RemoteId + + Identification for the remote side of the connection. This can be the remoteip. + + String + + + Key + + The Pre Shared Key (PSK) string. This is the Shared key which is generated and managed on the Azure side. The key length should be at least 16 and at most 64 characters. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + LocalId + + Identification for the local side of the connection. + + String + + String + + + + + + RemoteId + + Identification for the remote side of the connection. This can be the remoteip. + + String + + String + + + + + + Key + + The Pre Shared Key (PSK) string. This is the Shared key which is generated and managed on the Azure side. The key length should be at least 16 and at most 64 characters. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmVpnSecret -Key ExampleKeyExampleKey -LocalId 10.35.47.24 -Name ExampleVPN -RemoteId 10.23.34.33 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-LmWuiSetting + + Configure the WUI settings. + + + + + Set + LmWuiSetting + + + + Use this command to set values for the WUI settings parameters, such as hoverhelp and motd (Message of the Day). + + + + Set-LmWuiSetting + + hoverhelp + + Enable/disable hover help text in the WUI. +0 - Disable +1 - Enable + + Boolean + + + motd + + Set the Message of the Day (MOTD), which is displayed on the WUI home page after logging in. + + String + + + wuidisplaylines + + Set the maximum number of lines to be displayed on a single statistics page. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LmWuiSetting + + hoverhelp + + Enable/disable hover help text in the WUI. +0 - Disable +1 - Enable + + Boolean + + + motd + + Set the Message of the Day (MOTD), which is displayed on the WUI home page after logging in. + + String + + + wuidisplaylines + + Set the maximum number of lines to be displayed on a single statistics page. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + hoverhelp + + Enable/disable hover help text in the WUI. +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + motd + + Set the Message of the Day (MOTD), which is displayed on the WUI home page after logging in. + + String + + String + + + + + + wuidisplaylines + + Set the maximum number of lines to be displayed on a single statistics page. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmWuiSetting -hoverhelp 0 -motd "Example Message of the Day" + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Parameters=} +Param........: @{motd=Example Message of the Day} + + + + + + + + + + + + + + + + + Set-LogEmailConfiguration + + Allows you to set the values of the email logging options. + + + + + Set + LogEmailConfiguration + + + + Configure the various levels of email logging recipients. + + + + Set-LogEmailConfiguration + + EmailEnable + + Enables or disables the email logging options. + + Boolean + + + EmailServer + + The host name or address of the SMTP server to send mail messages through. + + String + + + EmailPort + + The TCP port on which your mail server accepts connections (usually 25). + + Int32 + + + EmailUser + + The user account with access to send mail messages. + + String + + + EmailPassword + + The email user's password. + + String + + + EmailDomain + + The domain, if required, for the user account authentication. + + String + + + EmailSSLMode + + Specify the type of security protocol that should be used on the connection: + 0 - None + 1 - STARTTLS, if available + 2 - STARTTLS + 3 - SSL/TLS + + Int16 + + + EmailEmergency + + The email address to receive emergency messages. + + String + + + EmailCritical + + The email address to receive critical messages. + + String + + + EmailError + + The email address to receive error messages. + + String + + + EmailWarn + + The email address to receive warnings. + + String + + + EmailNotice + + The email address to receive notices. + + String + + + EmailInfo + + The email address to receive informational messages. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LogEmailConfiguration + + EmailEnable + + Enables or disables the email logging options. + + Boolean + + + EmailServer + + The host name or address of the SMTP server to send mail messages through. + + String + + + EmailPort + + The TCP port on which your mail server accepts connections (usually 25). + + Int32 + + + EmailUser + + The user account with access to send mail messages. + + String + + + EmailPassword + + The email user's password. + + String + + + EmailDomain + + The domain, if required, for the user account authentication. + + String + + + EmailSSLMode + + Specify the type of security protocol that should be used on the connection: + 0 - None + 1 - STARTTLS, if available + 2 - STARTTLS + 3 - SSL/TLS + + Int16 + + + EmailEmergency + + The email address to receive emergency messages. + + String + + + EmailCritical + + The email address to receive critical messages. + + String + + + EmailError + + The email address to receive error messages. + + String + + + EmailWarn + + The email address to receive warnings. + + String + + + EmailNotice + + The email address to receive notices. + + String + + + EmailInfo + + The email address to receive informational messages. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + EmailEnable + + Enables or disables the email logging options. + + Boolean + + Boolean + + + + + + EmailServer + + The host name or address of the SMTP server to send mail messages through. + + String + + String + + + + + + EmailPort + + The TCP port on which your mail server accepts connections (usually 25). + + Int32 + + Int32 + + + + + + EmailUser + + The user account with access to send mail messages. + + String + + String + + + + + + EmailPassword + + The email user's password. + + String + + String + + + + + + EmailDomain + + The domain, if required, for the user account authentication. + + String + + String + + + + + + EmailSSLMode + + Specify the type of security protocol that should be used on the connection: + 0 - None + 1 - STARTTLS, if available + 2 - STARTTLS + 3 - SSL/TLS + + Int16 + + Int16 + + + + + + EmailEmergency + + The email address to receive emergency messages. + + String + + String + + + + + + EmailCritical + + The email address to receive critical messages. + + String + + String + + + + + + EmailError + + The email address to receive error messages. + + String + + String + + + + + + EmailWarn + + The email address to receive warnings. + + String + + String + + + + + + EmailNotice + + The email address to receive notices. + + String + + String + + + + + + EmailInfo + + The email address to receive informational messages. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To unset a parameter, set the parameter to an empty string, for example: +Set-LogEmailConfiguration -EmailEmergency "" + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LogEmailConfiguration -EmailCritical criticaluser@kemptechnologies.com -EmailEmergency emergencycontact@kemptechnologies.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{EmailConfiguration=} +Param........: @{EmailEnable=yes; EmailServer=10.154.22.132; EmailPort=80; EmailUser=test; EmailPassword=********; EmailDomain=ExampleDomain; EmailSSLMo +de=1; EmailEmergency=emergencycontact@kemptechnologies.com; EmailCritical=criticaluser@kemptechnologies.com; EmailError=; EmailWarn=; EmailNotice=; Emai +lInfo=} +EmailEnable : yes +EmailServer : 10.154.22.132 +EmailPort : 80 +EmailUser : test +EmailPassword : ******** +EmailDomain : ExampleDomain +EmailSSLMode : 1 +EmailEmergency : emergencycontact@kemptechnologies.com +EmailCritical : criticaluser@kemptechnologies.com +EmailError : +EmailWarn : +EmailNotice : +EmailInfo : + + + + + + + + + + + + + + + + + Set-LogSplitInterval + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcL7LogInsightSplitConfiguration + + + + + Set + LogSplitInterval + + + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcL7LogInsightSplitConfiguration + + + + Set-LogSplitInterval + + logsplitinterval + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LogSplitInterval + + logsplitinterval + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + logsplitinterval + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-LogSyslogConfiguration + + Allows you set which hosts the various Syslog messages get sent to. + + + + + Set + LogSyslogConfiguration + + + + Configure the various levels of syslog level alerts. + + + + Set-LogSyslogConfiguration + + SyslogCritical + + Specifies the syslog host for critical notifications. + + String + + + SyslogEmergency + + Specifies the syslog host for emergency notifications. + + String + + + SyslogError + + Specifies the syslog host for error notifications. + + String + + + SyslogInfo + + Specifies the syslog host for information notices. + + String + + + SyslogNotice + + Specifies the syslog host for general notifications. + + String + + + SyslogWarn + + Specifies the syslog host for warning notifications. + + String + + + SyslogPort + + Specify a non-standard port for syslog transfer. + + UInt16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-LogSyslogConfiguration + + SyslogCritical + + Specifies the syslog host for critical notifications. + + String + + + SyslogEmergency + + Specifies the syslog host for emergency notifications. + + String + + + SyslogError + + Specifies the syslog host for error notifications. + + String + + + SyslogInfo + + Specifies the syslog host for information notices. + + String + + + SyslogNotice + + Specifies the syslog host for general notifications. + + String + + + SyslogWarn + + Specifies the syslog host for warning notifications. + + String + + + SyslogPort + + Specify a non-standard port for syslog transfer. + + UInt16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SyslogCritical + + Specifies the syslog host for critical notifications. + + String + + String + + + + + + SyslogEmergency + + Specifies the syslog host for emergency notifications. + + String + + String + + + + + + SyslogError + + Specifies the syslog host for error notifications. + + String + + String + + + + + + SyslogInfo + + Specifies the syslog host for information notices. + + String + + String + + + + + + SyslogNotice + + Specifies the syslog host for general notifications. + + String + + String + + + + + + SyslogWarn + + Specifies the syslog host for warning notifications. + + String + + String + + + + + + SyslogPort + + Specify a non-standard port for syslog transfer. + + UInt16 + + UInt16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Up to ten individual IP addresses/hostnames can be specified for each of the Syslog fields. Multiple IP addresses/hostnames must be differentiated using a comma-separated list. + To unset the configuration for a level, run the command with empty parameter values, for example: +Set-LogSyslogConfiguration -SyslogError "" + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LogSyslogConfiguration -SyslogCritical 10.154.11.39 -SyslogEmergency 10.154.11.26 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +Data field...: @{SyslogSettings=} +Param........: @{SyslogEmergency=10.154.11.26; SyslogCritical=10.154.11.39; SyslogError=; SyslogWarn=; SyslogNotice=; SyslogInfo=10.154.153.94; SyslogPo +rt=60} +SyslogEmergency : 10.154.11.26 +SyslogCritical : 10.154.11.39 +SyslogError : +SyslogWarn : +SyslogNotice : +SyslogInfo : 10.154.153.94 +SyslogPort : 60 + + + + + + + + + + + + + + + + + Set-NetworkConfiguration + + Allows you to set the values of Networking options. + + + + + Set + NetworkConfiguration + + + + Allows you to set the values of Networking options. + + + + Set-NetworkConfiguration + + SNAT + + Enabling this options allows the LoadMaster to NAT connections from the Real Servers to the internet. + + Boolean + + + AllowUpload + + The LoadMaster has been optimized with HTTP workloads in mind. Enabling this option allows non HTTP uploads to work correctly. + + Boolean + + + ConnTimeout + + Specify, in seconds, the time a connection can be idle before it is closed. This is independent of Persistency Timeout. Setting a value of 0 resets to the default value of 660 seconds. + + Int64 + + + KeepAlive + + By default, the system uses TCP keepalives to check for failed clients. Enabling this option improves the reliability of older TCP connections (SSH sessions). Not normally required for normal HTTP/HTTPS services. + + Boolean + + + MultiGW + + Use this option to enable the ability to move the default gateway to a different interface. + + Boolean + + + NonLocalRS + + Enable this option to allow assigning non-local Real Servers to Virtual Services. + + Boolean + + + OnlyDefaultRoutes + + Enable this option to force traffic from Virtual Services, which have default route entries set, to be routed to the interface where the Virtual Service’s default route is located. + + Boolean + + + ResetClose + + When enabled, the LoadMaster will close its connection to the Real Servers by using TCP RESET instead of the normal close handshake. + + Boolean + + + SubnetOrigin + + When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + + Boolean + + + SubnetOriginating + + When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + + Boolean + + + TCPTimeStamp + + The LoadMaster can include a timestamp in the SYN when connecting to Real Servers. Only enable this option when requested to from KEMP Support. + + Boolean + + + RouteFilter + + When enabled, this option only accepts IP frames from a host over the interface where the routing algorithm would route frames to the host. This is known as strict source route validation. + + Boolean + + + DHKeySize + + Select the strength of the key used in the Diffe-Hellman key exchanges. If this value is changed, a reboot is required in order to use the new value. The default value is 2048 Bits. + + Int32 + + + Http_Proxy + + This option allows clients to specify the HTTP(S) proxy server and port the LoadMaster will use to access the internet. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-NetworkConfiguration + + SNAT + + Enabling this options allows the LoadMaster to NAT connections from the Real Servers to the internet. + + Boolean + + + AllowUpload + + The LoadMaster has been optimized with HTTP workloads in mind. Enabling this option allows non HTTP uploads to work correctly. + + Boolean + + + ConnTimeout + + Specify, in seconds, the time a connection can be idle before it is closed. This is independent of Persistency Timeout. Setting a value of 0 resets to the default value of 660 seconds. + + Int64 + + + KeepAlive + + By default, the system uses TCP keepalives to check for failed clients. Enabling this option improves the reliability of older TCP connections (SSH sessions). Not normally required for normal HTTP/HTTPS services. + + Boolean + + + MultiGW + + Use this option to enable the ability to move the default gateway to a different interface. + + Boolean + + + NonLocalRS + + Enable this option to allow assigning non-local Real Servers to Virtual Services. + + Boolean + + + OnlyDefaultRoutes + + Enable this option to force traffic from Virtual Services, which have default route entries set, to be routed to the interface where the Virtual Service’s default route is located. + + Boolean + + + ResetClose + + When enabled, the LoadMaster will close its connection to the Real Servers by using TCP RESET instead of the normal close handshake. + + Boolean + + + SubnetOrigin + + When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + + Boolean + + + SubnetOriginating + + When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + + Boolean + + + TCPTimeStamp + + The LoadMaster can include a timestamp in the SYN when connecting to Real Servers. Only enable this option when requested to from KEMP Support. + + Boolean + + + RouteFilter + + When enabled, this option only accepts IP frames from a host over the interface where the routing algorithm would route frames to the host. This is known as strict source route validation. + + Boolean + + + DHKeySize + + Select the strength of the key used in the Diffe-Hellman key exchanges. If this value is changed, a reboot is required in order to use the new value. The default value is 2048 Bits. + + Int32 + + + Http_Proxy + + This option allows clients to specify the HTTP(S) proxy server and port the LoadMaster will use to access the internet. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SNAT + + Enabling this options allows the LoadMaster to NAT connections from the Real Servers to the internet. + + Boolean + + Boolean + + + + + + AllowUpload + + The LoadMaster has been optimized with HTTP workloads in mind. Enabling this option allows non HTTP uploads to work correctly. + + Boolean + + Boolean + + + + + + ConnTimeout + + Specify, in seconds, the time a connection can be idle before it is closed. This is independent of Persistency Timeout. Setting a value of 0 resets to the default value of 660 seconds. + + Int64 + + Int64 + + + + + + KeepAlive + + By default, the system uses TCP keepalives to check for failed clients. Enabling this option improves the reliability of older TCP connections (SSH sessions). Not normally required for normal HTTP/HTTPS services. + + Boolean + + Boolean + + + + + + MultiGW + + Use this option to enable the ability to move the default gateway to a different interface. + + Boolean + + Boolean + + + + + + NonLocalRS + + Enable this option to allow assigning non-local Real Servers to Virtual Services. + + Boolean + + Boolean + + + + + + OnlyDefaultRoutes + + Enable this option to force traffic from Virtual Services, which have default route entries set, to be routed to the interface where the Virtual Service’s default route is located. + + Boolean + + Boolean + + + + + + ResetClose + + When enabled, the LoadMaster will close its connection to the Real Servers by using TCP RESET instead of the normal close handshake. + + Boolean + + Boolean + + + + + + SubnetOrigin + + When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + + Boolean + + Boolean + + + + + + SubnetOriginating + + When transparency is disabled for a Virtual Service, the source IP address of connections to Real Servers is the Virtual Service. When enabled, the source IP address is the local address of the LoadMaster. If the Real Server is on a subnet, the subnet address of the LoadMaster will be used. + + Boolean + + Boolean + + + + + + TCPTimeStamp + + The LoadMaster can include a timestamp in the SYN when connecting to Real Servers. Only enable this option when requested to from KEMP Support. + + Boolean + + Boolean + + + + + + RouteFilter + + When enabled, this option only accepts IP frames from a host over the interface where the routing algorithm would route frames to the host. This is known as strict source route validation. + + Boolean + + Boolean + + + + + + DHKeySize + + Select the strength of the key used in the Diffe-Hellman key exchanges. If this value is changed, a reboot is required in order to use the new value. The default value is 2048 Bits. + + Int32 + + Int32 + + + + + + Http_Proxy + + This option allows clients to specify the HTTP(S) proxy server and port the LoadMaster will use to access the internet. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and cannot be used to set all of the available parameters. Please refer to the Get-Help of the Set-Parameter command to view a full list of parameters that can be configured. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-NetworkConfiguration -SNAT 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Parameters=} +Param........: @{SNAT=yes} +SNAT : yes + + + + + + + + + + + + + + + + + Set-NetworkDNSConfiguration + + Allows you to set the values of the DNS Configuration options. + + + + + Set + NetworkDNSConfiguration + + + + Allows you to set the values of the DNS Configuration options. + + + + Set-NetworkDNSConfiguration + + Hostname + + The hostname assigned to the LoadMaster. + + String + + + HA1Hostname + + When using the LoadMaster in HA mode, this is the host name of the first node. If the LoadMaster is not in HA mode, then this will return an error. + + String + + + HA2Hostname + + When using the LoadMaster in HA mode, this is the host name of the second node. If the LoadMaster is not in HA mode, then this will return an error. + + String + + + NameServer + + The DNS server the LoadMaster will use for name resolution. + + String + + + Searchlist + + The domain suffix search list when performing DNS resolution. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-NetworkDNSConfiguration + + Hostname + + The hostname assigned to the LoadMaster. + + String + + + HA1Hostname + + When using the LoadMaster in HA mode, this is the host name of the first node. If the LoadMaster is not in HA mode, then this will return an error. + + String + + + HA2Hostname + + When using the LoadMaster in HA mode, this is the host name of the second node. If the LoadMaster is not in HA mode, then this will return an error. + + String + + + NameServer + + The DNS server the LoadMaster will use for name resolution. + + String + + + Searchlist + + The domain suffix search list when performing DNS resolution. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Hostname + + The hostname assigned to the LoadMaster. + + String + + String + + + + + + HA1Hostname + + When using the LoadMaster in HA mode, this is the host name of the first node. If the LoadMaster is not in HA mode, then this will return an error. + + String + + String + + + + + + HA2Hostname + + When using the LoadMaster in HA mode, this is the host name of the second node. If the LoadMaster is not in HA mode, then this will return an error. + + String + + String + + + + + + NameServer + + The DNS server the LoadMaster will use for name resolution. + + String + + String + + + + + + Searchlist + + The domain suffix search list when performing DNS resolution. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and cannot be used to set all of the available parameters. Please refer to the Get-Help of the Set-Parameter command to view a full list of parameters that can be configured. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-NetworkDNSConfiguration -NameServer 10.154.33.22 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Parameters=} +Param........: @{nameserver=10.154.33.22} +nameserver : 10.154.33.22 + + + + + + + + + + + + + + + + + Set-NetworkInterface + + Allows you to set the values of the options of the specified interface. + + + + + Set + NetworkInterface + + + + Allows you to set the values of the options of the specified interface. + + + + Set-NetworkInterface + + InterfaceID + + The ID of the network interface. + + Int16 + + + IPAddress + + The IP Address to be assigned to the specified network interface. + + String + + + MTU + + The MTU setting for this interface. + + Int32 + + + HACheck + + This parameter is only relevant in a HA/cluster configuration. Specify whether or not to use this interface for HA/cluster checks. +0 – Not used for HA/cluster checks +1 – Used for HA/cluster checks + The default interface used for checking is eth0. When this option is enabled for an interface, you are prevented from disabling it on that interface. To switch to another interface, specify hacheck=yes/1 for a different interface. You cannot disable this parameter by specifying hacheck=no/0. + + Boolean + + + GWIface + + Specifies if this is a network gateway interface. + + Boolean + + + clupdate + + Enable this to use this interface for cluster synchronization operations. +There must be exactly one interface that is configured for cluster updates. The default interface used for updates is eth0. When this option is enabled for an interface, you are prevented from disabling it on that interface. To switch to another interface, specify clupdate=yes/1 for a different interface. You cannot disable this parameter by specifying clupdate=no/0. + + Boolean + + + GeoTraffic + + Specify whether or not to use this interface for GEO responses and requests. + + Boolean + + + BondMode + + The bond mode determines the way in which traffic sent out of the bonded interface is actually dispersed over the real interfaces. + + String + + + Partner + + IP address of the partner machine (HA only). + + String + + + Shared + + IP address of the shared address (HA only). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-NetworkInterface + + InterfaceID + + The ID of the network interface. + + Int16 + + + IPAddress + + The IP Address to be assigned to the specified network interface. + + String + + + MTU + + The MTU setting for this interface. + + Int32 + + + HACheck + + This parameter is only relevant in a HA/cluster configuration. Specify whether or not to use this interface for HA/cluster checks. +0 – Not used for HA/cluster checks +1 – Used for HA/cluster checks + The default interface used for checking is eth0. When this option is enabled for an interface, you are prevented from disabling it on that interface. To switch to another interface, specify hacheck=yes/1 for a different interface. You cannot disable this parameter by specifying hacheck=no/0. + + Boolean + + + GWIface + + Specifies if this is a network gateway interface. + + Boolean + + + clupdate + + Enable this to use this interface for cluster synchronization operations. +There must be exactly one interface that is configured for cluster updates. The default interface used for updates is eth0. When this option is enabled for an interface, you are prevented from disabling it on that interface. To switch to another interface, specify clupdate=yes/1 for a different interface. You cannot disable this parameter by specifying clupdate=no/0. + + Boolean + + + GeoTraffic + + Specify whether or not to use this interface for GEO responses and requests. + + Boolean + + + BondMode + + The bond mode determines the way in which traffic sent out of the bonded interface is actually dispersed over the real interfaces. + + String + + + Partner + + IP address of the partner machine (HA only). + + String + + + Shared + + IP address of the shared address (HA only). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The ID of the network interface. + + Int16 + + Int16 + + + + + + IPAddress + + The IP Address to be assigned to the specified network interface. + + String + + String + + + + + + MTU + + The MTU setting for this interface. + + Int32 + + Int32 + + + + + + HACheck + + This parameter is only relevant in a HA/cluster configuration. Specify whether or not to use this interface for HA/cluster checks. +0 – Not used for HA/cluster checks +1 – Used for HA/cluster checks + The default interface used for checking is eth0. When this option is enabled for an interface, you are prevented from disabling it on that interface. To switch to another interface, specify hacheck=yes/1 for a different interface. You cannot disable this parameter by specifying hacheck=no/0. + + Boolean + + Boolean + + + + + + GWIface + + Specifies if this is a network gateway interface. + + Boolean + + Boolean + + + + + + clupdate + + Enable this to use this interface for cluster synchronization operations. +There must be exactly one interface that is configured for cluster updates. The default interface used for updates is eth0. When this option is enabled for an interface, you are prevented from disabling it on that interface. To switch to another interface, specify clupdate=yes/1 for a different interface. You cannot disable this parameter by specifying clupdate=no/0. + + Boolean + + Boolean + + + + + + GeoTraffic + + Specify whether or not to use this interface for GEO responses and requests. + + Boolean + + Boolean + + + + + + BondMode + + The bond mode determines the way in which traffic sent out of the bonded interface is actually dispersed over the real interfaces. + + String + + String + + + + + + Partner + + IP address of the partner machine (HA only). + + String + + String + + + + + + Shared + + IP address of the shared address (HA only). + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-NetworkInterface -MTU 1400 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Id : 0 +IPAddress : 10.154.11.180/16 +Mtu : 1400 +InterfaceType : Port +GeoTrafficEnable : yes +DefaultInterface : yes + + + + + + + + + + + + + + + + + Set-NetworkOptions + + WARNING: This function is deprecated. Use the following command instead: +Set-NetworkConfiguration + + + + + Set + NetworkOptions + + + + WARNING: This function is deprecated. Use the following command instead: +Set-NetworkConfiguration + + + + Set-NetworkOptions + + SNAT + + + + Boolean + + + AllowUpload + + + + Boolean + + + ConnTimeout + + + + Int64 + + + KeepAlive + + + + Boolean + + + MultiGW + + + + Boolean + + + NonLocalRS + + + + Boolean + + + OnlyDefaultRoutes + + + + Boolean + + + ResetClose + + + + Boolean + + + SubnetOrigin + + + + Boolean + + + SubnetOriginating + + + + Boolean + + + TCPTimeStamp + + + + Boolean + + + RouteFilter + + + + Boolean + + + DHKeySize + + + + Int32 + + + Http_Proxy + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-NetworkOptions + + SNAT + + + + Boolean + + + AllowUpload + + + + Boolean + + + ConnTimeout + + + + Int64 + + + KeepAlive + + + + Boolean + + + MultiGW + + + + Boolean + + + NonLocalRS + + + + Boolean + + + OnlyDefaultRoutes + + + + Boolean + + + ResetClose + + + + Boolean + + + SubnetOrigin + + + + Boolean + + + SubnetOriginating + + + + Boolean + + + TCPTimeStamp + + + + Boolean + + + RouteFilter + + + + Boolean + + + DHKeySize + + + + Int32 + + + Http_Proxy + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SNAT + + + + Boolean + + Boolean + + + + + + AllowUpload + + + + Boolean + + Boolean + + + + + + ConnTimeout + + + + Int64 + + Int64 + + + + + + KeepAlive + + + + Boolean + + Boolean + + + + + + MultiGW + + + + Boolean + + Boolean + + + + + + NonLocalRS + + + + Boolean + + Boolean + + + + + + OnlyDefaultRoutes + + + + Boolean + + Boolean + + + + + + ResetClose + + + + Boolean + + Boolean + + + + + + SubnetOrigin + + + + Boolean + + Boolean + + + + + + SubnetOriginating + + + + Boolean + + Boolean + + + + + + TCPTimeStamp + + + + Boolean + + Boolean + + + + + + RouteFilter + + + + Boolean + + Boolean + + + + + + DHKeySize + + + + Int32 + + Int32 + + + + + + Http_Proxy + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-NetworkSNMPConfiguration + + Allows you to set the values of the various SNMP options. + + + + + Set + NetworkSNMPConfiguration + + + + Allows you to set the values of the various SNMP options. + + + + Set-NetworkSNMPConfiguration + + SNMPEnable + + Enable or disable SNMP. + + Boolean + + + SNMPv3enable + + Enable SNMP V3. + 0 - Disabled + 1 - Enabled + + Boolean + + + SNMPv3user + + Specify the username. + + String + + + SNMPv3userpasswd + + Specify the user password. + + String + + + snmpAuthProt + + Specify the relevant authentication protocol: + - MD5 + - SHA + SHA is a more secure protocol. +Note: These values are case sensitive - please enter them in uppercase. + + String + + + snmpPrivProt + + Specify the relevant privacy protocol: + - DES + - AES + AES is a more secure protocol. +Note: These values are case sensitive - please enter them in uppercase. + + String + + + SNMPClient + + Specify the list of machines that can access the SNMP subsystem. If no clients are specified, then anyone can access SNMP. + + String + + + SNMPCommunity + + Specify the SNMP community string. + + String + + + SNMPContact + + Specify the contact address that is sent in SNMP responses. + + String + + + SNMPLocation + + Specify the location that is sent in SNMP responses. + + String + + + SNMPTrapEnable + + Enable the generation of SNMP events whenever a significant event occurs. + + Boolean + + + SNMPHaTrap + + Send SNMP traps from the shared IP address. This option is only available when the LoadMaster is in HA mode. + + Boolean + + + SNMPv1Sink + + Specify the sink address for SNMP type 1 traps. + + String + + + SNMPv2Sink + + Specify the sink address for SNMP type 2 traps. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-NetworkSNMPConfiguration + + SNMPEnable + + Enable or disable SNMP. + + Boolean + + + SNMPv3enable + + Enable SNMP V3. + 0 - Disabled + 1 - Enabled + + Boolean + + + SNMPv3user + + Specify the username. + + String + + + SNMPv3userpasswd + + Specify the user password. + + String + + + snmpAuthProt + + Specify the relevant authentication protocol: + - MD5 + - SHA + SHA is a more secure protocol. +Note: These values are case sensitive - please enter them in uppercase. + + String + + + snmpPrivProt + + Specify the relevant privacy protocol: + - DES + - AES + AES is a more secure protocol. +Note: These values are case sensitive - please enter them in uppercase. + + String + + + SNMPClient + + Specify the list of machines that can access the SNMP subsystem. If no clients are specified, then anyone can access SNMP. + + String + + + SNMPCommunity + + Specify the SNMP community string. + + String + + + SNMPContact + + Specify the contact address that is sent in SNMP responses. + + String + + + SNMPLocation + + Specify the location that is sent in SNMP responses. + + String + + + SNMPTrapEnable + + Enable the generation of SNMP events whenever a significant event occurs. + + Boolean + + + SNMPHaTrap + + Send SNMP traps from the shared IP address. This option is only available when the LoadMaster is in HA mode. + + Boolean + + + SNMPv1Sink + + Specify the sink address for SNMP type 1 traps. + + String + + + SNMPv2Sink + + Specify the sink address for SNMP type 2 traps. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SNMPEnable + + Enable or disable SNMP. + + Boolean + + Boolean + + + + + + SNMPv3enable + + Enable SNMP V3. + 0 - Disabled + 1 - Enabled + + Boolean + + Boolean + + + + + + SNMPv3user + + Specify the username. + + String + + String + + + + + + SNMPv3userpasswd + + Specify the user password. + + String + + String + + + + + + snmpAuthProt + + Specify the relevant authentication protocol: + - MD5 + - SHA + SHA is a more secure protocol. +Note: These values are case sensitive - please enter them in uppercase. + + String + + String + + + + + + snmpPrivProt + + Specify the relevant privacy protocol: + - DES + - AES + AES is a more secure protocol. +Note: These values are case sensitive - please enter them in uppercase. + + String + + String + + + + + + SNMPClient + + Specify the list of machines that can access the SNMP subsystem. If no clients are specified, then anyone can access SNMP. + + String + + String + + + + + + SNMPCommunity + + Specify the SNMP community string. + + String + + String + + + + + + SNMPContact + + Specify the contact address that is sent in SNMP responses. + + String + + String + + + + + + SNMPLocation + + Specify the location that is sent in SNMP responses. + + String + + String + + + + + + SNMPTrapEnable + + Enable the generation of SNMP events whenever a significant event occurs. + + Boolean + + Boolean + + + + + + SNMPHaTrap + + Send SNMP traps from the shared IP address. This option is only available when the LoadMaster is in HA mode. + + Boolean + + Boolean + + + + + + SNMPv1Sink + + Specify the sink address for SNMP type 1 traps. + + String + + String + + + + + + SNMPv2Sink + + Specify the sink address for SNMP type 2 traps. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The generic Get-Parameter and Set-Parameter commands can also be used to retrieve and update these parameters. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-NetworkSNMPConfiguration -SNMPv3enable 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +SNMPEnable : yes +SNMPv3enable : yes +SNMPv3user : +SNMPv3userpasswd : ******** +snmpAuthProt : +snmpPrivProt : +SNMPClient : +SNMPCommunity : +SNMPContact : +SNMPLocation : +SNMPTrapEnable : no + + + + + + + + + + + + + + + + + Set-PacketFilterOptionACL + + Sets a packet filtering option. + + + + + Set + PacketFilterOptionACL + + + + Sets a packet filtering option. This can also be used to enable or disable packet filtering. Note that packet filtering cannot be disabled if the GEO feature is enabled. + + + + Set-PacketFilterOptionACL + + Option + + The following packet filtering options are supported: enable, drop or ifblock: +The enable option indicates whether packet filtering is enabled or disabled on the LoadMaster. Note that packet filtering is enabled by default and cannot be disabled if the GEO feature is enabled. +If packet filtering is enabled, the drop option indicates whether the LoadMaster silently drops blocked packets or rejects them by responding with an ICMP reject packet. For security reasons it is usually best to drop any blocked packets silently. +If packet filtering is enabled, the ifblock option indicates whether the LoadMaster restricts network traffic by imposing restrictions upon routing between attached subnets. + + String + + + Value + + pecify whether to enable or disable the specified Option: + 0 – Disabled + 1 – Enabled + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-PacketFilterOptionACL + + Option + + The following packet filtering options are supported: enable, drop or ifblock: +The enable option indicates whether packet filtering is enabled or disabled on the LoadMaster. Note that packet filtering is enabled by default and cannot be disabled if the GEO feature is enabled. +If packet filtering is enabled, the drop option indicates whether the LoadMaster silently drops blocked packets or rejects them by responding with an ICMP reject packet. For security reasons it is usually best to drop any blocked packets silently. +If packet filtering is enabled, the ifblock option indicates whether the LoadMaster restricts network traffic by imposing restrictions upon routing between attached subnets. + + String + + + Value + + pecify whether to enable or disable the specified Option: + 0 – Disabled + 1 – Enabled + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Option + + The following packet filtering options are supported: enable, drop or ifblock: +The enable option indicates whether packet filtering is enabled or disabled on the LoadMaster. Note that packet filtering is enabled by default and cannot be disabled if the GEO feature is enabled. +If packet filtering is enabled, the drop option indicates whether the LoadMaster silently drops blocked packets or rejects them by responding with an ICMP reject packet. For security reasons it is usually best to drop any blocked packets silently. +If packet filtering is enabled, the ifblock option indicates whether the LoadMaster restricts network traffic by imposing restrictions upon routing between attached subnets. + + String + + String + + + + + + Value + + pecify whether to enable or disable the specified Option: + 0 – Disabled + 1 – Enabled + + Boolean + + Boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-PacketFilterOptionACL -Option drop -Value 0 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-Parameter + + WARNING: This function is deprecated. Use the following command instead: +Set-LmParameter + + + + + Set + Parameter + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmParameter + + + + Set-Parameter + + Param + + + + String + + + Value + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-Parameter + + Param + + + + String + + + Value + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Param + + + + String + + String + + + + + + Value + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-RealServer + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcRealServer + + + + + Set + RealServer + + + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcRealServer + + + + Set-RealServer + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RealServerPort + + + + Int32 + + + RSIndex + + + + Int32 + + + NewPort + + + + Int32 + + + Weight + + + + Int32 + + + Forward + + + + String + + + Enable + + + + Boolean + + + Limit + + + + Int64 + + + Critical + + + + Boolean + + + Follow + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-RealServer + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + RealServer + + + + String + + + RealServerPort + + + + Int32 + + + RSIndex + + + + Int32 + + + NewPort + + + + Int32 + + + Weight + + + + Int32 + + + Forward + + + + String + + + Enable + + + + Boolean + + + Limit + + + + Int64 + + + Critical + + + + Boolean + + + Follow + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + RealServer + + + + String + + String + + + + + + RealServerPort + + + + Int32 + + Int32 + + + + + + RSIndex + + + + Int32 + + Int32 + + + + + + NewPort + + + + Int32 + + Int32 + + + + + + Weight + + + + Int32 + + Int32 + + + + + + Forward + + + + String + + String + + + + + + Enable + + + + Boolean + + Boolean + + + + + + Limit + + + + Int64 + + Int64 + + + + + + Critical + + + + Boolean + + Boolean + + + + + + Follow + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-Rule + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcContentRule + + + + + Set + Rule + + + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcContentRule + + + + Set-Rule + + RuleName + + + + String + + + MatchType + + + + String + + + IncHost + + + + Boolean + + + NoCase + + + + Boolean + + + Negate + + + + Boolean + + + IncQuery + + + + Boolean + + + Header + + + + String + + + Pattern + + + + String + + + Replacement + + + + String + + + Type + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-Rule + + RuleName + + + + String + + + MatchType + + + + String + + + IncHost + + + + Boolean + + + NoCase + + + + Boolean + + + Negate + + + + Boolean + + + IncQuery + + + + Boolean + + + Header + + + + String + + + Pattern + + + + String + + + Replacement + + + + String + + + Type + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RuleName + + + + String + + String + + + + + + MatchType + + + + String + + String + + + + + + IncHost + + + + Boolean + + Boolean + + + + + + NoCase + + + + Boolean + + Boolean + + + + + + Negate + + + + Boolean + + Boolean + + + + + + IncQuery + + + + Boolean + + Boolean + + + + + + Header + + + + String + + String + + + + + + Pattern + + + + String + + String + + + + + + Replacement + + + + String + + String + + + + + + Type + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-SAMLSPEntity + + Use this command to set values for some SAML-related parameters. + + + + + Set + SAMLSPEntity + + + + Use this command to set values for some SAML-related parameters. + + + + Set-SAMLSPEntity + + Domain + + The domain name of the relevant domain to be updated. + + String + + + IdpEntityId + + Specify the Identity Service Provider (IdP) Entity ID. + + String + + + IdpSsoUrl + + Specify the IdP Single Sign On (SSO) URL. + + String + + + IdpLogoffUrl + + Specify the IdP Logoff URL. + + String + + + IdpCert + + Specify the IdP certificate to use for verification processing. + + String + + + SpEntityId + + The Service Provider (SP) entity ID is an identifier that is shared to enable the IdP to understand, accept and have knowledge of the entity when request messages are sent from the LoadMaster. This must correlate to the identifier of the relying party on the AD FS server. + + String + + + SpCert + + It is optional to sign requests that are sent in the context of logon. Currently, the LoadMaster does not sign those requests. +In the context of log off requests – it is mandatory and these requests must be signed. This is to avoid any spoofing and to provide extra security in relation to log off functionality. This ensures that users are not being hacked and not being logged off unnecessarily. +Using the SpCert parameter, you can choose to use a self-signed certificate or third party certificate to perform the signing. +To specify a self-signed certificate, set sp_cert to useselfsigned. To use a third party certificate, specify the name of the certificate to use (this certificate must be uploaded to the LoadMaster before it can be selected). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SAMLSPEntity + + Domain + + The domain name of the relevant domain to be updated. + + String + + + IdpEntityId + + Specify the Identity Service Provider (IdP) Entity ID. + + String + + + IdpSsoUrl + + Specify the IdP Single Sign On (SSO) URL. + + String + + + IdpLogoffUrl + + Specify the IdP Logoff URL. + + String + + + IdpCert + + Specify the IdP certificate to use for verification processing. + + String + + + SpEntityId + + The Service Provider (SP) entity ID is an identifier that is shared to enable the IdP to understand, accept and have knowledge of the entity when request messages are sent from the LoadMaster. This must correlate to the identifier of the relying party on the AD FS server. + + String + + + SpCert + + It is optional to sign requests that are sent in the context of logon. Currently, the LoadMaster does not sign those requests. +In the context of log off requests – it is mandatory and these requests must be signed. This is to avoid any spoofing and to provide extra security in relation to log off functionality. This ensures that users are not being hacked and not being logged off unnecessarily. +Using the SpCert parameter, you can choose to use a self-signed certificate or third party certificate to perform the signing. +To specify a self-signed certificate, set sp_cert to useselfsigned. To use a third party certificate, specify the name of the certificate to use (this certificate must be uploaded to the LoadMaster before it can be selected). + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + The domain name of the relevant domain to be updated. + + String + + String + + + + + + IdpEntityId + + Specify the Identity Service Provider (IdP) Entity ID. + + String + + String + + + + + + IdpSsoUrl + + Specify the IdP Single Sign On (SSO) URL. + + String + + String + + + + + + IdpLogoffUrl + + Specify the IdP Logoff URL. + + String + + String + + + + + + IdpCert + + Specify the IdP certificate to use for verification processing. + + String + + String + + + + + + SpEntityId + + The Service Provider (SP) entity ID is an identifier that is shared to enable the IdP to understand, accept and have knowledge of the entity when request messages are sent from the LoadMaster. This must correlate to the identifier of the relying party on the AD FS server. + + String + + String + + + + + + SpCert + + It is optional to sign requests that are sent in the context of logon. Currently, the LoadMaster does not sign those requests. +In the context of log off requests – it is mandatory and these requests must be signed. This is to avoid any spoofing and to provide extra security in relation to log off functionality. This ensures that users are not being hacked and not being logged off unnecessarily. +Using the SpCert parameter, you can choose to use a self-signed certificate or third party certificate to perform the signing. +To specify a self-signed certificate, set sp_cert to useselfsigned. To use a third party certificate, specify the name of the certificate to use (this certificate must be uploaded to the LoadMaster before it can be selected). + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SAMLSPEntity -Domain example2.com -IdpEntityId idp-3.example.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Domain=} +Param........: @{Id=9; Name=EXAMPLE2.COM; server=10.154.45.22; auth_type=SAML; idp_entity_id=; idp_sso_url=; idp_logoff_url=; idp_cert=; sp_entity_id=id +p-3.example.com; sp_cert=UseSelfSigned; sess_tout_type=idle time; sess_tout_idle_pub=900; sess_tout_duration_pub=1800} +Id : 9 +Name : EXAMPLE2.COM +server : 10.154.45.22 +auth_type : SAML +idp_entity_id : +idp_sso_url : +idp_logoff_url : +idp_cert : +sp_entity_id : idp-3.example.com +sp_cert : UseSelfSigned +sess_tout_type : idle time +sess_tout_idle_pub : 900 +sess_tout_duration_pub : 1800 + + + + + + + + + + + + + + + + + Set-SdnController + + Used to change the details of an SDN controller. + + + + + Set + SdnController + + + + Used to change the details of an SDN controller. + + + + Set-SdnController + + Cid + + The ID of the controller to be modified. To get the controller ID, run the getsdncontroller command. + + Int32 + + + Clid + + The cluster ID for the SDN controller for changing. + + Int32 + + + IPV4 + + The IPv4 address of the SDN controller. + + String + + + Port + + The port of the SDN controller. + + Int32 + + + Https + + The HTTP method to use. + + Boolean + + + User + + The username to be used to access the SDN controller PowerShell API. + + String + + + Password + + The password to be used to access the SDN controller PowerShell API. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SdnController + + Cid + + The ID of the controller to be modified. To get the controller ID, run the getsdncontroller command. + + Int32 + + + Clid + + The cluster ID for the SDN controller for changing. + + Int32 + + + IPV4 + + The IPv4 address of the SDN controller. + + String + + + Port + + The port of the SDN controller. + + Int32 + + + Https + + The HTTP method to use. + + Boolean + + + User + + The username to be used to access the SDN controller PowerShell API. + + String + + + Password + + The password to be used to access the SDN controller PowerShell API. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Cid + + The ID of the controller to be modified. To get the controller ID, run the getsdncontroller command. + + Int32 + + Int32 + + + + + + Clid + + The cluster ID for the SDN controller for changing. + + Int32 + + Int32 + + + + + + IPV4 + + The IPv4 address of the SDN controller. + + String + + String + + + + + + Port + + The port of the SDN controller. + + Int32 + + Int32 + + + + + + Https + + The HTTP method to use. + + Boolean + + Boolean + + + + + + User + + The username to be used to access the SDN controller PowerShell API. + + String + + String + + + + + + Password + + The password to be used to access the SDN controller PowerShell API. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If any mandatory parameters are missing, you will be prompted to enter them. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SdnController -Cid 56 -Https 0 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=Data} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-SecAdminAccess + + Allows you to set the web administrative access interface and the administrative default gateway. + + + + + Set + SecAdminAccess + + + + Allows you to set the web administrative access interface and the administrative default gateway. + + + + Set-SecAdminAccess + + WuiNetworkInterfaceId + + The index of an existing interface. This index number corresponds to the interface number in the LoadMaster WUI, i.e. the index for eth0 is 0. + + Int32 + + + WuiPort + + Specify the port used to access the administrative web interface. + + Int32 + + + WuiDefaultGateway + + When administering the LoadMaster from a non-default interface, a different default gateway for administrative traffic only can be specified using this parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SecAdminAccess + + WuiNetworkInterfaceId + + The index of an existing interface. This index number corresponds to the interface number in the LoadMaster WUI, i.e. the index for eth0 is 0. + + Int32 + + + WuiPort + + Specify the port used to access the administrative web interface. + + Int32 + + + WuiDefaultGateway + + When administering the LoadMaster from a non-default interface, a different default gateway for administrative traffic only can be specified using this parameter. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + WuiNetworkInterfaceId + + The index of an existing interface. This index number corresponds to the interface number in the LoadMaster WUI, i.e. the index for eth0 is 0. + + Int32 + + Int32 + + + + + + WuiPort + + Specify the port used to access the administrative web interface. + + Int32 + + Int32 + + + + + + WuiDefaultGateway + + When administering the LoadMaster from a non-default interface, a different default gateway for administrative traffic only can be specified using this parameter. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecAdminAccess -WuiNetworkInterfaceId 0 -WuiPort 443 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{SecAdminAccessConfiguration=} +Param........: @{WuiDefaultGateway=; WuiNetworkInterfaceId=0; WuiPort=443} + + + + + + + + + + + + + + + + + Set-SecAdminWuiConfiguration + + Configure the admin WUI configuration settings. + + + + + Set + SecAdminWuiConfiguration + + + + Set parameters such as the WUICipherset and WUITLSProtocols. + + + + Set-SecAdminWuiConfiguration + + WUITLSProtocols + + Specify whether or not it is possible to connect to the LoadMaster WUI using the following protocols; SSLv3, TLS1.0, TLS1.1 or TLS1.2. The protocols can be enabled and disabled using a bitmask value in the range 0 to 14. Refer to the table below to find out what number corresponds to which settings. +Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + + Int32 + + + WUICipherset + + Specify the cipher set to use for the LoadMaster WUI. +The valid values are below: +- Default +- Default_NoRc4 +- BestPractices +- Intermediate_compatibility +- Backward_compatibility +- WUI +- FIPS +- Legacy +- <NameOfCustomCipherSet> Specify the cipher set to use for the LoadMaster WUI. + + String + + + sessioncontrol + + Enables or disables session control. + + Boolean + + + sessionbasicauth + + If the SessionControl and SessionBasicAuth parameters are both enabled, there are two levels of authentication enforced in order to access the LoadMaster WUI. The initial level is Basic Authentication where users log in using the bal or user logins, which are default usernames defined by the system. + + Boolean + + + sessionmaxfailattempts + + Number of failed attempts before locking the user account. This can be set from 1 to 999. + + Int16 + + + sessionidletime + + Specifies the number of seconds that the WUI can be idle before logging the user out. This can be set from 60 to 86400 seconds. + + Int32 + + + sessionconcurrent + + Limit the maximum number of concurrent connections a single user can have. +Range: 0 to 9. A value of 0, means logins are unlimited. + + Int16 + + + wuipreauth + + Set the pre-authentication click through banner which will be displayed before the LoadMaster login page. This parameter can contain plain text or HTML code. The field cannot contain JavaScript. This field accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SecAdminWuiConfiguration + + WUITLSProtocols + + Specify whether or not it is possible to connect to the LoadMaster WUI using the following protocols; SSLv3, TLS1.0, TLS1.1 or TLS1.2. The protocols can be enabled and disabled using a bitmask value in the range 0 to 14. Refer to the table below to find out what number corresponds to which settings. +Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + + Int32 + + + WUICipherset + + Specify the cipher set to use for the LoadMaster WUI. +The valid values are below: +- Default +- Default_NoRc4 +- BestPractices +- Intermediate_compatibility +- Backward_compatibility +- WUI +- FIPS +- Legacy +- <NameOfCustomCipherSet> Specify the cipher set to use for the LoadMaster WUI. + + String + + + sessioncontrol + + Enables or disables session control. + + Boolean + + + sessionbasicauth + + If the SessionControl and SessionBasicAuth parameters are both enabled, there are two levels of authentication enforced in order to access the LoadMaster WUI. The initial level is Basic Authentication where users log in using the bal or user logins, which are default usernames defined by the system. + + Boolean + + + sessionmaxfailattempts + + Number of failed attempts before locking the user account. This can be set from 1 to 999. + + Int16 + + + sessionidletime + + Specifies the number of seconds that the WUI can be idle before logging the user out. This can be set from 60 to 86400 seconds. + + Int32 + + + sessionconcurrent + + Limit the maximum number of concurrent connections a single user can have. +Range: 0 to 9. A value of 0, means logins are unlimited. + + Int16 + + + wuipreauth + + Set the pre-authentication click through banner which will be displayed before the LoadMaster login page. This parameter can contain plain text or HTML code. The field cannot contain JavaScript. This field accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + WUITLSProtocols + + Specify whether or not it is possible to connect to the LoadMaster WUI using the following protocols; SSLv3, TLS1.0, TLS1.1 or TLS1.2. The protocols can be enabled and disabled using a bitmask value in the range 0 to 14. Refer to the table below to find out what number corresponds to which settings. +Number | SSLv3 | TLS1.0 | TLS1.1 | TLS1.2 +0 | Enabled | Enabled | Enabled | Enabled +1 | Disabled | Enabled | Enabled | Enabled +2 | Enabled | Disabled | Enabled | Enabled +3 | Disabled | Disabled | Enabled | Enabled +4 | Enabled | Enabled | Disabled | Enabled +5 | Disabled | Enabled | Disabled | Enabled +6 | Enabled | Disabled | Disabled | Enabled +7 | Disabled | Disabled | Disabled | Enabled +8 | Enabled | Enabled | Enabled | Disabled +9 | Disabled | Enabled | Enabled | Disabled +10 | Enabled | Disabled | Enabled | Disabled +11 | Disabled | Disabled | Enabled | Disabled +12 | Enabled | Enabled | Disabled | Disabled +13 | Disabled | Enabled | Disabled | Disabled +14 | Enabled | Disabled | Disabled | Disabled + + Int32 + + Int32 + + + + + + WUICipherset + + Specify the cipher set to use for the LoadMaster WUI. +The valid values are below: +- Default +- Default_NoRc4 +- BestPractices +- Intermediate_compatibility +- Backward_compatibility +- WUI +- FIPS +- Legacy +- <NameOfCustomCipherSet> Specify the cipher set to use for the LoadMaster WUI. + + String + + String + + + + + + sessioncontrol + + Enables or disables session control. + + Boolean + + Boolean + + + + + + sessionbasicauth + + If the SessionControl and SessionBasicAuth parameters are both enabled, there are two levels of authentication enforced in order to access the LoadMaster WUI. The initial level is Basic Authentication where users log in using the bal or user logins, which are default usernames defined by the system. + + Boolean + + Boolean + + + + + + sessionmaxfailattempts + + Number of failed attempts before locking the user account. This can be set from 1 to 999. + + Int16 + + Int16 + + + + + + sessionidletime + + Specifies the number of seconds that the WUI can be idle before logging the user out. This can be set from 60 to 86400 seconds. + + Int32 + + Int32 + + + + + + sessionconcurrent + + Limit the maximum number of concurrent connections a single user can have. +Range: 0 to 9. A value of 0, means logins are unlimited. + + Int16 + + Int16 + + + + + + wuipreauth + + Set the pre-authentication click through banner which will be displayed before the LoadMaster login page. This parameter can contain plain text or HTML code. The field cannot contain JavaScript. This field accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecAdminWuiConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Parameters=} +Param........: @{sessionmaxfailattempts=5} + + + + + + + + + + + + + + + + + Set-SecRemoteAccess + + Allows you to set the values of Remote Access options. + + + + + Set + SecRemoteAccess + + + + Allows you to set the values of Remote Access options. + + + + Set-SecRemoteAccess + + SSHAccess + + Specify over which addresses remote administrative SSH access to the LoadMaster is allowed. + + Boolean + + + SSHIface + + Specify the addresses over which remote administrative SSH access to the LoadMaster is allowed. + + String + + + SSHPort + + Specify the port used to access the LoadMaster via the SSH protocol. + + Int32 + + + SSHPreAuthBanner + + Set the SSH pre-authentication banner, which is displayed before the login prompt when logging in using SSH. Space characters should be escaped by entering %20. +This field accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + + String + + + WUIAccess + + Enables or disables WUI access. + + Boolean + + + MultiHomedWui + + Allow WUI access from multiple interfaces. Apart from the main administrative interface, each interface can then be enabled to allow WUI access. + + Boolean + + + EnableAPI + + The EnableAPI parameter is deprecated. Please use the Enable/Disable-SecAPIAccess commands instead. + + Boolean + + + AllowUpdateChecks + + Allow the LoadMaster to regularly check the KEMP website for new software versions. + + Boolean + + + GeoClients + + Set the addresses of the GEO LoadMasters which can retrieve service status information from the LoadMaster. +To unset this, set the value to an empty string. + + String + + + GeoPartners + + Set the IP address of the GEO LoadMaster partner(s). These GEO LoadMasters will keep their DNS configurations in sync. +To unset this, set the value to an empty string. + Note: Before partnering GEO LoadMasters, a backup should be taken of the relevant GEO LoadMaster which has the correct/preferred configuration. This backup should then be restored to the other LoadMasters that will be partnered with the original LoadMaster. + + String + + + GeoSSHPort + + The port over which GEO LoadMasters will communicate with on another. + + Int32 + + + geo_ssh_iface + + Specify the ID of the GEO interface in which the SSH partner tunnel is created, for example setting this to 0 means the interface eth0. This is the interface that the GEO partners will communicate through. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SecRemoteAccess + + SSHAccess + + Specify over which addresses remote administrative SSH access to the LoadMaster is allowed. + + Boolean + + + SSHIface + + Specify the addresses over which remote administrative SSH access to the LoadMaster is allowed. + + String + + + SSHPort + + Specify the port used to access the LoadMaster via the SSH protocol. + + Int32 + + + SSHPreAuthBanner + + Set the SSH pre-authentication banner, which is displayed before the login prompt when logging in using SSH. Space characters should be escaped by entering %20. +This field accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + + String + + + WUIAccess + + Enables or disables WUI access. + + Boolean + + + MultiHomedWui + + Allow WUI access from multiple interfaces. Apart from the main administrative interface, each interface can then be enabled to allow WUI access. + + Boolean + + + EnableAPI + + The EnableAPI parameter is deprecated. Please use the Enable/Disable-SecAPIAccess commands instead. + + Boolean + + + AllowUpdateChecks + + Allow the LoadMaster to regularly check the KEMP website for new software versions. + + Boolean + + + GeoClients + + Set the addresses of the GEO LoadMasters which can retrieve service status information from the LoadMaster. +To unset this, set the value to an empty string. + + String + + + GeoPartners + + Set the IP address of the GEO LoadMaster partner(s). These GEO LoadMasters will keep their DNS configurations in sync. +To unset this, set the value to an empty string. + Note: Before partnering GEO LoadMasters, a backup should be taken of the relevant GEO LoadMaster which has the correct/preferred configuration. This backup should then be restored to the other LoadMasters that will be partnered with the original LoadMaster. + + String + + + GeoSSHPort + + The port over which GEO LoadMasters will communicate with on another. + + Int32 + + + geo_ssh_iface + + Specify the ID of the GEO interface in which the SSH partner tunnel is created, for example setting this to 0 means the interface eth0. This is the interface that the GEO partners will communicate through. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SSHAccess + + Specify over which addresses remote administrative SSH access to the LoadMaster is allowed. + + Boolean + + Boolean + + + + + + SSHIface + + Specify the addresses over which remote administrative SSH access to the LoadMaster is allowed. + + String + + String + + + + + + SSHPort + + Specify the port used to access the LoadMaster via the SSH protocol. + + Int32 + + Int32 + + + + + + SSHPreAuthBanner + + Set the SSH pre-authentication banner, which is displayed before the login prompt when logging in using SSH. Space characters should be escaped by entering %20. +This field accepts up to 5,000 characters. Anything past the 5,000 character limit will not be displayed. + + String + + String + + + + + + WUIAccess + + Enables or disables WUI access. + + Boolean + + Boolean + + + + + + MultiHomedWui + + Allow WUI access from multiple interfaces. Apart from the main administrative interface, each interface can then be enabled to allow WUI access. + + Boolean + + Boolean + + + + + + EnableAPI + + The EnableAPI parameter is deprecated. Please use the Enable/Disable-SecAPIAccess commands instead. + + Boolean + + Boolean + + + + + + AllowUpdateChecks + + Allow the LoadMaster to regularly check the KEMP website for new software versions. + + Boolean + + Boolean + + + + + + GeoClients + + Set the addresses of the GEO LoadMasters which can retrieve service status information from the LoadMaster. +To unset this, set the value to an empty string. + + String + + String + + + + + + GeoPartners + + Set the IP address of the GEO LoadMaster partner(s). These GEO LoadMasters will keep their DNS configurations in sync. +To unset this, set the value to an empty string. + Note: Before partnering GEO LoadMasters, a backup should be taken of the relevant GEO LoadMaster which has the correct/preferred configuration. This backup should then be restored to the other LoadMasters that will be partnered with the original LoadMaster. + + String + + String + + + + + + GeoSSHPort + + The port over which GEO LoadMasters will communicate with on another. + + Int32 + + Int32 + + + + + + geo_ssh_iface + + Specify the ID of the GEO interface in which the SSH partner tunnel is created, for example setting this to 0 means the interface eth0. This is the interface that the GEO partners will communicate through. + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + GeoInterfaceId + + Specify the ID of the GEO interface in which the SSH partner tunnel is created, for example setting this to 0 means the interface eth0. This is the interface that the GEO partners will communicate through. + + int32 + + int32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and cannot be used to set all of the available parameters. Please refer to the Get-Help of the Set-Parameter command to view a full list of parameters that can be configured. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecRemoteAccess -GeoPartners 10.154.11.34 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Param........: @{GeoPartners=10.154.11.34} + + + + + + + + + + + + + + + + + Set-SecRemoteAccessLoginMethod + + Configure the Admin Login Method for the LoadMaster Web User Interface (WUI). + + + + + Set + SecRemoteAccessLoginMethod + + + + This command sets the Admin Login Method for the WUI, for example, to "Password or Client certificate" or "Password Only Access (default)". + + + + Set-SecRemoteAccessLoginMethod + + LoginMethod + + Specify the login method. Valid values are: +PasswordOnly +PasswordorClientCertificate +ClientCertificateRequired +ClientCertificateRequiredOCSP + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SecRemoteAccessLoginMethod + + LoginMethod + + Specify the login method. Valid values are: +PasswordOnly +PasswordorClientCertificate +ClientCertificateRequired +ClientCertificateRequiredOCSP + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoginMethod + + Specify the login method. Valid values are: +PasswordOnly +PasswordorClientCertificate +ClientCertificateRequired +ClientCertificateRequiredOCSP + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecRemoteAccessLoginMethod -LoginMethod PasswordOnly + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-SecSystemUserPassword + + Allows you to change the password of the default bal user. + + + + + Set + SecSystemUserPassword + + + + Allows you to change the password of the default bal user. + + + + Set-SecSystemUserPassword + + CurrentPassword + + The current password for the bal user. + + String + + + NewPassword + + The new password for the bal user. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + CurrentPassword + + The current password for the bal user. + + String + + String + + + + + + NewPassword + + The new password for the bal user. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecSystemUserPassword -CurrPassword 1fourall -Password 2fourall + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-SecUserPassword + + Allows you to change the password of a local user. + + + + + Set + SecUserPassword + + + + Allows you to change the password of a local user. + + + + Set-SecUserPassword + + User + + Username of the relevant user. + + String + + + Password + + The new password. + + String + + + Radius + + The radius parameter determines whether the user will use RADIUS server authentication or not when logging in to the LoadMaster. The RADIUS server details must be set up before this option can be used. +0 - Do not use RADIUS authentication +1 - Use RADIUS authentication + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SecUserPassword + + User + + Username of the relevant user. + + String + + + Password + + The new password. + + String + + + Radius + + The radius parameter determines whether the user will use RADIUS server authentication or not when logging in to the LoadMaster. The RADIUS server details must be set up before this option can be used. +0 - Do not use RADIUS authentication +1 - Use RADIUS authentication + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + User + + Username of the relevant user. + + String + + String + + + + + + Password + + The new password. + + String + + String + + + + + + Radius + + The radius parameter determines whether the user will use RADIUS server authentication or not when logging in to the LoadMaster. The RADIUS server details must be set up before this option can be used. +0 - Do not use RADIUS authentication +1 - Use RADIUS authentication + + Int32 + + Int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecUserPassword -Password password12345 -Radius 0 -User ExampleUser + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-SecUserPermission + + Allows you to set permissions for a local user. + + + + + Set + SecUserPermission + + + + Allows you to set permissions for a local user. + + + + Set-SecUserPermission + + User + + Username of the relevant user. + + String + + + Permissions + + Valid values for the perms parameter are listed and described below. + real: This role permits enabling and disabling Real Servers. Users with the Real Servers permission cannot add SubVSs. +vs: This role permits managing Virtual Services. This includes SubVSs. Virtual Service modifications permitted include add, delete and modify for any subnet. +rules: This role permits managing Rules. Rule modifications permitted include add, delete and modify. +backup: This role permits performing system backups. +certs: This role permits managing SSL Certificates. Certificate management includes adding, deleting and modifying SSL Certificates. +cert3: This role permits managing intermediate Certificates. Certificate management includes the ability to add and delete intermediate certificates. +certbackup: This role permits the ability to export and import certificates. +users: This role is allowed access to all functionality within the System Configuration > System Administration > User Management WUI screen. +root: This role gives users all permissions except the permission to change the bal password and the permission to create or delete other users. +geo: This role is used only with the LoadMaster GEO product. For more information on GEO and the Global Server Load Balancing (GSLB) Feature Pack, refer to the GEO, Product Overview. + Multiple permissions can be set at the same time by separating the values with a comma. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SecUserPermission + + User + + Username of the relevant user. + + String + + + Permissions + + Valid values for the perms parameter are listed and described below. + real: This role permits enabling and disabling Real Servers. Users with the Real Servers permission cannot add SubVSs. +vs: This role permits managing Virtual Services. This includes SubVSs. Virtual Service modifications permitted include add, delete and modify for any subnet. +rules: This role permits managing Rules. Rule modifications permitted include add, delete and modify. +backup: This role permits performing system backups. +certs: This role permits managing SSL Certificates. Certificate management includes adding, deleting and modifying SSL Certificates. +cert3: This role permits managing intermediate Certificates. Certificate management includes the ability to add and delete intermediate certificates. +certbackup: This role permits the ability to export and import certificates. +users: This role is allowed access to all functionality within the System Configuration > System Administration > User Management WUI screen. +root: This role gives users all permissions except the permission to change the bal password and the permission to create or delete other users. +geo: This role is used only with the LoadMaster GEO product. For more information on GEO and the Global Server Load Balancing (GSLB) Feature Pack, refer to the GEO, Product Overview. + Multiple permissions can be set at the same time by separating the values with a comma. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + User + + Username of the relevant user. + + String + + String + + + + + + Permissions + + Valid values for the perms parameter are listed and described below. + real: This role permits enabling and disabling Real Servers. Users with the Real Servers permission cannot add SubVSs. +vs: This role permits managing Virtual Services. This includes SubVSs. Virtual Service modifications permitted include add, delete and modify for any subnet. +rules: This role permits managing Rules. Rule modifications permitted include add, delete and modify. +backup: This role permits performing system backups. +certs: This role permits managing SSL Certificates. Certificate management includes adding, deleting and modifying SSL Certificates. +cert3: This role permits managing intermediate Certificates. Certificate management includes the ability to add and delete intermediate certificates. +certbackup: This role permits the ability to export and import certificates. +users: This role is allowed access to all functionality within the System Configuration > System Administration > User Management WUI screen. +root: This role gives users all permissions except the permission to change the bal password and the permission to create or delete other users. +geo: This role is used only with the LoadMaster GEO product. For more information on GEO and the Global Server Load Balancing (GSLB) Feature Pack, refer to the GEO, Product Overview. + Multiple permissions can be set at the same time by separating the values with a comma. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + Perms + + The valid values for this parameter and their descriptions are below: + real - This role permits enabling and disabling Real Servers. Users with the Real Servers permission cannot add SubVSs. + vs - This role permits managing Virtual Services. This includes SubVSs. Virtual Service modifications permitted include add, delete and modify for any subnet. + rules - This role permits managing Rules. Rule modifications permitted include add, delete and modify. + backup - This role permits performing system backups. + certs - This role permits managing SSL Certificates. Certificate management includes adding, deleting and modifying SSL Certificates. + cert3 - This role permits managing intermediate Certificates. Certificate management includes the ability to add and delete intermediate certificates. + certbackup - This role permits the ability to export and import certificates. + users - This role is allowed access to all functionality within the System Configuration > System Administration > User Management WUI screen. + root - This role gives users all permissions except the permission to change the bal password and the permission to create or delete other users. + geo - This role is used only with the LoadMaster GEO product. For more information on GEO and the Global Server Load Balancing (GSLB) Feature Pack, refer to the GEO, Product Overview. + To set the permissions to none, leave the parameter blank, for example &perms= + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + When entering a comma-separated list of multiple permissions, ensure to begin the value entry with a comma, for example ,rules,vs. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecUserPermission -User ExampleUser -Perms ,vs,rules + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-SecWuiAuthentication + + Allows you to set the values of WUI Authentication and Authorization options. + + + + + Set + SecWuiAuthentication + + + + Configure options such as the RADIUS configuration settings. + + + + Set-SecWuiAuthentication + + RADIUSServer + + Specifies the RADIUS server to use for authentication. + + String + + + RADIUSPort + + Specifies the TCP port for communication to the RADIUS server. + + Int64 + + + RADIUSSecret + + Specifies the password (secret) to the RADIUS server. + + String + + + RADIUSBackupServer + + Specifies the backup RADIUS server to use for authentication. + + String + + + RADIUSBackupPort + + Specifies the TCP port for the backup RADIUS server. + + Int64 + + + RADIUSBackupSecret + + Specifies the password (secret) to the backup RADIUS server. + + String + + + RADIUSRevalidateInterval + + Specifies how often a user should be revalidated by the RADIUS server. + + Int32 + + + WuiLdapEp + + Specify the LDAP endpoint configuration to use for WUI login authentication. + + String + + + SessionLocalAuth + + Enables or disables local authentication. + + Boolean + + + SessionAuthMode + + Specifies the authentication mode for the LoadMaster. Refer to the following table for values: + RADIUS LDAP Local +Value Authent. Author. Authent. Authent. Author. +7 No No No No No +263 Yes No No Yes Yes +775 Yes Yes No Yes Yes +23 No No Yes Yes Yes +22 No No Yes No Yes +788 Yes Yes Yes No No +790 Yes Yes Yes No Yes +791 Yes Yes Yes Yes Yes +789 Yes Yes Yes Yes No +773 Yes Yes No Yes No +262 Yes No No No Yes +774 Yes Yes No No Yes +772 Yes Yes No No No +278 Yes No Yes No No +279 Yes No Yes Yes Yes + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SecWuiAuthentication + + RADIUSServer + + Specifies the RADIUS server to use for authentication. + + String + + + RADIUSPort + + Specifies the TCP port for communication to the RADIUS server. + + Int64 + + + RADIUSSecret + + Specifies the password (secret) to the RADIUS server. + + String + + + RADIUSBackupServer + + Specifies the backup RADIUS server to use for authentication. + + String + + + RADIUSBackupPort + + Specifies the TCP port for the backup RADIUS server. + + Int64 + + + RADIUSBackupSecret + + Specifies the password (secret) to the backup RADIUS server. + + String + + + RADIUSRevalidateInterval + + Specifies how often a user should be revalidated by the RADIUS server. + + Int32 + + + WuiLdapEp + + Specify the LDAP endpoint configuration to use for WUI login authentication. + + String + + + SessionLocalAuth + + Enables or disables local authentication. + + Boolean + + + SessionAuthMode + + Specifies the authentication mode for the LoadMaster. Refer to the following table for values: + RADIUS LDAP Local +Value Authent. Author. Authent. Authent. Author. +7 No No No No No +263 Yes No No Yes Yes +775 Yes Yes No Yes Yes +23 No No Yes Yes Yes +22 No No Yes No Yes +788 Yes Yes Yes No No +790 Yes Yes Yes No Yes +791 Yes Yes Yes Yes Yes +789 Yes Yes Yes Yes No +773 Yes Yes No Yes No +262 Yes No No No Yes +774 Yes Yes No No Yes +772 Yes Yes No No No +278 Yes No Yes No No +279 Yes No Yes Yes Yes + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RADIUSServer + + Specifies the RADIUS server to use for authentication. + + String + + String + + + + + + RADIUSPort + + Specifies the TCP port for communication to the RADIUS server. + + Int64 + + Int64 + + + + + + RADIUSSecret + + Specifies the password (secret) to the RADIUS server. + + String + + String + + + + + + RADIUSBackupServer + + Specifies the backup RADIUS server to use for authentication. + + String + + String + + + + + + RADIUSBackupPort + + Specifies the TCP port for the backup RADIUS server. + + Int64 + + Int64 + + + + + + RADIUSBackupSecret + + Specifies the password (secret) to the backup RADIUS server. + + String + + String + + + + + + RADIUSRevalidateInterval + + Specifies how often a user should be revalidated by the RADIUS server. + + Int32 + + Int32 + + + + + + WuiLdapEp + + Specify the LDAP endpoint configuration to use for WUI login authentication. + + String + + String + + + + + + SessionLocalAuth + + Enables or disables local authentication. + + Boolean + + Boolean + + + + + + SessionAuthMode + + Specifies the authentication mode for the LoadMaster. Refer to the following table for values: + RADIUS LDAP Local +Value Authent. Author. Authent. Authent. Author. +7 No No No No No +263 Yes No No Yes Yes +775 Yes Yes No Yes Yes +23 No No Yes Yes Yes +22 No No Yes No Yes +788 Yes Yes Yes No No +790 Yes Yes Yes No Yes +791 Yes Yes Yes Yes Yes +789 Yes Yes Yes Yes No +773 Yes Yes No Yes No +262 Yes No No No Yes +774 Yes Yes No No Yes +772 Yes Yes No No No +278 Yes No Yes No No +279 Yes No Yes Yes Yes + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecWuiAuthentication -RADIUSPort 80 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Parameters=} +Param........: @{RADIUSPort=80} + + + + + + + + + + + + + + + + + Set-ServiceHealth + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcServiceHealth + + + + + Set + ServiceHealth + + + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcServiceHealth + + + + Set-ServiceHealth + + CheckInterval + + + + Int16 + + + ConnectTimeout + + + + Int16 + + + RetryCount + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-ServiceHealth + + CheckInterval + + + + Int16 + + + ConnectTimeout + + + + Int16 + + + RetryCount + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + CheckInterval + + + + Int16 + + Int16 + + + + + + ConnectTimeout + + + + Int16 + + Int16 + + + + + + RetryCount + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-SNMPOption + + WARNING: This function is deprecated. Use the following command instead: +Set-NetworkSNMPConfiguration + + + + + Set + SNMPOption + + + + WARNING: This function is deprecated. Use the following command instead: +Set-NetworkSNMPConfiguration + + + + Set-SNMPOption + + SNMPEnable + + + + Boolean + + + SNMPv3enable + + + + Boolean + + + SNMPv3user + + + + String + + + SNMPv3userpasswd + + + + String + + + snmpAuthProt + + + + String + + + snmpPrivProt + + + + String + + + SNMPClient + + + + String + + + SNMPCommunity + + + + String + + + SNMPContact + + + + String + + + SNMPLocation + + + + String + + + SNMPTrapEnable + + + + Boolean + + + SNMPHaTrap + + + + Boolean + + + SNMPv1Sink + + + + String + + + SNMPv2Sink + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SNMPOption + + SNMPEnable + + + + Boolean + + + SNMPv3enable + + + + Boolean + + + SNMPv3user + + + + String + + + SNMPv3userpasswd + + + + String + + + snmpAuthProt + + + + String + + + snmpPrivProt + + + + String + + + SNMPClient + + + + String + + + SNMPCommunity + + + + String + + + SNMPContact + + + + String + + + SNMPLocation + + + + String + + + SNMPTrapEnable + + + + Boolean + + + SNMPHaTrap + + + + Boolean + + + SNMPv1Sink + + + + String + + + SNMPv2Sink + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SNMPEnable + + + + Boolean + + Boolean + + + + + + SNMPv3enable + + + + Boolean + + Boolean + + + + + + SNMPv3user + + + + String + + String + + + + + + SNMPv3userpasswd + + + + String + + String + + + + + + snmpAuthProt + + + + String + + String + + + + + + snmpPrivProt + + + + String + + String + + + + + + SNMPClient + + + + String + + String + + + + + + SNMPCommunity + + + + String + + String + + + + + + SNMPContact + + + + String + + String + + + + + + SNMPLocation + + + + String + + String + + + + + + SNMPTrapEnable + + + + Boolean + + Boolean + + + + + + SNMPHaTrap + + + + Boolean + + Boolean + + + + + + SNMPv1Sink + + + + String + + String + + + + + + SNMPv2Sink + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-SSODomain + + Allows you to set Single Sign-On (SSO) Domain options. + + + + + Set + SSODomain + + + + Allows you to set Single Sign-On (SSO) Domain options. + + + + Set-SSODomain + + Domain + + Specifies the name of the SSO domain LoadMaster entry to be modified. + + String + + + TLS + + Specifies the encryption to use for authentication. This parameter accepts "Unencrypted", "StartTLS", and "LDAPS". + + String + + + Server + + Specifies the server(s) to authenticate against. + + String[] + + + Server2 + + When using dual factor authentication, use the server parameter to set the address of the RADIUS server(s) and use the server2 parameter to set the address of the LDAP server(s). + + String[] + + + auth_type + + Specify the transport protocol used to communicate with the authentication server. Possible values are: +- LDAP-Unencrypted +- LDAP-StartTLS +- LDAP-LDAPS +- RADIUS +- RSA-SECURID +- Certificate +- KCD +- RADIUS and LDAP-Unencrypted +- RADIUS and LDAP-StartTLS +- RADIUS and LDAP-LDAPS + + String + + + max_failed_auths + + The maximum number of failed login attempts before the user is locked out. +Range: 0 – 999 +0 = Never lock out + + Int32 + + + reset_fail_tout + + The time that must elapse before the max_failed_auths counter is reset to 0. This must be less than the unblocktout value. This parameter is only relevant if the max_failed_auths parameter is set to a value greater than 0. +Range: 60-86400 + + Int32 + + + unblock_tout + + The timeout in seconds before a blocked account is automatically unblocked again. This must be greater than the reset_fail_tout parameter value. +Range: 60-86400 + + Int32 + + + logon_fmt + + Specify the logon string format used to authenticate to the LDAP/RADIUS server. +The Username%20only value is only available if the auth_type is set to a RADIUS or RSA-SecurID protocol. The Username value is not available if the auth_type is set to RADIUS or a RADIUS and LDAP protocol. + + String + + + logon_fmt2 + + Specify the logon string format used to authenticate to the server. + + String + + + logon_domain + + The login domain to be used. This is also used with the logon format to construct the normalized username, for example: +- Principalname: <username>@<domain> +- Username: <domain>\<username> + + String + + + sess_tout_type + + Specify the type of session timeout to be used: +- idle time +- max duration + + String + + + sess_tout_idle_pub + + The session idle timeout value in seconds. This value is used in a public environment. +Range: 60-68400 + + Int32 + + + sess_tout_duration_pub + + The maximum duration timeout value for the session in seconds. This value is used in a public environment. +Range: 60-86400 + + Int32 + + + sess_tout_idle_priv + + The session idle timeout value in seconds. This value is used in a private environment. +Range: 60-68400 + + Int32 + + + sess_tout_duration_priv + + The maximum duration timeout value for the session in seconds. This value is used in a private environment. +Range: 60-86400 + + Int32 + + + testuser + + The username that will be used to check the authentication server(s), if you are not using an LDAP endpoint. + + String + + + testpass + + The password of the user that will be used to check the authentication server(s), if you are not using an LDAP endpoint. + + String + + + radius_shared_secret + + The shared secret to be used between the radius server and the LoadMaster. + + String + + + kerberos_domain + + The name of the Kerberos realm. + + String + + + kerberos_kdc + + The name of the Kerberos Key Distribution Center (KDC). + + String + + + kcd_username + + The username of the Kerberos trusted user. + + String + + + kcd_password + + The password of the Kerberos trusted user. + + String + + + server_side + + Specify if this is an outbound KCD SSO domain or not. +y – KCD +n – Not KCD + + String + + + cert_check_asi + + This option is only available when the authtype is set to Certificate. When this option is enabled - in addition to checking the validity of the client certificate, the client certificate will also be checked against the altSecurityIdentities (ASI) attribute of the user on the Active Directory. + + String + + + cert_check_cn + + Enabling this parameter allows a fallback to check the Common Name (CN) in the certificate when the SAN is not available. + + String + + + Logon_Transcode + + Enable or disable the transcode of logon credentials from ISO-8859-1 to UTF-8, when required. +0 - Disable +1 - Enable + + Boolean + + + ldap_endpoint + + Specify the name of an existing LDAP endpoint to use. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SSODomain + + Domain + + Specifies the name of the SSO domain LoadMaster entry to be modified. + + String + + + TLS + + Specifies the encryption to use for authentication. This parameter accepts "Unencrypted", "StartTLS", and "LDAPS". + + String + + + Server + + Specifies the server(s) to authenticate against. + + String[] + + + Server2 + + When using dual factor authentication, use the server parameter to set the address of the RADIUS server(s) and use the server2 parameter to set the address of the LDAP server(s). + + String[] + + + auth_type + + Specify the transport protocol used to communicate with the authentication server. Possible values are: +- LDAP-Unencrypted +- LDAP-StartTLS +- LDAP-LDAPS +- RADIUS +- RSA-SECURID +- Certificate +- KCD +- RADIUS and LDAP-Unencrypted +- RADIUS and LDAP-StartTLS +- RADIUS and LDAP-LDAPS + + String + + + max_failed_auths + + The maximum number of failed login attempts before the user is locked out. +Range: 0 – 999 +0 = Never lock out + + Int32 + + + reset_fail_tout + + The time that must elapse before the max_failed_auths counter is reset to 0. This must be less than the unblocktout value. This parameter is only relevant if the max_failed_auths parameter is set to a value greater than 0. +Range: 60-86400 + + Int32 + + + unblock_tout + + The timeout in seconds before a blocked account is automatically unblocked again. This must be greater than the reset_fail_tout parameter value. +Range: 60-86400 + + Int32 + + + logon_fmt + + Specify the logon string format used to authenticate to the LDAP/RADIUS server. +The Username%20only value is only available if the auth_type is set to a RADIUS or RSA-SecurID protocol. The Username value is not available if the auth_type is set to RADIUS or a RADIUS and LDAP protocol. + + String + + + logon_fmt2 + + Specify the logon string format used to authenticate to the server. + + String + + + logon_domain + + The login domain to be used. This is also used with the logon format to construct the normalized username, for example: +- Principalname: <username>@<domain> +- Username: <domain>\<username> + + String + + + sess_tout_type + + Specify the type of session timeout to be used: +- idle time +- max duration + + String + + + sess_tout_idle_pub + + The session idle timeout value in seconds. This value is used in a public environment. +Range: 60-68400 + + Int32 + + + sess_tout_duration_pub + + The maximum duration timeout value for the session in seconds. This value is used in a public environment. +Range: 60-86400 + + Int32 + + + sess_tout_idle_priv + + The session idle timeout value in seconds. This value is used in a private environment. +Range: 60-68400 + + Int32 + + + sess_tout_duration_priv + + The maximum duration timeout value for the session in seconds. This value is used in a private environment. +Range: 60-86400 + + Int32 + + + testuser + + The username that will be used to check the authentication server(s), if you are not using an LDAP endpoint. + + String + + + testpass + + The password of the user that will be used to check the authentication server(s), if you are not using an LDAP endpoint. + + String + + + radius_shared_secret + + The shared secret to be used between the radius server and the LoadMaster. + + String + + + kerberos_domain + + The name of the Kerberos realm. + + String + + + kerberos_kdc + + The name of the Kerberos Key Distribution Center (KDC). + + String + + + kcd_username + + The username of the Kerberos trusted user. + + String + + + kcd_password + + The password of the Kerberos trusted user. + + String + + + server_side + + Specify if this is an outbound KCD SSO domain or not. +y – KCD +n – Not KCD + + String + + + cert_check_asi + + This option is only available when the authtype is set to Certificate. When this option is enabled - in addition to checking the validity of the client certificate, the client certificate will also be checked against the altSecurityIdentities (ASI) attribute of the user on the Active Directory. + + String + + + cert_check_cn + + Enabling this parameter allows a fallback to check the Common Name (CN) in the certificate when the SAN is not available. + + String + + + Logon_Transcode + + Enable or disable the transcode of logon credentials from ISO-8859-1 to UTF-8, when required. +0 - Disable +1 - Enable + + Boolean + + + ldap_endpoint + + Specify the name of an existing LDAP endpoint to use. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + Specifies the name of the SSO domain LoadMaster entry to be modified. + + String + + String + + + + + + TLS + + Specifies the encryption to use for authentication. This parameter accepts "Unencrypted", "StartTLS", and "LDAPS". + + String + + String + + + + + + Server + + Specifies the server(s) to authenticate against. + + String[] + + String[] + + + + + + Server2 + + When using dual factor authentication, use the server parameter to set the address of the RADIUS server(s) and use the server2 parameter to set the address of the LDAP server(s). + + String[] + + String[] + + + + + + auth_type + + Specify the transport protocol used to communicate with the authentication server. Possible values are: +- LDAP-Unencrypted +- LDAP-StartTLS +- LDAP-LDAPS +- RADIUS +- RSA-SECURID +- Certificate +- KCD +- RADIUS and LDAP-Unencrypted +- RADIUS and LDAP-StartTLS +- RADIUS and LDAP-LDAPS + + String + + String + + + + + + max_failed_auths + + The maximum number of failed login attempts before the user is locked out. +Range: 0 – 999 +0 = Never lock out + + Int32 + + Int32 + + + + + + reset_fail_tout + + The time that must elapse before the max_failed_auths counter is reset to 0. This must be less than the unblocktout value. This parameter is only relevant if the max_failed_auths parameter is set to a value greater than 0. +Range: 60-86400 + + Int32 + + Int32 + + + + + + unblock_tout + + The timeout in seconds before a blocked account is automatically unblocked again. This must be greater than the reset_fail_tout parameter value. +Range: 60-86400 + + Int32 + + Int32 + + + + + + logon_fmt + + Specify the logon string format used to authenticate to the LDAP/RADIUS server. +The Username%20only value is only available if the auth_type is set to a RADIUS or RSA-SecurID protocol. The Username value is not available if the auth_type is set to RADIUS or a RADIUS and LDAP protocol. + + String + + String + + + + + + logon_fmt2 + + Specify the logon string format used to authenticate to the server. + + String + + String + + + + + + logon_domain + + The login domain to be used. This is also used with the logon format to construct the normalized username, for example: +- Principalname: <username>@<domain> +- Username: <domain>\<username> + + String + + String + + + + + + sess_tout_type + + Specify the type of session timeout to be used: +- idle time +- max duration + + String + + String + + + + + + sess_tout_idle_pub + + The session idle timeout value in seconds. This value is used in a public environment. +Range: 60-68400 + + Int32 + + Int32 + + + + + + sess_tout_duration_pub + + The maximum duration timeout value for the session in seconds. This value is used in a public environment. +Range: 60-86400 + + Int32 + + Int32 + + + + + + sess_tout_idle_priv + + The session idle timeout value in seconds. This value is used in a private environment. +Range: 60-68400 + + Int32 + + Int32 + + + + + + sess_tout_duration_priv + + The maximum duration timeout value for the session in seconds. This value is used in a private environment. +Range: 60-86400 + + Int32 + + Int32 + + + + + + testuser + + The username that will be used to check the authentication server(s), if you are not using an LDAP endpoint. + + String + + String + + + + + + testpass + + The password of the user that will be used to check the authentication server(s), if you are not using an LDAP endpoint. + + String + + String + + + + + + radius_shared_secret + + The shared secret to be used between the radius server and the LoadMaster. + + String + + String + + + + + + kerberos_domain + + The name of the Kerberos realm. + + String + + String + + + + + + kerberos_kdc + + The name of the Kerberos Key Distribution Center (KDC). + + String + + String + + + + + + kcd_username + + The username of the Kerberos trusted user. + + String + + String + + + + + + kcd_password + + The password of the Kerberos trusted user. + + String + + String + + + + + + server_side + + Specify if this is an outbound KCD SSO domain or not. +y – KCD +n – Not KCD + + String + + String + + + + + + cert_check_asi + + This option is only available when the authtype is set to Certificate. When this option is enabled - in addition to checking the validity of the client certificate, the client certificate will also be checked against the altSecurityIdentities (ASI) attribute of the user on the Active Directory. + + String + + String + + + + + + cert_check_cn + + Enabling this parameter allows a fallback to check the Common Name (CN) in the certificate when the SAN is not available. + + String + + String + + + + + + Logon_Transcode + + Enable or disable the transcode of logon credentials from ISO-8859-1 to UTF-8, when required. +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + ldap_endpoint + + Specify the name of an existing LDAP endpoint to use. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + DomainObject + + Accepts a custom object that has the Domain, TLS, and Server properties to add to the load balancer. Can be used to import a CSV file of entries to the load balancer. + + psobject[] + + psobject[] + + + + + + ldap_admin + + The LDAP administrator username. +This is only relevant when the authtype is set to Certificate. + + string + + string + + + + + + ldap_password + + The LDAP administrator password. +This is only relevant when the authtype is set to Certificate. + + string + + string + + + + + + logonfmt + + Specify the logon string format used to authenticate to the server. Possible values are: +- Notspecified +- Principalname +- Username +- Usernameonly +The Username value is not available if the auth_type is set to RADIUS or a RADIUS and LDAP protocol. + + string + + string + + + + + + logonfmt2 + + Specify the logon string format used to authenticate to the server. +- Notspecified +- Principalname +- Username + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + You can only use one login method - either certificate or credential. You cannot use both. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SSODomain -server 10.154.45.22 -Domain example3.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Param........: @{Id=9; Name=EXAMPLE2.COM; server=10.154.45.22; testuser=; ldap_version=3; server_side=0; auth_type=RSA-SECURID; logon_fmt=Principalname; + logon_fmt2=Principalname; logon_transcode=1; logon_domain=; idp_entity_id=; idp_sso_url=; idp_logoff_url=; idp_cert=; sp_entity_id=; sp_cert=UseSelfSig +ned; kerberos_domain=; kerberos_kdc=; kcd_username=; max_failed_auths=0; reset_fail_tout=60; unblock_tout=1800; sess_tout_type=idle time; sess_tout_idle +_pub=900; sess_tout_duration_pub=1800; sess_tout_idle_priv=900; sess_tout_duration_priv=28800; cert_check_asi=0; cert_check_cn=0} +Id : 9 +Name : EXAMPLE2.COM +server : 10.154.45.22 +testuser : +ldap_version : 3 +server_side : 0 +auth_type : RSA-SECURID +logon_fmt : Principalname +logon_fmt2 : Principalname +logon_transcode : 1 +logon_domain : +idp_entity_id : +idp_sso_url : +idp_logoff_url : +idp_cert : +sp_entity_id : +sp_cert : UseSelfSigned +kerberos_domain : +kerberos_kdc : +kcd_username : +max_failed_auths : 0 +reset_fail_tout : 60 +unblock_tout : 1800 +sess_tout_type : idle time +sess_tout_idle_pub : 900 +sess_tout_duration_pub : 1800 +sess_tout_idle_priv : 900 +sess_tout_duration_priv : 28800 +cert_check_asi : 0 +cert_check_cn : 0 + + + + + + + + + + + + + + + + + Set-SSODomainUnlockUser + + Allows you to unblock users who are currently blocked from accessing the SSO domain. + + + + + Set + SSODomainUnlockUser + + + + Allows you to unblock users who are currently blocked from accessing the SSO domain. + + + + Set-SSODomainUnlockUser + + Domain + + The name of the SSO domain. + + String + + + Users + + The username of the user to be unblocked. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SSODomainUnlockUser + + Domain + + The name of the SSO domain. + + String + + + Users + + The username of the user to be unblocked. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + The name of the SSO domain. + + String + + String + + + + + + Users + + The username of the user to be unblocked. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SSODomainUnlockUser -Domain example2.com -Users test + + + + + Example Output: +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: +UnlockedUsers +------------- +@{user=test} + + + + + + + + + + + + + + + + + Set-SyslogOption + + WARNING: This function is deprecated. Use the following command instead: +Set-LogSyslogConfiguration + + + + + Set + SyslogOption + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LogSyslogConfiguration + + + + Set-SyslogOption + + SyslogCritical + + + + String + + + SyslogEmergency + + + + String + + + SyslogError + + + + String + + + SyslogInfo + + + + String + + + SyslogNotice + + + + String + + + SyslogWarn + + + + String + + + SyslogPort + + + + UInt16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-SyslogOption + + SyslogCritical + + + + String + + + SyslogEmergency + + + + String + + + SyslogError + + + + String + + + SyslogInfo + + + + String + + + SyslogNotice + + + + String + + + SyslogWarn + + + + String + + + SyslogPort + + + + UInt16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + SyslogCritical + + + + String + + String + + + + + + SyslogEmergency + + + + String + + String + + + + + + SyslogError + + + + String + + String + + + + + + SyslogInfo + + + + String + + String + + + + + + SyslogNotice + + + + String + + String + + + + + + SyslogWarn + + + + String + + String + + + + + + SyslogPort + + + + UInt16 + + UInt16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-TlsCipherSet + + Create or modify a custom cipher set. + + + + + Set + TlsCipherSet + + + + Updates an existing custom cipher set or creates a new custom cipher set. If the name of an existing custom cipher set is used, that cipher set will be updated. If a new name is used, a new cipher set will be created. + + + + Set-TlsCipherSet + + Name + + The name of the custom cipher set. + + String + + + Value + + A colon (:) separated list of ciphers to assign to the set. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-TlsCipherSet + + Name + + The name of the custom cipher set. + + String + + + Value + + A colon (:) separated list of ciphers to assign to the set. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the custom cipher set. + + String + + String + + + + + + Value + + A colon (:) separated list of ciphers to assign to the set. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If the name of an existing custom cipher set is specified, that cipher set will be updated. If a new name is used, a new cipher set will be created. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-TlsCipherSet -Name ExampleCipherSet -Value ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-TlsHSM + + Allows you to configure the HSM settings. + + + + + Set + TlsHSM + + + + Allows you to configure the HSM settings. + + + + Set-TlsHSM + + Sethsm + + To set the HSM sub-system to Safenet Luna HSM use LunaCA3. To set the HSM sub-system to Cavium HSM use cavhsm. These parameters are case sensitive. + + String + + + Safeaddr + + Specify the address of the Safenet HSM unit to be used. + + String + + + Clpass + + Specify the password for the partition on the HSM so that the LoadMaster can access the HSM. + + String + + + Enable + + Enable or disable Safenet HSM: +0 – Disabled +1 – Enabled + + Boolean + + + Cavhsmaddr + + Specify the address of the Cavium HSM unit to be used. + + String + + + Cavhsmpasswd + + The password for the HSM partition. The HSM partition password would have been set on the HSM when originally configuring the partition. For further information, please consult the HSM vendor documentation. + + String + + + Cavhsmuser + + The username for the HSM partition. + + String + + + Cavhsmenable + + Enable Cavium HSM: +0 - Disable +1 - Enable + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-TlsHSM + + Sethsm + + To set the HSM sub-system to Safenet Luna HSM use LunaCA3. To set the HSM sub-system to Cavium HSM use cavhsm. These parameters are case sensitive. + + String + + + Safeaddr + + Specify the address of the Safenet HSM unit to be used. + + String + + + Clpass + + Specify the password for the partition on the HSM so that the LoadMaster can access the HSM. + + String + + + Enable + + Enable or disable Safenet HSM: +0 – Disabled +1 – Enabled + + Boolean + + + Cavhsmaddr + + Specify the address of the Cavium HSM unit to be used. + + String + + + Cavhsmpasswd + + The password for the HSM partition. The HSM partition password would have been set on the HSM when originally configuring the partition. For further information, please consult the HSM vendor documentation. + + String + + + Cavhsmuser + + The username for the HSM partition. + + String + + + Cavhsmenable + + Enable Cavium HSM: +0 - Disable +1 - Enable + + Boolean + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Sethsm + + To set the HSM sub-system to Safenet Luna HSM use LunaCA3. To set the HSM sub-system to Cavium HSM use cavhsm. These parameters are case sensitive. + + String + + String + + + + + + Safeaddr + + Specify the address of the Safenet HSM unit to be used. + + String + + String + + + + + + Clpass + + Specify the password for the partition on the HSM so that the LoadMaster can access the HSM. + + String + + String + + + + + + Enable + + Enable or disable Safenet HSM: +0 – Disabled +1 – Enabled + + Boolean + + Boolean + + + + + + Cavhsmaddr + + Specify the address of the Cavium HSM unit to be used. + + String + + String + + + + + + Cavhsmpasswd + + The password for the HSM partition. The HSM partition password would have been set on the HSM when originally configuring the partition. For further information, please consult the HSM vendor documentation. + + String + + String + + + + + + Cavhsmuser + + The username for the HSM partition. + + String + + String + + + + + + Cavhsmenable + + Enable Cavium HSM: +0 - Disable +1 - Enable + + Boolean + + Boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Starting the HSM may take some time. + Disabling the HSM means the LoadMaster is unable to create new SSL (HTTPS) connections and immediately drops existing connections until another HSM is added or the certificate configuration is changed. + It is strongly recommended to only change the HSM configuration when there are no active SSL connections. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-TlsHSM -Cavhsmaddr 10.154.22.44 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{engine=cavhsm; addr=10.154.22.44; user=ExampleUser; enable=0} +cavhsm 10.154.22.44 ExampleUser 0 + + + + + + + + + + + + + + + + + Set-VirtualService + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcVirtualService + + + + + Set + VirtualService + + + + WARNING: This function is deprecated. Use the following command instead: +Set-AdcVirtualService + + + + Set-VirtualService + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + AddVia + + + + Int16 + + + Cache + + + + Boolean + + + CertFile + + + + String + + + CheckType + + + + String + + + CheckHost + + + + String + + + CheckPattern + + + + String + + + CheckUrl + + + + String + + + CheckHeaders + + + + String + + + LdapEndpoint + + + + String + + + MatchLen + + + + String + + + CheckUse1_1 + + + + Int32 + + + CheckPort + + + + Int32 + + + EnhancedHealthChecks + + + + Boolean + + + RsMinimum + + + + Int32 + + + ClientCert + + + + Int16 + + + Compress + + + + Boolean + + + Cookie + + + + String + + + CachePercent + + + + Int16 + + + DefaultGW + + + + String + + + Enable + + + + Boolean + + + ErrorCode + + + + String + + + ErrorUrl + + + + String + + + PortFollow + + + + Int32 + + + ForceL7 + + + + Boolean + + + Idletime + + + + Int32 + + + LocalBindAddresses + + + + String[] + + + VSType + + + + String + + + Nickname + + + + String + + + Persist + + + + String + + + PersistTimeout + + + + Int32 + + + QueryTag + + + + String + + + CipherSet + + + + String + + + SSLReencrypt + + + + Boolean + + + SSLReverse + + + + Boolean + + + SSLRewrite + + + + String + + + ReverseSNIHostname + + + + String + + + Schedule + + + + String + + + ServerInit + + + + Int16 + + + SSLAcceleration + + + + Boolean + + + StandByAddr + + + + String + + + StandByPort + + + + String + + + TransactionLimit + + + + Int32 + + + Transparent + + + + Boolean + + + SubnetOriginating + + + + Boolean + + + UseforSnat + + + + Boolean + + + QoS + + + + String + + + CheckUseGet + + + + Int32 + + + Verify + + + + Int16 + + + ExtraHdrKey + + + + String + + + ExtraHdrValue + + + + String + + + AllowedHosts + + + + String + + + AllowedDirectories + + + + String + + + AllowedGroups + + + + String + + + GroupSIDs + + + + String + + + IncludeNestedGroups + + + + Boolean + + + DisplayPubPriv + + + + Boolean + + + DisablePasswordForm + + + + Boolean + + + Domain + + + + String + + + AltDomains + + + + String + + + Logoff + + + + String + + + ESPLogs + + + + Int16 + + + SMTPAllowedDomains + + + + String + + + ESPEnabled + + + + Boolean + + + UserPwdChangeUrl + + + + String + + + UserPwdChangeMsg + + + + String + + + InputAuthMode + + + + Int16 + + + OutputAuthMode + + + + Int16 + + + StartTLSMode + + + + Int16 + + + ExtraPorts + + + + String + + + AltAddress + + + + String + + + MultiConnect + + + + Boolean + + + SingleSignOnDir + + + + String + + + OCSPVerify + + + + String + + + FollowVSID + + + + Int32 + + + TlsType + + + + Boolean + + + CheckPostData + + + + String + + + CheckCodes + + + + String + + + PreProcPrecedence + + + + String + + + PreProcPrecedencePos + + + + Int16 + + + RequestPrecedence + + + + String + + + RequestPrecedencePos + + + + Int16 + + + ResponsePrecedence + + + + String + + + ResponsePrecedencePos + + + + Int16 + + + RsRulePrecedence + + + + String + + + RsRulePrecedencePos + + + + Int16 + + + NeedHostName + + + + Boolean + + + CopyHdrFrom + + + + String + + + CopyHdrTo + + + + String + + + ServerFbaPath + + + + String + + + ServerFbaPost + + + + String + + + Intercept + + + + Boolean + + + AllowHTTP2 + + + + Boolean + + + InterceptOpts + + + + String + + + InterceptRules + + + + String + + + AlertThreshold + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-VirtualService + + VirtualService + + + + String + + + VSPort + + + + Int32 + + + VSProtocol + + + + String + + + VSIndex + + + + Int32 + + + AddVia + + + + Int16 + + + Cache + + + + Boolean + + + CertFile + + + + String + + + CheckType + + + + String + + + CheckHost + + + + String + + + CheckPattern + + + + String + + + CheckUrl + + + + String + + + CheckHeaders + + + + String + + + LdapEndpoint + + + + String + + + MatchLen + + + + String + + + CheckUse1_1 + + + + Int32 + + + CheckPort + + + + Int32 + + + EnhancedHealthChecks + + + + Boolean + + + RsMinimum + + + + Int32 + + + ClientCert + + + + Int16 + + + Compress + + + + Boolean + + + Cookie + + + + String + + + CachePercent + + + + Int16 + + + DefaultGW + + + + String + + + Enable + + + + Boolean + + + ErrorCode + + + + String + + + ErrorUrl + + + + String + + + PortFollow + + + + Int32 + + + ForceL7 + + + + Boolean + + + Idletime + + + + Int32 + + + LocalBindAddresses + + + + String[] + + + VSType + + + + String + + + Nickname + + + + String + + + Persist + + + + String + + + PersistTimeout + + + + Int32 + + + QueryTag + + + + String + + + CipherSet + + + + String + + + SSLReencrypt + + + + Boolean + + + SSLReverse + + + + Boolean + + + SSLRewrite + + + + String + + + ReverseSNIHostname + + + + String + + + Schedule + + + + String + + + ServerInit + + + + Int16 + + + SSLAcceleration + + + + Boolean + + + StandByAddr + + + + String + + + StandByPort + + + + String + + + TransactionLimit + + + + Int32 + + + Transparent + + + + Boolean + + + SubnetOriginating + + + + Boolean + + + UseforSnat + + + + Boolean + + + QoS + + + + String + + + CheckUseGet + + + + Int32 + + + Verify + + + + Int16 + + + ExtraHdrKey + + + + String + + + ExtraHdrValue + + + + String + + + AllowedHosts + + + + String + + + AllowedDirectories + + + + String + + + AllowedGroups + + + + String + + + GroupSIDs + + + + String + + + IncludeNestedGroups + + + + Boolean + + + DisplayPubPriv + + + + Boolean + + + DisablePasswordForm + + + + Boolean + + + Domain + + + + String + + + AltDomains + + + + String + + + Logoff + + + + String + + + ESPLogs + + + + Int16 + + + SMTPAllowedDomains + + + + String + + + ESPEnabled + + + + Boolean + + + UserPwdChangeUrl + + + + String + + + UserPwdChangeMsg + + + + String + + + InputAuthMode + + + + Int16 + + + OutputAuthMode + + + + Int16 + + + StartTLSMode + + + + Int16 + + + ExtraPorts + + + + String + + + AltAddress + + + + String + + + MultiConnect + + + + Boolean + + + SingleSignOnDir + + + + String + + + OCSPVerify + + + + String + + + FollowVSID + + + + Int32 + + + TlsType + + + + Boolean + + + CheckPostData + + + + String + + + CheckCodes + + + + String + + + PreProcPrecedence + + + + String + + + PreProcPrecedencePos + + + + Int16 + + + RequestPrecedence + + + + String + + + RequestPrecedencePos + + + + Int16 + + + ResponsePrecedence + + + + String + + + ResponsePrecedencePos + + + + Int16 + + + RsRulePrecedence + + + + String + + + RsRulePrecedencePos + + + + Int16 + + + NeedHostName + + + + Boolean + + + CopyHdrFrom + + + + String + + + CopyHdrTo + + + + String + + + ServerFbaPath + + + + String + + + ServerFbaPost + + + + String + + + Intercept + + + + Boolean + + + AllowHTTP2 + + + + Boolean + + + InterceptOpts + + + + String + + + InterceptRules + + + + String + + + AlertThreshold + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VirtualService + + + + String + + String + + + + + + VSPort + + + + Int32 + + Int32 + + + + + + VSProtocol + + + + String + + String + + + + + + VSIndex + + + + Int32 + + Int32 + + + + + + AddVia + + + + Int16 + + Int16 + + + + + + Cache + + + + Boolean + + Boolean + + + + + + CertFile + + + + String + + String + + + + + + CheckType + + + + String + + String + + + + + + CheckHost + + + + String + + String + + + + + + CheckPattern + + + + String + + String + + + + + + CheckUrl + + + + String + + String + + + + + + CheckHeaders + + + + String + + String + + + + + + LdapEndpoint + + + + String + + String + + + + + + MatchLen + + + + String + + String + + + + + + CheckUse1_1 + + + + Int32 + + Int32 + + + + + + CheckPort + + + + Int32 + + Int32 + + + + + + EnhancedHealthChecks + + + + Boolean + + Boolean + + + + + + RsMinimum + + + + Int32 + + Int32 + + + + + + ClientCert + + + + Int16 + + Int16 + + + + + + Compress + + + + Boolean + + Boolean + + + + + + Cookie + + + + String + + String + + + + + + CachePercent + + + + Int16 + + Int16 + + + + + + DefaultGW + + + + String + + String + + + + + + Enable + + + + Boolean + + Boolean + + + + + + ErrorCode + + + + String + + String + + + + + + ErrorUrl + + + + String + + String + + + + + + PortFollow + + + + Int32 + + Int32 + + + + + + ForceL7 + + + + Boolean + + Boolean + + + + + + Idletime + + + + Int32 + + Int32 + + + + + + LocalBindAddresses + + + + String[] + + String[] + + + + + + VSType + + + + String + + String + + + + + + Nickname + + + + String + + String + + + + + + Persist + + + + String + + String + + + + + + PersistTimeout + + + + Int32 + + Int32 + + + + + + QueryTag + + + + String + + String + + + + + + CipherSet + + + + String + + String + + + + + + SSLReencrypt + + + + Boolean + + Boolean + + + + + + SSLReverse + + + + Boolean + + Boolean + + + + + + SSLRewrite + + + + String + + String + + + + + + ReverseSNIHostname + + + + String + + String + + + + + + Schedule + + + + String + + String + + + + + + ServerInit + + + + Int16 + + Int16 + + + + + + SSLAcceleration + + + + Boolean + + Boolean + + + + + + StandByAddr + + + + String + + String + + + + + + StandByPort + + + + String + + String + + + + + + TransactionLimit + + + + Int32 + + Int32 + + + + + + Transparent + + + + Boolean + + Boolean + + + + + + SubnetOriginating + + + + Boolean + + Boolean + + + + + + UseforSnat + + + + Boolean + + Boolean + + + + + + QoS + + + + String + + String + + + + + + CheckUseGet + + + + Int32 + + Int32 + + + + + + Verify + + + + Int16 + + Int16 + + + + + + ExtraHdrKey + + + + String + + String + + + + + + ExtraHdrValue + + + + String + + String + + + + + + AllowedHosts + + + + String + + String + + + + + + AllowedDirectories + + + + String + + String + + + + + + AllowedGroups + + + + String + + String + + + + + + GroupSIDs + + + + String + + String + + + + + + IncludeNestedGroups + + + + Boolean + + Boolean + + + + + + DisplayPubPriv + + + + Boolean + + Boolean + + + + + + DisablePasswordForm + + + + Boolean + + Boolean + + + + + + Domain + + + + String + + String + + + + + + AltDomains + + + + String + + String + + + + + + Logoff + + + + String + + String + + + + + + ESPLogs + + + + Int16 + + Int16 + + + + + + SMTPAllowedDomains + + + + String + + String + + + + + + ESPEnabled + + + + Boolean + + Boolean + + + + + + UserPwdChangeUrl + + + + String + + String + + + + + + UserPwdChangeMsg + + + + String + + String + + + + + + InputAuthMode + + + + Int16 + + Int16 + + + + + + OutputAuthMode + + + + Int16 + + Int16 + + + + + + StartTLSMode + + + + Int16 + + Int16 + + + + + + ExtraPorts + + + + String + + String + + + + + + AltAddress + + + + String + + String + + + + + + MultiConnect + + + + Boolean + + Boolean + + + + + + SingleSignOnDir + + + + String + + String + + + + + + OCSPVerify + + + + String + + String + + + + + + FollowVSID + + + + Int32 + + Int32 + + + + + + TlsType + + + + Boolean + + Boolean + + + + + + CheckPostData + + + + String + + String + + + + + + CheckCodes + + + + String + + String + + + + + + PreProcPrecedence + + + + String + + String + + + + + + PreProcPrecedencePos + + + + Int16 + + Int16 + + + + + + RequestPrecedence + + + + String + + String + + + + + + RequestPrecedencePos + + + + Int16 + + Int16 + + + + + + ResponsePrecedence + + + + String + + String + + + + + + ResponsePrecedencePos + + + + Int16 + + Int16 + + + + + + RsRulePrecedence + + + + String + + String + + + + + + RsRulePrecedencePos + + + + Int16 + + Int16 + + + + + + NeedHostName + + + + Boolean + + Boolean + + + + + + CopyHdrFrom + + + + String + + String + + + + + + CopyHdrTo + + + + String + + String + + + + + + ServerFbaPath + + + + String + + String + + + + + + ServerFbaPost + + + + String + + String + + + + + + Intercept + + + + Boolean + + Boolean + + + + + + AllowHTTP2 + + + + Boolean + + Boolean + + + + + + InterceptOpts + + + + String + + String + + + + + + InterceptRules + + + + String + + String + + + + + + AlertThreshold + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SetVpnAddrs + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnAddrs + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnAddrs + + + + SetVpnAddrs + + Name + + + + String + + + LocalIp + + + + String + + + LocalSubnets + + + + String + + + RemoteIp + + + + String + + + RemoteSubnets + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + SetVpnAddrs + + Name + + + + String + + + LocalIp + + + + String + + + LocalSubnets + + + + String + + + RemoteIp + + + + String + + + RemoteSubnets + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LocalIp + + + + String + + String + + + + + + LocalSubnets + + + + String + + String + + + + + + RemoteIp + + + + String + + String + + + + + + RemoteSubnets + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SetVpnLocalIp + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnLocalIp + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnLocalIp + + + + SetVpnLocalIp + + Name + + + + String + + + LocalIp + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + SetVpnLocalIp + + Name + + + + String + + + LocalIp + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LocalIp + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SetVpnLocalSubnets + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnLocalSubnet + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnLocalSubnet + + + + SetVpnLocalSubnets + + Name + + + + String + + + LocalSubnets + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + SetVpnLocalSubnets + + Name + + + + String + + + LocalSubnets + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LocalSubnets + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SetVpnPfsDisable + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnPfsDisable + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnPfsDisable + + + + SetVpnPfsDisable + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + SetVpnPfsDisable + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SetVpnPfsEnable + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnPfsEnable + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnPfsEnable + + + + SetVpnPfsEnable + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + SetVpnPfsEnable + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SetVpnRemoteIp + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnRemoteIp + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnRemoteIp + + + + SetVpnRemoteIp + + Name + + + + String + + + RemoteIp + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + SetVpnRemoteIp + + Name + + + + String + + + RemoteIp + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + RemoteIp + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SetVpnRemoteSubnets + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnRemoteSubnet + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnRemoteSubnet + + + + SetVpnRemoteSubnets + + Name + + + + String + + + RemoteSubnets + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + SetVpnRemoteSubnets + + Name + + + + String + + + RemoteSubnets + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + RemoteSubnets + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SetVpnSecret + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnSecret + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-LmVpnSecret + + + + SetVpnSecret + + Name + + + + String + + + LocalId + + + + String + + + RemoteId + + + + String + + + Key + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + SetVpnSecret + + Name + + + + String + + + LocalId + + + + String + + + RemoteId + + + + String + + + Key + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LocalId + + + + String + + String + + + + + + RemoteId + + + + String + + String + + + + + + Key + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-WafLogFormat + + Configure the format of the WAF logs. + + + + + Set + WafLogFormat + + + + The WAF logs can either be in JSON or native format. + + + + Set-WafLogFormat + + LogFormat + + Specify the format of the WAF log. This can be either in JSON or native format. Valid values are: + - json + - native + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-WafLogFormat + + LogFormat + + Specify the format of the WAF log. This can be either in JSON or native format. Valid values are: + - json + - native + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LogFormat + + Specify the format of the WAF log. This can be either in JSON or native format. Valid values are: + - json + - native + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-WafLogFormat -LogFormat json + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-WafRulesAutoUpdateConfiguration + + Configure the Web Application Firewall (WAF) auto-update settings. + + + + + Set + WafRulesAutoUpdateConfiguration + + + + This command can be used to set the WAF auto-update settings. + + + + Set-WafRulesAutoUpdateConfiguration + + DatabaseAutoUpdate + + Enable or disable the automatic downloading of updates to the commercial WAF rule files. When this option is enabled, updated rules are downloaded on a daily basis from KEMP. The installation time for these rule updates is 4am. + + SwitchParameter + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-WafRulesAutoUpdateConfiguration + + DatabaseAutoInstall + + Enable or disable the automatic installation of updated commercial rule files. + + SwitchParameter + + + DatabaseInstallTimeHour + + Set the time of day that the commercial rule files will be automatically installed. The hour is the hour value from the 24-hour clock (0-23), for example 13 is 1pm. The range is 0-23. Minutes cannot be specified. + + Int32 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + DatabaseAutoUpdate + + Enable or disable the automatic downloading of updates to the commercial WAF rule files. When this option is enabled, updated rules are downloaded on a daily basis from KEMP. The installation time for these rule updates is 4am. + + SwitchParameter + + SwitchParameter + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + DatabaseAutoInstall + + Enable or disable the automatic installation of updated commercial rule files. + + SwitchParameter + + SwitchParameter + + + + + + DatabaseInstallTimeHour + + Set the time of day that the commercial rule files will be automatically installed. The hour is the hour value from the 24-hour clock (0-23), for example 13 is 1pm. The range is 0-23. Minutes cannot be specified. + + Int32 + + Int32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + You can only use one login method - either certificate or credential. You cannot use both. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-WafRulesAutoUpdateConfiguration -DatabaseInstallTimeHour 3 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed + + + + + + + + + + + + + + + + + Set-WUIAuth + + WARNING: This function is deprecated. Use the following command instead: +Set-SecWuiAuthentication + + + + + Set + WUIAuth + + + + WARNING: This function is deprecated. Use the following command instead: +Set-SecWuiAuthentication + + + + Set-WUIAuth + + RADIUSServer + + + + String + + + RADIUSPort + + + + Int64 + + + RADIUSSecret + + + + String + + + RADIUSBackupServer + + + + String + + + RADIUSBackupPort + + + + Int64 + + + RADIUSBackupSecret + + + + String + + + RADIUSRevalidateInterval + + + + Int32 + + + WuiLdapEp + + + + String + + + SessionLocalAuth + + + + Boolean + + + SessionAuthMode + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-WUIAuth + + RADIUSServer + + + + String + + + RADIUSPort + + + + Int64 + + + RADIUSSecret + + + + String + + + RADIUSBackupServer + + + + String + + + RADIUSBackupPort + + + + Int64 + + + RADIUSBackupSecret + + + + String + + + RADIUSRevalidateInterval + + + + Int32 + + + WuiLdapEp + + + + String + + + SessionLocalAuth + + + + Boolean + + + SessionAuthMode + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + RADIUSServer + + + + String + + String + + + + + + RADIUSPort + + + + Int64 + + Int64 + + + + + + RADIUSSecret + + + + String + + String + + + + + + RADIUSBackupServer + + + + String + + String + + + + + + RADIUSBackupPort + + + + Int64 + + Int64 + + + + + + RADIUSBackupSecret + + + + String + + String + + + + + + RADIUSRevalidateInterval + + + + Int32 + + Int32 + + + + + + WuiLdapEp + + + + String + + String + + + + + + SessionLocalAuth + + + + Boolean + + Boolean + + + + + + SessionAuthMode + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-WUISetting + + WARNING: This function is deprecated. Use the following command instead: +Set-SecAdminWuiConfiguration + + + + + Set + WUISetting + + + + WARNING: This function is deprecated. Use the following command instead: +Set-SecAdminWuiConfiguration + + + + Set-WUISetting + + WUITLSProtocols + + + + Int32 + + + WUICipherset + + + + String + + + sessioncontrol + + + + Boolean + + + sessionbasicauth + + + + Boolean + + + sessionmaxfailattempts + + + + Int16 + + + sessionidletime + + + + Int32 + + + sessionconcurrent + + + + Int16 + + + wuipreauth + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Set-WUISetting + + WUITLSProtocols + + + + Int32 + + + WUICipherset + + + + String + + + sessioncontrol + + + + Boolean + + + sessionbasicauth + + + + Boolean + + + sessionmaxfailattempts + + + + Int16 + + + sessionidletime + + + + Int32 + + + sessionconcurrent + + + + Int16 + + + wuipreauth + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + WUITLSProtocols + + + + Int32 + + Int32 + + + + + + WUICipherset + + + + String + + String + + + + + + sessioncontrol + + + + Boolean + + Boolean + + + + + + sessionbasicauth + + + + Boolean + + Boolean + + + + + + sessionmaxfailattempts + + + + Int16 + + Int16 + + + + + + sessionidletime + + + + Int32 + + Int32 + + + + + + sessionconcurrent + + + + Int16 + + Int16 + + + + + + wuipreauth + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ShowCluster + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoCluster + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoCluster + + + + ShowCluster + + ClusterIp + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ShowCluster + + ClusterIp + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ClusterIp + + + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + IP + + The IP address of the cluster. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ShowCluster –IP <IPAddress> + + + + + Example Output: +Enable : Y +LocationLatitude : 0.00000000 +Type : localLM +LocationLongitude : 0.00000000 +ClusterVSAddress : +Checker : none +Name : local_Cluster +Index : 1 +Status : Up +CheckerPort : 0 +IPAddress : 10.11.0.105 + + + + + + + + + + + + + + + + + ShowIP + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoIpRange + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoIpRange + + + + ShowIP + + IP + + IP address of the IP range. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + ShowIP + + IP + + IP address of the IP range. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + IP + + IP address of the IP range. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ShowIP –IP <IPAddress> + + + + + Example Output: +countrycode : IE +Ip : 10.11.0.65 +Used : Y +IsCustom : N +Mask : 24 +Index : 2 +CustomLocation : 0 +IPAddress : 10.11.0.65 + + + + + + + + + + + + + + + + + StartIkeDaemon + + WARNING: This function is deprecated. Use the following command instead: +Start-LmVpnIkeDaemon + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Start-LmVpnIkeDaemon + + + + StartIkeDaemon + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + StartIkeDaemon + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Start-LmVpnConnection + + Start the Virtual Private Network (VPN) + + + + + Start + LmVpnConnection + + + + This command allows you to start the connection of specified VPN. + + + + Start-LmVpnConnection + + Name + + The name of the VPN. + + String + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Start-LmVpnConnection + + Name + + The name of the VPN. + + String + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + + LBPort + + The port of the load balancer. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LoadBalancer command, but can be overridden on each individual command by using this parameter. + + String + + String + + + + + + LBPort + + The port of the load balancer. + + Int32 + + Int32 + + + + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Start-LmVpnConnection -Name ExampleVPN + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Start-LmVpnIkeDaemon + + Starts the Internet Key Exchange (IKE) daemon. + + + + + Start + LmVpnIkeDaemon + + + + Run this command to start the IKE daemon. + + + + Start-LmVpnIkeDaemon + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Start-LmVpnIkeDaemon + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Start-LmVpnIkeDaemon + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + StartVpnConnection + + WARNING: This function is deprecated. Use the following command instead: +Start-LmVpnConnection + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Start-LmVpnConnection + + + + StartVpnConnection + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + StartVpnConnection + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + StatusIkeDaemon + + WARNING: This function is deprecated. Use the following command instead: +Get-LmVpnIkeDaemonStatus + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-LmVpnIkeDaemonStatus + + + + StatusIkeDaemon + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + StatusIkeDaemon + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stop-AslInstance + + If the Activation Server functionality was used to license the LoadMaster, this command can be used to deactivate the client LoadMaster license. + + + + + Stop + AslInstance + + + + KEMP strongly recommends deregistering a LoadMaster using the KEMP 360 Central User Interface (UI) or the KEMP 360 Central API, rather than the LoadMaster ones. Deregistering a LoadMaster from the LoadMaster UI can lead to the LoadMaster having an unknown state in KEMP 360 Central. In these cases, it is not easy to remove the LoadMaster from KEMP 360 Central and the unknown LoadMaster is still taking up an available license. + + + + Stop-AslInstance + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Stop-AslInstance + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Stop-AslInstance + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + StopIkeDaemon + + WARNING: This function is deprecated. Use the following command instead: +Stop-LmVpnIkeDaemon + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Stop-LmVpnIkeDaemon + + + + StopIkeDaemon + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + StopIkeDaemon + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stop-LmVpnConnection + + Stop the Virtual Private Network (VPN). + + + + + Stop + LmVpnConnection + + + + This command allows you to stop the connection of specified VPN. + + + + Stop-LmVpnConnection + + Name + + The name of the VPN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Stop-LmVpnConnection + + Name + + The name of the VPN. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + The name of the VPN. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Stop-LmVpnConnection -Name ExampleVPN + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Stop-LmVpnIkeDaemon + + Stop the Internet Key Exchange (IKE) daemon. + + + + + Stop + LmVpnIkeDaemon + + + + This command allows you to stop the IKE daemon. + + + + Stop-LmVpnIkeDaemon + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Stop-LmVpnIkeDaemon + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Stop-LmVpnIkeDaemon + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Stop-SSODomainSession + + Kill all open sessions for an SSO domain, or one particular session. + + + + + Stop + SSODomainSession + + + + Kill all open sessions for an SSO domain, or one particular session. + + + + Stop-SSODomainSession + + Domain + + Specify the domain to kill the open sessions for. + + String + + + Key + + To kill all open sessions for the specified domain, leave this parameter blank. To kill a particular session, specify the cookie or <Username>,<HostIPAddress>. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Stop-SSODomainSession + + Domain + + Specify the domain to kill the open sessions for. + + String + + + Key + + To kill all open sessions for the specified domain, leave this parameter blank. To kill a particular session, specify the cookie or <Username>,<HostIPAddress>. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Domain + + Specify the domain to kill the open sessions for. + + String + + String + + + + + + Key + + To kill all open sessions for the specified domain, leave this parameter blank. To kill a particular session, specify the cookie or <Username>,<HostIPAddress>. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Stop-SSODomainSession -Domain qasp.com + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + StopVpnConnection + + WARNING: This function is deprecated. Use the following command instead: +Stop-LmVpnConnection + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Stop-LmVpnConnection + + + + StopVpnConnection + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + StopVpnConnection + + Name + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Name + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test-LmGeoEnabled + + Will tell you if GEO is currently enabled or disabled. + + + + + Test + LmGeoEnabled + + + + Will tell you if GEO is currently enabled or disabled. + + + + Test-LmGeoEnabled + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Test-LmGeoEnabled + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Test-LmGeoEnabled + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +GEO is disabled + + + + + + + + + + + + + + + + + Test-LmServerConnection + + Test the connection to the LoadMaster. + + + + + Test + LmServerConnection + + + + Test the connection to the LoadMaster. + + + + Test-LmServerConnection + + ComputerName + + Enter the LoadMaster IP address. + + String + + + Port + + Enter the Port to perform the test on. + + Int32 + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ComputerName + + Enter the LoadMaster IP address. + + String + + String + + + + + + Port + + Enter the Port to perform the test on. + + Int32 + + Int32 + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Test-LmServerConnection -ComputerName 172.20.1.19 -Port 443 + + + + + Example Output: +True + + + + + + + + + + + + + + + + + Test-NetworkRoute + + Run a traceroute. + + + + + Test + NetworkRoute + + + + This diagnostic utility determines the route to a destination by sending Internet Control Message Protocol (ICMP) echo packets to the destination. + + + + Test-NetworkRoute + + Address + + The address to run the command on. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Test-NetworkRoute + + Address + + The address to run the command on. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Address + + The address to run the command on. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Test-NetworkRoute -Address 10.154.11.23 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Traceroute=} +TracerouteTo : traceroute to 10.154.11.23 (10.154.11.23), 30 hops max, 60 byte packets +Hop 1 : 1 10.154.11.180 3007.251 ms !H 3007.028 ms !H 3006.995 ms !H + + + + + + + + + + + + + + + + + Test-SecAPIAccess + + This command will tell you if the API interface is enabled or disabled on the LoadMaster. + + + + + Test + SecAPIAccess + + + + This command will tell you if the API interface is enabled or disabled on the LoadMaster. + + + + Test-SecAPIAccess + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Test-SecAPIAccess + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Test-SecApiAccess + + + + + Example Output: +Full response: @{ReturnCode=200; Response=The API is enabled; Data=} +Return Code..: 200 +Response.....: The API is enabled +7.2.39.0.14993.DEV + + + + + + + + + + + + + + + + + Test-ServerConnection + + WARNING: This function is deprecated. Use the following command instead: +Test-LmServerConnection + + + + + Test + ServerConnection + + + + WARNING: This function is deprecated. Use the following command instead: +Test-LmServerConnection + + + + Test-ServerConnection + + ComputerName + + + + String + + + Port + + + + Int32 + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + ComputerName + + + + String + + String + + + + + + Port + + + + Int32 + + Int32 + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Trace-TcpTraffic + + Executes the tcpdump command. + + + + + Trace + TcpTraffic + + + + Run a tcpdump. The tcpdump captures until the packet limit or time limit is reached (whatever is first) and returns the tcpdump as a pcap binary. Mime type: <application/cap> + + + + Trace-TcpTraffic + + MaxPackets + + The maximum number of packets to capture. The default value for this parameter is 10000. Valid values range from 1 to 200000. The maximum is the API maximum - the actual maximum size is defined by the space available. + + Int32 + + + MaxTime + + The maximum number of seconds to capture. The default value for this parameter is 10. Valid values range from 1 to 600. + + Int32 + + + Interface + + The interface(s) to monitor. The default interface is eth0. A TCP dump can be captured either by one or all Ethernet ports. + + String + + + Port + + The port to monitor. + + String + + + Address + + The (optional) address to monitor. + + String + + + TcpOptions + + Any optional parameters needed. The maximum number of characters permitted is 255. + + String + + + Path + + The path to and filename of an export of the tcpdump results. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + Trace-TcpTraffic + + MaxPackets + + The maximum number of packets to capture. The default value for this parameter is 10000. Valid values range from 1 to 200000. The maximum is the API maximum - the actual maximum size is defined by the space available. + + Int32 + + + MaxTime + + The maximum number of seconds to capture. The default value for this parameter is 10. Valid values range from 1 to 600. + + Int32 + + + Interface + + The interface(s) to monitor. The default interface is eth0. A TCP dump can be captured either by one or all Ethernet ports. + + String + + + Port + + The port to monitor. + + String + + + Address + + The (optional) address to monitor. + + String + + + TcpOptions + + Any optional parameters needed. The maximum number of characters permitted is 255. + + String + + + Path + + The path to and filename of an export of the tcpdump results. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + + + + + MaxPackets + + The maximum number of packets to capture. The default value for this parameter is 10000. Valid values range from 1 to 200000. The maximum is the API maximum - the actual maximum size is defined by the space available. + + Int32 + + Int32 + + + + + + MaxTime + + The maximum number of seconds to capture. The default value for this parameter is 10. Valid values range from 1 to 600. + + Int32 + + Int32 + + + + + + Interface + + The interface(s) to monitor. The default interface is eth0. A TCP dump can be captured either by one or all Ethernet ports. + + String + + String + + + + + + Port + + The port to monitor. + + String + + String + + + + + + Address + + The (optional) address to monitor. + + String + + String + + + + + + TcpOptions + + Any optional parameters needed. The maximum number of characters permitted is 255. + + String + + String + + + + + + Path + + The path to and filename of an export of the tcpdump results. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + SwitchParameter + + SwitchParameter + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + SwitchParameter + + SwitchParameter + + + + + + Confirm + + Confirms that the action should be carried out. + + SwitchParameter + + SwitchParameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + TraceTcpTraffic Address 10.154.190.207 Path c:/example2/example2 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + +--------- + +The TCP trace results will be saved to the specified path. + + + + + + + + + + + + + + + + + Uninstall-LmPatch + + Allows you to roll-back the LoadMaster to the previous version of firmware. + + + + + Uninstall + LmPatch + + + + Allows you to roll-back the LoadMaster to the previous version of firmware. You will be asked to restart the LoadMaster for the command to complete. + + + + Uninstall-LmPatch + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Uninstall-LmPatch + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Uninstall-LmPatch + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{PatchData=Previous firmware version successfully restored. Please reboot the LM to apply.} + + + + + + + + + + + + + + + + + Uninstall-WafCustomRuleData + + Allows you to delete an AFP custom rule data file. + + + + + Uninstall + WafCustomRuleData + + + + Allows you to delete an AFP custom rule data file. + + + + Uninstall-WafCustomRuleData + + Filename + + The filename of the custom rule data file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Uninstall-WafCustomRuleData + + Filename + + The filename of the custom rule data file. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Filename + + The filename of the custom rule data file. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Uninstall-WafCustomRuleData -Filename modsecurity_35_bad_robots + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Uninstall-WafCustomRuleSet + + Allows you to delete custom AFP rule file + + + + + Uninstall + WafCustomRuleSet + + + + Allows you to delete custom AFP rule file + + + + Uninstall-WafCustomRuleSet + + Filename + + The filename of the custom rule. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Uninstall-WafCustomRuleSet + + Filename + + The filename of the custom rule. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Filename + + The filename of the custom rule. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This does not delete the associated data file. + If the filename specified does not match a rule file that exists in the LoadMaster, a Rule not found error will be displayed. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Uninstall-WafCustomRuleSet -Filename modsecurity_crs_11_brute_force + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Unregister-BondedInterface + + WARNING: This function is deprecated. Use the following command instead: +Unregister-NetworkBondedInterface + + + + + Unregister + BondedInterface + + + + WARNING: This function is deprecated. Use the following command instead: +Unregister-NetworkBondedInterface + + + + Unregister-BondedInterface + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Unregister-BondedInterface + + InterfaceID + + + + Int16 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + + + Int16 + + Int16 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unregister-NetworkBondedInterface + + Enables you to unregister the address of a bonded interface. + + + + + Unregister + NetworkBondedInterface + + + + This command waits two minutes to reconnect to the LoadMaster. If the wait time is longer than two minutes, an error message appears. + + + + Unregister-NetworkBondedInterface + + InterfaceID + + The ID of the interface that should be unregistered. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Unregister-NetworkBondedInterface + + InterfaceID + + The ID of the interface that should be unregistered. + + Int16 + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + InterfaceID + + The ID of the interface that should be unregistered. + + Int16 + + Int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Unregister-NetworkBondedInterface -InterfaceID 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Interface=} +Id : 1 +IPAddress : +InterfaceType : Port +GeoTrafficEnable : no +DefaultInterface : no + + + + + + + + + + + + + + + + + Update-AFEIDSRules + + Upload a new ruleset. + + + + + Update + AFEIDSRules + + + + To get updated or customized SNORT rules, please refer to the SNORT website: https://www.snort.org/. + + + + Update-AFEIDSRules + + Path + + The path to the rules file to be uploaded in the format <Path>\<Filename.Extension>, for example C:\t\community-rules.tar. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Update-AFEIDSRules + + Path + + The path to the rules file to be uploaded in the format <Path>\<Filename.Extension>, for example C:\t\community-rules.tar. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to the rules file to be uploaded in the format <Path>\<Filename.Extension>, for example C:\t\community-rules.tar. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-AFEIDSRules -Path C:\t\community-rules.tar + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Update-GeoDatabase + + Install an updated GEO database patch file. + + + + + Update + GeoDatabase + + + + Install an updated GEO database patch file. + + + + Update-GeoDatabase + + Path + + The path to the patch file in the format path\filename.extension + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Update-GeoDatabase + + Path + + The path to the patch file in the format path\filename.extension + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to the patch file in the format path\filename.extension + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-GeoDatabase –Path C:\Users\ExampleUser\Downloads\geodata.patch (1)\geodata.patch\geodata.patch_2017_03_01_0104 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Update-GeoIPBlacklistDatabase + + Download the GEO IP blacklist database updates now. + + + + + Update + GeoIPBlacklistDatabase + + + + To manually download updates to the GEO IP blacklist database, run this command. + + + + Update-GeoIPBlacklistDatabase + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Update-GeoIPBlacklistDatabase + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-GeoIPBlacklistDatabase + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed. Download of new GEO IP Blacklist data successfully completed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. Download of new GEO IP Blacklist data successfully completed. + + + + + + + + + + + + + + + + + Update-LicenseOffline + + License the LoadMaster using the offline method. + + + + + Update + LicenseOffline + + + + Offline licensing requires a Binary Large OBject (BLOB) file which is provided by KEMP. The License BLOB is emailed to the customer when requested. Each time a license is updated a new BLOB is needed. The BLOB must be copied and pasted into a text file (in the following example the file is called license.txt). + + + + Update-LicenseOffline + + Path + + The path to the license BLOB file, including the filename and extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Update-LicenseOffline + + Path + + The path to the license BLOB file, including the filename and extension. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + The path to the license BLOB file, including the filename and extension. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-LicenseOffline -Path +C:\ExamplePath\blob.txt + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Update-LicenseOnline + + Update the LoadMaster's license online. + + + + + Update + LicenseOnline + + + + Cause the LoadMaster to query the KEMP licensing system for an updated license. + + + + Update-LicenseOnline + + KempId + + The email address you used when registering for a KEMP ID. + + String + + + Password + + The password of your KEMP ID account. + + String + + + OrderId + + The Orderid parameter is only needed for Virtual LoadMasters. The Order ID is provided by KEMP after a license is purchased. + + String + + + http_proxy + + You can optionally use a HTTP(S) proxy to connect to the licensing server. Specify the HTTP(S) proxy server and port, in the format <ProxyAddress>:<Port>. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Update-LicenseOnline + + KempId + + The email address you used when registering for a KEMP ID. + + String + + + Password + + The password of your KEMP ID account. + + String + + + OrderId + + The Orderid parameter is only needed for Virtual LoadMasters. The Order ID is provided by KEMP after a license is purchased. + + String + + + http_proxy + + You can optionally use a HTTP(S) proxy to connect to the licensing server. Specify the HTTP(S) proxy server and port, in the format <ProxyAddress>:<Port>. + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + KempId + + The email address you used when registering for a KEMP ID. + + String + + String + + + + + + Password + + The password of your KEMP ID account. + + String + + String + + + + + + OrderId + + The Orderid parameter is only needed for Virtual LoadMasters. The Order ID is provided by KEMP after a license is purchased. + + String + + String + + + + + + http_proxy + + You can optionally use a HTTP(S) proxy to connect to the licensing server. Specify the HTTP(S) proxy server and port, in the format <ProxyAddress>:<Port>. + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-LicenseOnline -KempId exampleuser@examplecompany.com -Password examplepassword + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Update-LmDNSCache + + WARNING: This function is deprecated. Use the following command instead: +Update-NetworkDNSCache + + + + + Update + LmDNSCache + + + + WARNING: This function is deprecated. Use the following command instead: +Update-NetworkDNSCache + + + + Update-LmDNSCache + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Update-LmDNSCache + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-LmDnsCache + + + + + Example Output: +ReturnCode Data Response +---------- ---- -------- + 200 Command successfully executed + + + + + + + + + + + + + + + + + Update-NetworkDNSCache + + Force a new resolution of DNS names. + + + + + Update + NetworkDNSCache + + + + The LoadMaster will try to resolve the DNS names: +• If the address is not found, or if it is the same as before – nothing is done (except a log entry is generated). +• If the address is different, the Real Server entry will be updated with the new address, if possible. +• If the new address is invalid for some reason, for example if it is a non-local address and the Non-Local Real Servers setting has been disabled, no changes are made and a log is generated. + + + + Update-NetworkDNSCache + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Update-NetworkDNSCache + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-NetworkDNSCache + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Update-WafRulesDatabase + + Manually trigger the installation of downloaded rules. + + + + + Update + WafRulesDatabase + + + + Manually trigger the installation of downloaded Web Application Firewall (WAF) rules. + + + + Update-WafRulesDatabase + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + Update-WafRulesDatabase + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-WafRulesDatabase + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + UploadAddon + + WARNING: This function is deprecated. Use the following command instead: +Install-LmAddon + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Install-LmAddon + + + + UploadAddon + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + UploadAddon + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UploadRSAConfigurationFile + + WARNING: This function is deprecated. Use the following command instead: +Get-SSODomainSession + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-SSODomainSession + + + + UploadRSAConfigurationFile + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + UploadRSAConfigurationFile + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UploadRSANodeSecretAndPassword + + WARNING: This function is deprecated. Use the following command instead: +Stop-SSODomainSession + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Stop-SSODomainSession + + + + UploadRSANodeSecretAndPassword + + Password + + + + String + + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + UploadRSANodeSecretAndPassword + + Password + + + + String + + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Password + + + + String + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UploadTemplate + + WARNING: This function is deprecated. Use the following command instead: +Install-Template + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Install-Template + + + + UploadTemplate + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + UploadTemplate + + Path + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + Path + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UserChangeLocalPassword + + WARNING: This function is deprecated. Use the following command instead: +Set-SecUserPassword + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-SecUserPassword + + + + UserChangeLocalPassword + + User + + + + String + + + Password + + + + String + + + Radius + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + UserChangeLocalPassword + + User + + + + String + + + Password + + + + String + + + Radius + + + + Int32 + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + User + + + + String + + String + + + + + + Password + + + + String + + String + + + + + + Radius + + + + Int32 + + Int32 + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UserSetPermissions + + WARNING: This function is deprecated. Use the following command instead: +Set-SecUserPermission + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-SecUserPermission + + + + UserSetPermissions + + User + + + + String + + + Permissions + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + UserSetPermissions + + User + + + + String + + + Permissions + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + User + + + + String + + String + + + + + + Permissions + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UserSetSystemPassword + + WARNING: This function is deprecated. Use the following command instead: +Set-SecSystemUserPassword + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Set-SecSystemUserPassword + + + + UserSetSystemPassword + + CurrentPassword + + + + String + + + NewPassword + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + CurrentPassword + + + + String + + String + + + + + + NewPassword + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VSAddWafRule + + WARNING: This function is deprecated. Use the following command instead: +New-AdcVsWafRule + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +New-AdcVsWafRule + + + + VSAddWafRule + + VS + + The IP address of the relevant Virtual Service. + + String + + + VSPort + + + + String + + + VSProtocol + + + + String + + + Rule + + Specify the name of the rule to be assigned. +The rule name must be preceded with a letter/word and a forward slash. The letter used depends on the type of rule being added: + - C or Custom + - Z or ApplicationGeneric + - A or ApplicationSpecific + - G or Generic + + String + + + Enablerules + + + + String + + + Disablerules + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + VSAddWafRule + + VS + + The IP address of the relevant Virtual Service. + + String + + + VSPort + + + + String + + + VSProtocol + + + + String + + + Rule + + Specify the name of the rule to be assigned. +The rule name must be preceded with a letter/word and a forward slash. The letter used depends on the type of rule being added: + - C or Custom + - Z or ApplicationGeneric + - A or ApplicationSpecific + - G or Generic + + String + + + Enablerules + + + + String + + + Disablerules + + + + String + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VS + + The IP address of the relevant Virtual Service. + + String + + String + + + + + + VSPort + + + + String + + String + + + + + + VSProtocol + + + + String + + String + + + + + + Rule + + Specify the name of the rule to be assigned. +The rule name must be preceded with a letter/word and a forward slash. The letter used depends on the type of rule being added: + - C or Custom + - Z or ApplicationGeneric + - A or ApplicationSpecific + - G or Generic + + String + + String + + + + + + Enablerules + + + + String + + String + + + + + + Disablerules + + + + String + + String + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + Port + + Specifies the port on which this Virtual Service accepts connections. + + string + + string + + + + + + Prot + + Specifies the communication protocol of the Virtual Service. Valid options are TCP or UDP. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The rule name must be preceded with the relevant letter/word and a forward slash. The letter/word used depends on the type of rule being assigned. + This is case sensitive. The letter/word needs to be in the correct case for the command to work. + • C or Custom + • Z or ApplicationGeneric + • A or ApplicationSpecific + • G or Generic + Multiple rules can be assigned in the same command by separating them with a space. + An invalid rule error will display if the name of the rule is not entered correctly, if the preceding letter is incorrect, or if the does not exist in the LoadMaster. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + VSAddWafRule -VS 10.11.0.31 -Port 80 -Prot tcp -Rule C/modsecurity_crs_11_brute_force + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + VSListWafRuleIds + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcVsWafRule + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-AdcVsWafRule + + + + VSListWafRuleIds + + VS + + + + String + + + VSPort + + + + String + + + VSProtocol + + + + String + + + Rule + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + VSListWafRuleIds + + VS + + + + String + + + VSPort + + + + String + + + VSProtocol + + + + String + + + Rule + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VS + + + + String + + String + + + + + + VSPort + + + + String + + String + + + + + + VSProtocol + + + + String + + String + + + + + + Rule + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VSRemoveWafRule + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcVsWafRule + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Remove-AdcVsWafRule + + + + VSRemoveWafRule + + VS + + + + String + + + VSPort + + + + String + + + VSProtocol + + + + String + + + Rule + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + Credential + + + + Object + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + VSRemoveWafRule + + VS + + + + String + + + VSPort + + + + String + + + VSProtocol + + + + String + + + Rule + + + + String + + + LoadBalancer + + + + String + + + LBPort + + + + Int32 + + + CertificateStoreLocation + + + + String + + + SubjectCN + + + + String + + + InformationAction + + + + ActionPreference + + + InformationVariable + + + + String + + + + + + VS + + + + String + + String + + + + + + VSPort + + + + String + + String + + + + + + VSProtocol + + + + String + + String + + + + + + Rule + + + + String + + String + + + + + + LoadBalancer + + + + String + + String + + + + + + LBPort + + + + Int32 + + Int32 + + + + + + Credential + + + + Object + + Object + + + + + + InformationAction + + + + ActionPreference + + ActionPreference + + + + + + InformationVariable + + + + String + + String + + + + + + CertificateStoreLocation + + + + String + + String + + + + + + SubjectCN + + + + String + + String + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set-TlsHSMCACert + + Allows you to upload the CA certificate that has been downloaded from the HSM. + + + + + + + + + + Allows you to upload the CA certificate that has been downloaded from the HSM. + + + + + + Path + + The path to the certificate file followed by a backslash and the certificate file name followed by the file extension (.pem). + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-TlsHSMCACert –Path <Path\CertificateFileName.pem> + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Get-ClusterAwsHaConfiguration + + Retrieve the AWS High Availability (HA) parameters. + + + + + + + + + + Retrieve the AWS High Availability (HA) parameters. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-KEMPClusterAwsHaConfiguration + + + + + Example Output: +AwsHA +----- +single,unset,unset + + + + + + + + + + + + + + + + + Get-ClusterAzureHAConfiguration + + Retrieves the Azure High Availability (HA) parameters. + + + + + + + + + + Retrieves the Azure High Availability (HA) parameters. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-ClusterAzureHAConfiguration + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Get-ClusterHAConfiguration + + Allows you to view the values of High Availability (HA) options. + + + + + + + + + + Allows you to view the values of High Availability (HA) options. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and does not return all of the available parameters. Please refer to the Get-Help of the Get-Parameter command to view a full list of parameters that can be returned. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-ClusterHAConfiguration + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed + + +hamode : HA Second +hatimeout : 3 +hawait : 0 +havhid : 0 +haprefered : No Preferred Host +haif : 0 +hal4update : no +hal7update : no + + + + + + + + + + + + + + + + + Get-ClusterHAMode + + Retrieve the High Availability (HA) mode. + + + + + + + + + + The HA mode is one of the following options: +0 – HA mode disabled +1 – HA 1 mode +2 – HA 2 mode +3 – System is using cloud HA +4 – System is in a cluster + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-ClusterHAMode + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed; Data=} +Return Code..: 200 +Response.....: Command successfully executed +HaMode : 2 +HaDescription : HA Second + + + + + + + + + + + + + + + + + Set-ClusterAwsHAConfiguration + + Set the Amazon Web Services (AWS) High Availability (HA) options. + + + + + + + + + + Set the AWS HA options, such as the health check port and partner address. + + + + + + Partner + + Address of the HA partner. + + string + + string + + + + + + Hcp + + The port over which the health check is run. This needs to be the same on both the master and the slave units in order for HA to function correctly. + + string + + string + + + + + + haprefered + + + + int32 + + int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterAwsHAConfiguration –Hcp 443 –Partner <PartnerIPAddress> + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-ClusterAwsHAMode + + Allows you to specify the Amazon Web Services (AWS) HA mode. + + + + + + + + + + Allows you to specify the Amazon Web Services (AWS) HA mode, for example, master HA Mode, slave HA Mode or Non-HA mode. + + + + + + HAMode + + Specifies the HA mode. Valid values are: + - master + - slave + - single + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterAwsHAMode –HAMode master + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-ClusterAzureHAConfiguration + + Allows you to set the other Azure HA options: health check port and partner address. + + + + + + + + + + Allows you to set the other Azure HA options: health check port and partner address. + + + + + + Partner + + Address of the HA partner. + + string + + string + + + + + + Hcp + + The port over which the health check is run. This needs to be the same on both the master and the slave units in order for HA to function correctly. + + string + + string + + + + + + haprefered + + + + int32 + + int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterAzureHAConfiguration –Hcp 443 –Partner <PartnerIPAddress> + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-ClusterAzureHAMode + + Allows you to specify the Azure HA mode. + + + + + + + + + + Allows you to specify the Azure HA mode. For example, Master HA Mode, Slave HA Mode or Non-HA Mode (single). + + + + + + HAMode + + Specifies the HA mode. Valid options are master, slave or single. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterAzureHAMode –HAMode master + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-ClusterHAConfiguration + + Allows you to set the values of High Availability (HA) options. + + + + + + + + + + Allows you to set the values of High Availability (HA) options. + + + + + + hatimeout + + The time the master must be unavailable before a switchover occurs. The valid predetermined time intervals are listed below (in seconds): +3 +6 +9 +12 +15 + + int16 + + int16 + + + + + + hawait + + This is how long (in seconds) after the initial boot, before the LoadMaster becomes active. If the partner machine is running this value is ignored. This value can be changed to mitigate the time taken for some intelligent switches to detect that the LoadMaster has started and to bring up the link. + + int16 + + int16 + + + + + + havhid + + When using multiple HA LoadMasters on the same network, this value identifies each cluster so that there are no potential unwanted interactions. + + int16 + + int16 + + + + + + haprefered + + By default, neither partner in a HA cluster has priority. When a machine restarts after a switchover that machine becomes a slave. Specifying a preferred host means that when this machine restarts it will always become the master and the partner will revert to slave mode. + + string + + string + + + + + + haif + + The network interface used when synchronising the configuration between the members of the HA cluster. + + int16 + + int16 + + + + + + hal4update + + + + boolean + + boolean + + + + + + hal7update + + + + boolean + + boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + HAInitial + + Perform extra network checks at boot time. This may cause instability and should not be used. + + boolean + + boolean + + + + + + HAStyle + + By default, the system uses a version of VRRP (carp) to check the status of the partner. The system can also support the legacy Heartbeat program. This option only takes effect when both machines are rebooted. + + boolean + + boolean + + + + + + MCast + + The network interface used for multicast traffic which is used to synchronize Layer 4 and Layer 7 traffic when Inter HA Updates are enabled. + + int16 + + int16 + + + + + + Vmac + + This option creates a shared MAC address for both units. When failover occurs, the LoadMaster handles the MAC address handover too. This allows the switches to keep the MAC address and not worry about ARP caches or stale records. + + boolean + + boolean + + + + + + TCPFailover + + When using L4 services, enabling updates allows L4 connection maintenance across a HA switchover. This option is ignored for L7 services. + + boolean + + boolean + + + + + + CookieUpdate + + When using L7 services, enabling this option allows sharing of persistency information between HA partners. If a HA switchover occurs, the persistency information will then not be lost. Enabling this option can have a significant performance impact. + + boolean + + boolean + + + + + + FinalPersist + + When a Real Server is disabled, the sessions persisting on that Real Server continue to be served until the Drain Time has expired or until no more sessions are being handled by the Real Server. No new sessions will be handled by the Real Server. + + int32 + + int32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and cannot be used to set all of the available parameters. Please refer to the Get-Help of the Set-Parameter command to view a full list of parameters that can be configured. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterHAConfiguration -HATimeout 3 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +hatimeout : 3 + + + + + + + + + + + + + + + + + Set-ClusterHAMode + + Set the High Availability (HA) mode. + + + + + + + + + + Set the HA mode. + + + + + + HaMode + + The HA mode can be one of the following options: +SingleMode - Non-HA mode +First - HA 1 mode +Second - HA 2 mode + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterHAMode -HaMode SingleMode + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Get-PacketFilterOption + + Retrieves the value of the Packet Routing Filter option. + + + + + + + + + + Retrieves the value of the Packet Routing Filter option. This can also be used to determine whether packet filtering is enabled. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + Option + + The following packet filtering options are supported: enable, drop or ifblock + The "enable" option indicates whether packet filtering is enabled or disabled on the LoadMaster. Note that packet filtering is enabled by default and cannot be disabled if the GEO feature is enabled. + If packet filtering is enabled, the "drop" option indicates whether the LoadMaster silently drops blocked packets or rejects them by responding with an ICMP reject packet. For security reasons it is usually best to drop any blocked packets silently. + If packet filtering is enabled, the "ifblock" option indicates whether the LoadMaster restricts network traffic by imposing restrictions upon routing between attached subnets. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-PacketFilterOption -Option enable + + + + + Example Output: +aclstatus +--------- +enable + + + + + + + + + + + + + + + + + New-GlobalPacketFilterAddr + + Adds an address to the global black or white list. + + + + + + + + + + Adds a host or network IP address to the global black or white Access Control List (ACL). Note that black and white lists are only enabled when packet filtering is enabled. + + + + + + Type + + Specifies the access control list type: black or white. + + string + + string + + + + + + Address + + Specifies a host or network IP address to add to the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + string + + string + + + + + + Comment + + Optionally add a comment about the entry. This parameter accepts a maximum of 127 characters. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-GlobalPacketFilterAddr -Type black -Address 10.35.47.16 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Remove-GlobalPacketFilterAddr + + Removes an address from the global black or white list. + + + + + + + + + + Removes a host or network IP address from the global black or white access control list. Note that black and white lists are only enabled when packet filtering is enabled. + + + + + + Type + + Specifies the access control list type: "black" or "white". + + string + + string + + + + + + Address + + Specifies a host or network IP address to remove from the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GlobalPacketFilterAddr -Address 10.154.11.197 -Type black + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Set-PacketFilterOption + + Sets a packet filtering option. + + + + + + + + + + Sets a packet filtering option. This can also be used to enable or disable packet filtering. Note that packet filtering cannot be disabled if the GEO feature is enabled. + + + + + + Option + + The following packet filtering options are supported: enable, drop or ifblock + The "enable" option indicates whether packet filtering is enabled or disabled on the LoadMaster. Note that packet filtering is enabled by default and cannot be disabled if the GEO feature is enabled. + If packet filtering is enabled, the "drop" option indicates whether the LoadMaster silently drops blocked packets or rejects them by responding with an ICMP reject packet. For security reasons it is usually best to drop any blocked packets silently. + If packet filtering is enabled, the "ifblock" option indicates whether the LoadMaster restricts network traffic by imposing restrictions upon routing between attached subnets. + + string + + string + + + + + + Value + + Specify whether to enable or disable the specified Option: + 0 – Disabled + 1 – Enabled + + boolean + + boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-PacketFilterOption -Option drop -Value 0 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Add-AdcHttpCacheException + + Allows you to add an extension to the 'Do Not Cache' extension list. + + + + + + + + + + Allows you to add an extension to the 'Do Not Cache' extension list. + + + + + + Extension + + The file extension that should not be cached. (e.g. ".jpg") The extension must start with a "." A collection of extensions can be provided through the pipeline. + + string[] + + string[] + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-AdcHttpCacheException -Extension .mp4 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Add-AdcHttpCompressionException + + Allows you to add an extension to the 'Do Not Compress' extension list. + + + + + + + + + + Allows you to add an extension to the 'Do Not Compress' extension list. + + + + + + Extension + + The file extension that should not be compressed. (e.g. ".jpg") The extension must start with a ".". A collection of extensions can be provided through the pipeline. This parameter is required. + + string[] + + string[] + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-AdcHttpCompressionException -Extension .mp4 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Add-AdcVsWafRule + + Assign a Web Application Firewall (WAF) rule to a Virtual Service. + + + + + + + + + + This command assigns the specified rule to the Virtual Service. + + + + + + VS + + The IP address of the Virtual Service to add the rule to. + + string + + string + + + + + + VSPort + + The port number of the Virtual Service to add the rule to. + + string + + string + + + + + + VSProtocol + + The protocol of the Virtual Service to add the rule to. + + string + + string + + + + + + Rule + + The <RuleName> must be preceded with the relevant letter or word and a forward slash. The letter/word used depends on the type of rule being added: +C or Custom +Z or ApplicationGeneric +A or ApplicationSpecific +G or Generic + This is case sensitive. The letter/word needs to be in in the correct case for the command to work. + Multiple rules can be assigned in the same command by separating them with a space (or %20). + + string + + string + + + + + + Enablerules + + Specific rules can be enabled per ruleset by including the enablerules parameter and specifying the rule IDs to be enabled. + + string + + string + + + + + + Disablerules + + Multiple rules can be disabled/enabled in the one command by specifying a comma-separated list of IDs for the disablerules/enablerules parameter. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-AdcVsWafRule -Rule G/ip_reputation -VS 10.35.47.16 -VSPort 80 -VSProtocol tcp + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. + + + + + + + + + + + + + + + + + Add-ClusterNode + + Adds a single node LoadMaster (which is available to be added) to the cluster. + + + + + + + + + + Adds a single node LoadMaster (which is available to be added) to the cluster. + + + + + + Address + + The IP address of the node LoadMaster. + + string + + string + + + + + + LoadBalancer + + The IP address of the KEMP LoadMaster that you are directing the command to. This can be set globally by using the Initialize-LmConnectionParameters command, but can be overridden on each individual command by using this parameter. + + string + + string + + + + + + LBPort + + The port of the load balancer. + + int32 + + int32 + + + + + + Credential + + Specifies a user account that has permission to administer the load balancer. You can either enter a username for the load balancer or provide a PSCredential object, such as an object that is returned by the Get-Credential cmdlet. When you type a username, you are prompted for a password. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Before running this command, the node LoadMaster needs to be be available to be added. +To make the node LoadMaster available, run the NMJoinCluster command. +If the Add-ClusterNode command is run when the node LoadMaster is not available, an error will be returned which says that the machine could not be contacted. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-ClusterNode -Address 10.154.11.20 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Add-LmIPConnectionLimit + + Allows you to add an IP address to be limited. + + + + + + + + + + Allows you to add an IP address to be limited. + + + + + + L7addr + + Add the IP address or network to be limited. + + string + + string + + + + + + L7limit + + Limit the number of connection attempts (per second) from a specific host/network. + + int32 + + int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-LmIPConnectionLimit -L7addr 10.10.10.10 -L7limit 25 + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Add-NetworkBondedInterface + + Add a standalone interface to a bonded interface. + + + + + + + + + + Add a standalone interface to a bonded interface. + + + + + + InterfaceID + + The Interface ID that should be bound to the Bonded Interface. To view the interface ID for each of the interfaces, run the Get-LogStatistics command. The interface ID is the first number displayed in each interface row. + + int16 + + int16 + + + + + + BondID + + The Bonded Interface ID that the network interface should be bound to. + + int16 + + int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-NetworkBondedInterface -BondID 0 -InterfaceID 0 + + + + + Example Output: +Mtu : 1500 +InterfaceType : Bonded +Id : 1 +DefaultInterface : no +BondMembers : 1,2 +GeoTrafficEnable : no +NBondMembers : 2 +Mode : 802.3ad +IPAddress : 172.22.56.102/24 + + + + + + + + + + + + + + + + + Add-NetworkInterfaceAdditionalAddress + + Add an additional address to an interface. + + + + + + + + + + Specify an additional address to be used on the interface. + + + + + + InterfaceID + + The ID number of the interface to add the additional address to. + + int16 + + int16 + + + + + + Address + + The additional address to be added. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-NetworkInterfaceAdditionalAddress -Address 10.154.11.22 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Id : 0 +IPAddress : 10.154.11.180/16 +Mtu : 1400 +AdditionalAddresses : @{IPaddress=10.154.11.22/16} +InterfaceType : Port +GeoTrafficEnable : yes +DefaultInterface : yes + + + + + + + + + + + + + + + + + Add-NetworkVLAN + + Allows you to add a Virtual LAN. + + + + + + + + + + Allows you to add a Virtual LAN. + + + + + + InterfaceID + + The ID of the interface to be added to the VLAN. + + int16 + + int16 + + + + + + VLanId + + + + int16 + + int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + VLAN + + The VLAN that the specified interface should be added to. + + int16 + + int16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-NetworkVLAN -InterfaceID 1 -VLAN 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Interface=} +Id : 2 +IPAddress : +VlanId : 1 +RealInterface : 1 +InterfaceType : Vlan +GeoTrafficEnable : no +DefaultInterface : no + + + + + + + + + + + + + + + + + Add-NetworkVxLAN + + Creates a new VXLAN interface. + + + + + + + + + + Creates a new VXLAN interface. + + + + + + InterfaceID + + The ID of the interface to add the VXLAN to. + + int16 + + int16 + + + + + + VNI + + + + int32 + + int32 + + + + + + Addr + + The multicast group or remote address. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + VXLAN + + The VXLAN Network Identifier. + + int32 + + int32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-NetworkVxLAN -Addr 10.154.11.34 -InterfaceID 1 -VNI 1 + + + + + Example Output: +Full response: @{ReturnCode=200; Response=Command successfully executed.; Data=} +Return Code..: 200 +Response.....: Command successfully executed. +Data field...: @{Interface=} +Id : 2 +IPAddress : +VNI : 1 +RemoteAddress : 10.154.11.34 +RealInterface : 1 +InterfaceType : VXlan +GeoTrafficEnable : no +DefaultInterface : no + + + + + + + + + + + + + + + + + Add-SdnController + + Used to add an SDN controller to the LoadMaster. + + + + + + + + + + Used to add an SDN controller to the LoadMaster. + + + + + + IPV4 + + The IPv4 address of the SDN controller. + + string + + string + + + + + + Port + + The port of the SDN controller. + + int32 + + int32 + + + + + + Clid + + The cluster ID for the new SDN controller. If a number is specified, the SDN controller will be added to the cluster with the relevant ID number. The cluster with the ID number specified must already exist. +If a number is not specified, the SDN controller will be added to a new cluster. + + int32 + + int32 + + + + + + Https + + The HTTP method to use. +0 - HTTP +1 - HTTPS + + boolean + + boolean + + + + + + User + + The username to be used to access the SDN controller RESTful API. + + string + + string + + + + + + Password + + The password to be used to access the SDN controller RESTful API. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-SdnController -IPV4 10.154.11.28 -Port 8443 -Https 1 -Password examplepassword -User exampleuser + + + + + Example Output: +port : 8443 +ipv4 : 10.154.11.28 +user : exampleuser +password : *************** +https : yes + + + + + + + + + + + + + + + + + Add-WafCustomRuleData + + Allows you to upload a custom rule data file to the LoadMaster. + + + + + + + + + + Allows you to upload a custom rule data file to the LoadMaster. + + + + + + Filename + + The filename of the custom rule data file followed by the file extension (.data). + + string + + string + + + + + + Path + + The path where the custom rule data file is stored followed by a back slash and the filename/extension. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-WafCustomRuleData -Filename modsecurity_40_generic_attacks.data -Path "C:\modsecurity-crs_2.2.5\modsecurity-crs_2.2.5\base_rules\modsecurity_40_generic_attacks.data" + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Add-WafCustomRuleSet + + Allows you to upload custom AFP rulefiles or a rule set to the LoadMaster. + + + + + + + + + + Allows you to upload custom AFP rulefiles or a rule set to the LoadMaster. + + + + + + Filename + + The desired rule name to be displayed on the WUI. This is only relevant for individual rule files. + + string + + string + + + + + + Path + + The path to the custom rule file(s) or rule set file followed by a forward slash and then the filename.extension. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-WafCustomRuleSet -Filename SpiderLabs-owasp-modsecurity-crs-2.2.9-5-gebe8790.tar.gz -Path "C:\SpiderLabs-owasp-modsecurity-crs-2.2.9-5-gebe8790.tar.gz" + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Get-VpnIkeDaemonStatus + + Allows you to view the status of the IKE daemon. + + + + + + + + + + Allows you to view the status of the IKE daemon. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-VpnIkeDaemonStatus + + + + + Example Output: +status +------ +Up + + + + + + + + + + + + + + + + + Set-VpnAddrs + + Allows you to set the VPN addresses at the same time. + + + + + + + + + + Allows you to set the VPN addresses at the same time. + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + LocalIp + + In non-HA mode, the default is the LoadMaster IP address, i.e. the IP address of the default gateway interface. +In HA-mode, the default is the shared IP address. + + string + + string + + + + + + LocalSubnets + + When the LocalIp is set, the LocalSubnet is automatically populated. Multiple local subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + string + + string + + + + + + RemoteIp + + Set the IP address for the remote side of the connection. + + string + + string + + + + + + RemoteSubnets + + Set the subnet for the remote side of the connection. Multiple remote subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-VpnAddrs -LocalIp 10.11.0.11 -LocalSubnets 10.11.0.12 -Name ExampleVPN -RemoteIp 10.11.0.13 -RemoteSubnets 10.11.0.14 + + + + + Example Output: +status : Down +localIP : 10.11.0.11 +localSubnets : 10.11.0.12/32 +remoteIP : 10.11.0.13 +remoteSubnets : 10.11.0.14/32 + + + + + + + + + + + + + + + + + Set-VpnLocalIp + + Allows you to set the local IP address of a VPN. + + + + + + + + + + Allows you to set the local IP address of a VPN. + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + LocalIp + + In non-HA mode, the default is the LoadMaster IP address, i.e. the IP address of the default gateway interface. +In HA-mode, the default is the shared IP address. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-VpnLocalIp -LocalIp 10.11.0.11 -Name ExampleVPN + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-VpnLocalSubnet + + Allows you to set the Local Subnet Address(es). + + + + + + + + + + Allows you to set the Local Subnet Address(es). + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + LocalSubnets + + When the LocalIp is set, the LocalSubnet is automatically populated. Multiple local subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-VpnLocalSubnet -LocalSubnets 10.11.0.11 -Name ExampleVPN + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-VpnPfsDisable + + Allows you to disable the Perfect Forward Secrecy option for a particular VPN connection. + + + + + + + + + + Allows you to disable the Perfect Forward Secrecy option for a particular VPN connection. + + + + + + Name + + The name of the VPN connection. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-VpnPfsDisable -Name ExampleConnection + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-VpnPfsEnable + + Allows you to enable the Perfect Forward Secrecy option for a particular VPN connection. + + + + + + + + + + Allows you to enable the Perfect Forward Secrecy option for a particular VPN connection. + + + + + + Name + + The name of the VPN connection. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters.ertificate is searched for in the default Cert:\CurrentUser\My location. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-VpnPfsEnable -Name ExampleConnection + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-VpnRemoteIp + + Allows you to set the Remote IP Address of the specified VPN. + + + + + + + + + + Allows you to set the Remote IP Address of the specified VPN. + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + RemoteIp + + Set the IP address for the remote side of the connection. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-VpnRemoteIp -Name ExampleVPN -RemoteIp 10.11.0.12 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-VpnRemoteSubnet + + Allows you to set the Remote Subnet Address(es) of the specified VPN. + + + + + + + + + + Allows you to set the Remote Subnet Address(es) of the specified VPN. + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + RemoteSubnets + + Set the subnet for the remote side of the connection. Multiple remote subnets can be specified using a comma-separated list. Up to 10 IP addresses can be specified. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-VpnRemoteSubnet -Name ExampleVPN -RemoteSubnets 10.11.0.13 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-VpnSecret + + Allows you to set the connection secret details of the specified VPN. + + + + + + + + + + Allows you to set the connection secret details of the specified VPN. + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + LocalId + + Identification for the local side of the connection. + + string + + string + + + + + + RemoteId + + Identification for the remote side of the connection. This can be the remoteip. + + string + + string + + + + + + Key + + The Pre Shared Key (PSK) string. This is the Shared key which is generated and managed on the Azure side. The key length should be at least 16 and at most 64 characters. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-VpnSecret -Key examplepresharedkey -LocalId 10.11.0.11 -Name ExampleVPN -RemoteId 10.11.0.12 + + + + + Example Output: +status localID remoteID key +------ ------- -------- --- +Down 10.11.0.11 10.11.0.12 examplepresharedkey + + + + + + + + + + + + + + + + + Start-VpnConnection + + Allows you to start the connection of specified VPN. + + + + + + + + + + Allows you to start the connection of specified VPN. + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Start-VpnConnection -Name ExampleVPN + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Start-VpnIkeDaemon + + Starts the IKE daemon. + + + + + + + + + + Starts the IKE daemon. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Start-VpnIkeDaemon + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Stop-VpnConnection + + Allows you to stop the connection of specified VPN. + + + + + + + + + + Allows you to stop the connection of specified VPN. + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Stop-VpnConnection -Name ExampleVPN + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Stop-VpnIkeDaemon + + Allows you to stop the Internet Key Exchange (IKE) daemon. + + + + + + + + + + Allows you to stop the Internet Key Exchange (IKE) daemon. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Stop-VpnIkeDaemon + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Add-GlobalPacketFilterAddr + + Adds an address to the global black or white list. + + + + + + + + + + Adds a host or network IP address to the global black or white Access Control List (ACL). Note that black and white lists are only enabled when packet filtering is enabled. + + + + + + Type + + Specifies the access control list type: "black" or "white". + + string + + string + + + + + + Address + + Specifies a host or network IP address to add to the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + string + + string + + + + + + Comment + + Optionally add a comment about the entry. This parameter accepts a maximum of 127 characters. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-GlobalPacketFilterAddr -Address 10.154.11.197 -Type black + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Add-GeoCountry + + Assigns a country or continent to an IP address in an FQDN which has the Selection Criteria set to Location Based. + + + + + + + + + + Assigns a country or continent to an IP address in an FQDN which has the Selection Criteria set to Location Based. + + + + + + FQDN + + The name of the FQDN. + + string + + string + + + + + + IP + + IP address of the map to be modified. + + string + + string + + + + + + CountryCode + + Two-letter country or continent code for the country/continent to be assigned. +The country code and continent codes used are the standard ISO codes. +To specify everywhere as the country, type ALL as the country code and set the IsContinent parameter to yes. + + string + + string + + + + + + IsContinent + + Some country codes and continent codes are the same, for example AF could mean Africa or Afghanistan. You must specify in this parameter if the code is for a country or continent. + yes – code is for a continent +no – code is for a country + + string + + string + + + + + + CustomLocation + + The name of an existing custom location. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-GeoCountry –CountryCode <TwoCharacterCountryCode> -FQDN <FQDNName> -IP <IPAddress> -IsContinent <yes/no> + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Add-GeoCustomLocation + + Creates a custom GEO location which can be selected when using the Location Based selection criteria. + + + + + + + + + + Creates a custom GEO location which can be selected when using the Location Based selection criteria. + + + + + + Location + + The name of the custom location. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-GeoCustomLocation –Location <LocationName> + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Add-GeoFQDNSiteAddress + + Allows you to add an IP address to an FQDN. + + + + + + + + + + Allows you to add an IP address to an FQDN. + + + + + + FQDN + + The name of the FQDN. + + string + + string + + + + + + IP + + IPv4 or IPv6 address to be added to the FQDN. + + string + + string + + + + + + Cluster + + If needed, enter the cluster name where the IP address is located. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-GeoFQDNSiteAddress –FQDN <FQDNName> -IP <IPAddress> -Cluster <ClusterName> + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Add-GeoIPWhitelist + + Add an IP address or network to the whitelist. + + + + + + + + + + Run this command to add an IP address or network to the user-defined whitelist. The whitelist entries override the blacklist. + + + + + + Addr + + The address or network to be added to the GEO Access Control whitelist. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-GeoIPWhitelist -Addr 10.154.11.34 + + + + + Example Output: +ReturnCode Data Response +---------- ---- -------- + 200 Command successfully executed + + + + + + + + + + + + + + + + + Add-VSPacketFilterAddr + + Adds an address to the black or white list for a Virtual Service. + + + + + + + + + + Adds a host or network IP address to the black or white access control list for a specific Virtual Service. Note that black and white lists are only enabled when packet filtering is enabled. + + + + + + VirtualService + + Specifies the Virtual Service IP address. + + string + + string + + + + + + Port + + Specifies the Virtual Service port number. + + int32 + + int32 + + + + + + Protocol + + Specifies the Virtual Service protocol: "tcp" or "udp". + + string + + string + + + + + + Type + + Specify the type of list: +- black: blocked addresses +- white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + string + + string + + + + + + Address + + Specifies a host or network IP address to add to the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + string + + string + + + + + + Comment + + Optionally specify a comment in relation to the list entry. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-VSPacketFilterAddr -Address 10.124.5.69 -Port 80 -Protocol tcp -Type white -VirtualService 10.154.11.181 -Comment "Example comment" + + + + + Example Output: +ReturnCode Response Data +---------- -------- ---- + 200 Command successfully executed + + + + + + + + + + + + + + + + + Get-GeoSingleFQDN + + Retrieve details for a specific FQDN. + + + + + + + + + + This command will display the settings for the specified FQDN. + + + + + + FQDN + + Specify the name of the FQDN to display the details for. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-GeoSingleFQDN -FQDN example.com + + + + + Example Output: +Mapping : 0 +publicRequestValue : 0 +SiteRecoveryMode : auto +failover : N +SelectionCriteria : lb +privateRequestValue : 0 +Status : Up +FullyQualifiedDomainName : example.com. +FailTime : 0 + + + + + + + + + + + + + + + + + Get-LmMiscParameter + + Displays the values of the miscellaneous GEO parameters. + + + + + + + + + + Displays the values of the miscellaneous GEO parameters. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-LmMiscParameter + + + + + Example Output: +SourceOfAuthority : example. +TTL : 100 +CheckInterval : 120 +Persist : 10 +RetryAttempts : 2 +ConnTimeout : 20 +NameSrv : example. +SOAEmail : example@example.com. + + + + + + + + + + + + + + + + + Get-SecMultipleWebUIAccess + + Retrieve the value of the Allow Multi Interface Access option. + + + + + + + + + + If this option is enabled, WUI access is allowed from multiple interfaces. Apart from the main administrative interface, each interface can then be enabled to allow WUI access. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SecMultipleWebUIAccess + + + + + Example Output: +multihomedwui +------------- +no + + + + + + + + + + + + + + + + + Get-SecWebUIAuth + + Allows you to view the values of WUI Authentication and Authorization options. + + + + + + + + + + Allows you to view the values of WUI Authentication and Authorization options. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SecWebUIAuth + + + + + Example Output: +sessionlocalauth : yes +radiussecret : ******** +radiusbackupsecret : ******** +radiusbackupport : 31 +ldapbackupserver : +radiusserver : 20.11.35.120 +radiusbackupserver : 20.11.35.121 +ldapserver : +radiusport : 30 +radiusrevalidateinterval : 60 +ldapsecurity : 0 +sessionauthmode : 0 +ldaprevalidateinterval : 60 + + + + + + + + + + + + + + + + + Get-SecWebUIConfiguration + + Allows you to view the values of WUI Configuration options. + + + + + + + + + + Allows you to view the values of WUI Configuration options. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and does not return all of the available parameters. Please refer to the Get-Help of the Get-Parameter command to view a full list of parameters that can be returned. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-SecWebUIConfiguration + + + + + Example Output: +sessioncontrol : no +sessionidletime : 70 +sessionmaxfailattempts : 0 +motd : Test Message +hoverhelp : yes +wuidisplaylines : 0 + + + + + + + + + + + + + + + + + Remove-GeoCountry + + Allows you to remove a country assignment from a mapped IP address. + + + + + + + + + + Allows you to remove a country assignment from a mapped IP address. + + + + + + FQDN + + The name of the FQDN. + + string + + string + + + + + + IP + + IP address of the map to be modified. + + string + + string + + + + + + CountryCode + + Two-letter country code for the country to be unassigned. +To specify everywhere as the country, type ALL as the country code and set the IsContinent parameter to yes. + + string + + string + + + + + + IsContinent + + Some country codes and continent codes are the same, for example AF could mean Africa or Afghanistan. You must specify in this parameter if the code is for a country or continent. +yes – code is for a continent +no – code is for a country + + string + + string + + + + + + CustomLocation + + The name of an existing custom location. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This command is only relevant when the Selection Criteria is set to Location Based. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-GeoCountry –CountryCode <TwoCharacterCountryCode> -FQDN <FQDNName> -IP <IPAddress> -iscontinent <yes/no> + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Remove-VSPacketFilterAddr + + Removes an address from the black or white list for a Virtual Service. + + + + + + + + + + Removes a host or network IP address from the black or white access control list for a specific Virtual Service. Note that black and white lists are only enabled when packet filtering is enabled. + + + + + + VirtualService + + Specifies the Virtual Service IP address. + + string + + string + + + + + + Port + + Specifies the Virtual Service port number. + + int32 + + int32 + + + + + + Protocol + + Specifies the Virtual Service protocol: "tcp" or "udp". + + string + + string + + + + + + Type + + Specify the type of list: + - black: blocked addresses + - white: allowed addresses +Note: This is case sensitive – the type value should be in lowercase. + + string + + string + + + + + + Address + + Specifies a host or network IP address to remove from the access control list. The address can be specified in CIDR format. If the CIDR is not specified, the system uses a default of /32. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-VSPacketFilterAddr -Address 10.154.11.198 -Port 80 -Protocol tcp -Type black -VirtualService 10.154.11.171 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-GeoDNSSEC + + Enable/disable DNSSEC. + + + + + + + + + + Enable/disable DNSSEC. + + + + + + Enable + + Specify whether to enable or disable DNSSEC: +0 - disable +1 - enable + + boolean + + boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoDNSSEC -Enable 1 + + + + + Example Output: +ReturnCode Response Data +---------- -------- ---- + 200 Command successfully executed + + + + + + + + + + + + + + + + + Set-LmMiscParameter + + Allows you to update the miscellaneous GEO parameters. + + + + + + + + + + Allows you to update the miscellaneous GEO parameters. + + + + + + SourceOfAuthority + + Specify the response set for Source Of Authority requests. + + string + + string + + + + + + NameSrv + + Specify the response set for Name Server requests. + + string + + string + + + + + + SOAEmail + + Specify the response email string sent for SOA requests. + + string + + string + + + + + + TTL + + Specify the Time To Live (TTL) of the responses returned by the LoadMaster. The default value for this is 10. +The range is 1-86400. + + string + + string + + + + + + Persist + + This parameter corresponds to the Stickiness field in the WUI. Specify how long a specific request will be returned to a host. + + string + + string + + + + + + CheckInterval + + Specify how often to check the devices. +Range: 9-3600 + Note: The interval value must be greater than the ConnTimeout value multiplied by the RetryAttempts value (Interval > Timeout * Retry + 1). + This is to ensure that the next health check does not start before the previous one completes. + If the timeout or retry values are increased to a value that breaks this rule, the interval value will be automatically increased. + + string + + string + + + + + + ConnTimeout + + Specify the timeout value for the check request. +Range: 4-60 + + string + + string + + + + + + RetryAttempts + + Specify the number of times the check will be retried before the device is marked as failed. + + string + + string + + + + + + Zone + + Specify the zone name. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmMiscParameter –CheckInterval 130 –ConnTimeout 30 –NameSrv example –Persist 20 –RetryAttempts 3 –SOAEmail example@example.com –SourceOfAuthority example –TTL 200 + + + + + Example Output: +SourceOfAuthority : example. +TTL : 200 +CheckInterval : 130 +Persist : 20 +RetryAttempts : 3 +ConnTimeout : 30 +NameSrv : example2. +SOAEmail : example2@example.com. + + + + + + + + + + + + + + + + + Set-SecMultipleWebUIAccess + + Allows you to enable access to the LoadMaster WUI from another interface address. + + + + + + + + + + Allows you to enable access to the LoadMaster WUI from another interface address. + + + + + + MultiHomedWui + + + + boolean + + boolean + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + multi + + The IP address of the interface that you want to enable WUI access on. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecMultipleWebUIAccess –multi eth0 + + + + + multihomedwui +------------- +yes + + + + + + + + + + + + + + + + + Set-SecWebUIAuth + + Allows you to set the values of WUI Authentication and Authorization options. + + + + + + + + + + Allows you to set the values of WUI Authentication and Authorization options. + + + + + + LDAPServer + + Specifies the LDAP server to use for authentication. + + string + + string + + + + + + LDAPBackupServer + + Specifies the backup LDAP server for authentication. + + string + + string + + + + + + LDAPSecurity + + Specifies the security mode for LDAP authentication. + + int16 + + int16 + + + + + + LDAPRevalidateInterval + + Specifies how often to revalidate the authentication to the LDAP server. + + int16 + + int16 + + + + + + RADIUSServer + + Specifies the RADIUS server to use for authentication. + + string + + string + + + + + + RADIUSBackupServer + + Specifies the backup RADIUS server to use for authentication. + + string + + string + + + + + + RADIUSPort + + Specifies the TCP port for communication to the RADIUS server. + + int64 + + int64 + + + + + + RADIUSBackupPort + + Specifies the TCP port for the backup RADIUS server. + + int64 + + int64 + + + + + + RADIUSSecret + + Specifies the password (secret) to the RADIUS server. + + string + + string + + + + + + RADIUSBackupSecret + + Specifies the password (secret) to the backup RADIUS server. + + string + + string + + + + + + SessionLocalAuth + + Enables or disables local authentication. + + boolean + + boolean + + + + + + SessionAuthMode + + Specifies the authentication mode for the LoadMaster. Refer to the following table for values: + RADIUS LDAP Local +Value Authent. Author. Authent. Authent. Author. +7 No No No No No +263 Yes No No Yes Yes +775 Yes Yes No Yes Yes +23 No No Yes Yes Yes +22 No No Yes No Yes +788 Yes Yes Yes No No +790 Yes Yes Yes No Yes +791 Yes Yes Yes Yes Yes +789 Yes Yes Yes Yes No +773 Yes Yes No Yes No +262 Yes No No No Yes +774 Yes Yes No No Yes +772 Yes Yes No No No +278 Yes No Yes No No +279 Yes No Yes Yes Yes + + int16 + + int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecWebUIAuth -RADIUSBackupPort 31 -RADIUSBackupSecret testbsecret -RADIUSBackupServer 20.11.35.121 -RADIUSPort 30 -RADIUSSecret testsecret -RADIUSServer 20.11.35.120 -SessionLocalAuth $True + + + + + Example Output: +sessionlocalauth : yes +radiussecret : ******** +radiusbackupsecret : ******** +radiusbackupport : 31 +ldapbackupserver : +radiusserver : 20.11.35.120 +radiusbackupserver : 20.11.35.121 +ldapserver : +radiusport : 30 +radiusrevalidateinterval : 60 +ldapsecurity : 0 +sessionauthmode : 0 +ldaprevalidateinterval : 60 + + + + + + + + + + + + + + + + + Set-SecWebUIConfiguration + + Allows you to set the values of WUI Configuration options. + + + + + + + + + + Allows you to set the values of WUI Configuration options. + + + + + + HoverHelp + + Enables or disables hover help in the web user interface. + + boolean + + boolean + + + + + + Motd + + Sets the Message Of The Day (MOTD) for the web user interface. Either plain text or a text file can be used. +The maximum number of characters is 5,000. +An error will be displayed if the MOTD is greater than 5,000 characters. + + string + + string + + + + + + SessionControl + + Enables or disables session control. + + boolean + + boolean + + + + + + SessionIdleTime + + Specifies the number of seconds that the WUI can be idle before logging the user out. This can be set from 60 to 86400 seconds. + + int32 + + int32 + + + + + + SessionMaxFailAttempts + + Number of failed attempts before locking the user account. This can be set from 1 to 999. + + int16 + + int16 + + + + + + StatisticsDisplaySize + + + + int16 + + int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + WUIDisplayLines + + Specifies the number of display lines in the web user interface. This can be set from 10 to 100. + + int16 + + int16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and cannot be used to set all of the available parameters. Please refer to the Get-Help of the Set-Parameter command to view a full list of parameters that can be configured. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-SecWebUIConfiguration -HoverHelp $True -Motd "Test Message" -SessionControl $True -SessionIdleTime 70 + + + + + Example Output: +sessioncontrol : yes +sessionidletime : 70 +sessionmaxfailattempts : 0 +motd : Test Message +hoverhelp : yes +wuidisplaylines : 0 + + + + + + + + + + + + + + + + + AcceptEULA + + Used to enter the magic cookie key returned by the ReadEula command and to set the type of license used, for example trial, perm or free. + + + + + + + + + + When this command is run successfully, an explanation of the Call Home feature and magic string will be displayed. + Value Name in WUI Description +Trial Trial (Unrestricted) Temporary license for users evaluating the KEMP LoadMaster +Perm Perpetual Purchased permanent LoadMaster +Free Free (Restricted) Free LoadMaster + + + + + + Type + + Use this parameter to specify the type of license that is being employed. Valid values for the type parameter are: +Perm - Perpetual +Free - Free (Restricted) +Trial – Trial (Unrestricted) + + string + + string + + + + + + Magic + + The key that is is generated by the ReadEULA command. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and has been replaced with the Confirm-LicenseEULA command. KEMP strongly recommends using the new command instead. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + AcceptEULA –magic 5e614-3bp21-g6p1g-trp1g –type perm + + + + + Example Output: +A second magic key and an explanation of the Call Home feature is displayed. + + + + + + + + + + + + + + + + + AcceptEULA2 + + Specify whether or not to use the Call Home feature. + + + + + + + + + + As part of KEMPs continuous drive to offer better value and services to our customers KEMP has introduced a Call Home feature. +The LoadMaster can utilize Call Home to get available license updates, information regarding any updated firmware for your product and provide system status information to KEMP. The system status information will include Throughput, Enabled Features, Virtual Services and Real Servers details but will not include any unique personal information or actual traffic from your network. +Your LoadMaster will initiate a connection to KEMP once during any 24 hour interval. +NOTE – Allowing Call Home is mandatory for Free LoadMaster versions. +For more details on this visit http://www.kemptechnologies.com/callhome + + + + + + Magic + + The IP Address for the KEMP LoadMaster to which the command is being directed. This key is generated by running the ReadEULA command. + + string + + string + + + + + + Accept + + This parameter is used to accept or reject the license agreement. The possible values are; yes and no. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and has been replaced with the Confirm-LicenseEULA2 command. KEMP strongly recommends using the new command instead. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + AcceptEULA2 -Accept no -Magic 1a30e1c2-9332-4331-b932-78bf5340520c + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Add-AdcWafRule + + Assigns WAF rules to the specified Virtual Service. + + + + + + + + + + Assigns WAF rules to the specified Virtual Service. + + + + + + VS + + The IP address of the relevant Virtual Service. + + string + + string + + + + + + Port + + Specifies the port on which this Virtual Service accepts connections. + + string + + string + + + + + + Prot + + Specifies the communication protocol of the Virtual Service. Valid options are TCP or UDP (not case sensitive). + + string + + string + + + + + + Rule + + Specify the name of the rule to be assigned. +The rule name must be preceded with a letter/word and a forward slash. The letter used depends on the type of rule being added: + - C or Custom + - Z or ApplicationGeneric + - A or ApplicationSpecific + - G or Generic + + string + + string + + + + + + Disablerules + + Specific rules can be disabled per ruleset by specifying the rule IDs to be disabled. Multiple rules can be disabled by using a comma-separated list. To retrieve the rule IDs, run the Get-WAFVSRules command. +To only update rules (and not rulesets), run the Add-AdcWafRule command with a blank Rule parameter. +To remove all disabled rules (i.e. enable all rules), run the Add-AdcWafRule command with blank rule and disablerules parameters. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The rule name must be preceded with the relevant letter/word and a forward slash. The letter/word used depends on the type of rule being assigned. + This is case sensitive. The letter/word needs to be in the correct case for the command to work. + • C or Custom + • Z or ApplicationGeneric + • A or ApplicationSpecific + • G or Generic + Multiple rules can be assigned in the same command by separating them with a space. + An invalid rule error will display if the name of the rule is not entered correctly, if the preceding letter is incorrect, or if the does not exist in the LoadMaster. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-AdcWafRule -Port 443 -Prot tcp -Rule G/creditcard_known -VS 10.154.11.91 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Add-GeoCluster + + Adds a new GEO cluster. + + + + + + + + + + Adds a new GEO cluster. + + + + + + IP + + The IP address of the GEO cluster. + + string + + string + + + + + + Name + + The name of the GEO cluster. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-GeoCluster –IP <IPAddress> -Name <NameofCluster> + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Add-HostsEntry + + Adds a host IP address and host FQDN. + + + + + + + + + + Add a host IP address and host FQDN + + + + + + HostIP + + Specify the IP address for the entry. + + string + + string + + + + + + HostFQDN + + Specify the host FQDN for the entry. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-HostsEntry -HostFQDN example2.com -HostIP 10.154.11.180 + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Add-LdapEndpoint + + Add a new LDAP endpoint. + + + + + + + + + + These LDAP endpoints may be used in three different areas: +• Health checks +• SSO domains +• WUI authentication + + + + + + Name + + The desired name for the new LDAP endpoint. This name cannot contain any spaces. + + string + + string + + + + + + Server + + Specify the address, or addresses, of the LDAP server to be used. You can also specify a port number, if desired. Separate multiple addresses with a space. + + string + + string + + + + + + LdapType + + Specify the transport protocol to use when communicating with the LDAP server. Valid values are: +0 – Unencrypted (default) +1 – StartTLS +2 – LDAPS + + int16 + + int16 + + + + + + VInterval + + Specify how often to revalidate the user the with the LDAP server. +Range: 10 – 86400 seconds +Default: 60 + + int16 + + int16 + + + + + + AdminUser + + Specify the username of an administrator user. The username that will be used to check the LDAP server. + + string + + string + + + + + + AdminPass + + Specify the password for the specified administrator user. The password that will be used to check the LDAP server. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-LdapEndpoint -Name ExampleLDAPEndpoint -AdminPass examplepassword -AdminUser ExampleAdminUsername -LdapType 0 -Server "10.154.11.23 10.154.22.45" -VInterval 80 + + + + + Example Output: +ReturnCode Response Data +---------- -------- ---- + 200 Command successfully executed ExampleLDAPEndpoint + + + + + + + + + + + + + + + + + Add-NetworkInterfaceAddress + + Allows you to add an address for an interface. + + + + + + + + + + Allows you to add an address for an interface. + + + + + + InterfaceID + + The Interface ID to add an IP Address to. To view the interface ID for each of the interfaces, run the Get-Statistics command. The interface ID is the first number displayed in each interface row. + + int16 + + int16 + + + + + + Address + + The IP Address and CIDR (e.g. 10.1.2.3/24) to be added to the specified Interface. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-NetworkInterfaceAddress -Address 10.11.0.210/24 -InterfaceID 0 + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + AlsiLicense + + Update the LoadMaster's license online. + + + + + + + + + + Cause the LoadMaster to query the KEMP licensing system for an updated license. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + KempId + + The KEMP ID is the email address which was used when registering for a KEMP ID. + + string + + string + + + + + + Password + + The password of the KEMP ID account. + + string + + string + + + + + + http_proxy + + Specify the HTTP(S) proxy server and port the LoadMaster will use to access the internet. + + string + + string + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This step must be performed before the LoadMaster password can be set. +This is a legacy command and has been replaced with the Request-LicenseOnline command. KEMP strongly recommends using the new command instead. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + AlsiLicense -KempId jbloggs@kemptechnologies.com -Password examplepassword -LoadBalancer 10.154.11.60 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Export-WafCustomRule + + Allows you to download an AFP custom rule file. + + + + + + + + + + Allows you to download an AFP custom rule file. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + Path + + The path where you want to download the custom rule file to, followed by a backslash and the new name of the file.extension. + + string + + string + + + + + + Filename + + The filename of the custom rule. + + string + + string + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Export-WafCustomRule -Filename modsecurity_crs_10_ignore_static -Path C:\rules\rule1.conf + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Get-Hosts + + Lists the existing hosts for local resolution. + + + + + + + + + + Lists the existing hosts for local resolution. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-Hosts + + + + + Example Output: +HostIPAddress HostFqdn +------------- -------- +10.154.11.178 example.com + + + + + + + + + + + + + + + + + Get-PreviousVersion + + Run this command to view the previous firmware version. + + + + + + + + + + Run this command to view the previous firmware version. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-PreviousVersion + + + + + Example Output: +ReturnCode Data Response +---------- ---- -------- + 200 @{PreviousVersion=7.2.37.0.13610.DEV.20160905-061... Command successfully executed + + + + + + + + + + + + + + + + + Get-SecSingleUser + + Retrieve the permissions for an individual user. + + + + + + + + + + The permissions for the specified user are displayed. + + + + + + User + + The username of the relevant user to display the permissions for. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command - please use the Get-SecUser command instead. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-KEMPSecSingleUser -User Example + + Name Perms +---- ----- +Example ,real,rules,cer... + + + + + + + + + + + + + + + + + + + + Get-VpnConnection + + Retrieves a list of all existing VPN connection details, or details for a specific VPN connection. + + + + + + + + + + To retrieve details for a specific VPN connection, use the Name parameter to specify the name of the relevant VPN connection. To retrieve details for all VPN connections, do not use the Name parameter. + + + + + + Name + + Specify the name of a specific VPN connection to display the details for. To display details for all VPN connections - do not use this parameter. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-VpnConnection + + + + + Example Output: +pfs : disabled +localIP : 10.154.11.80 +localID : 10.154.11.80 +key : +remoteIP : +name : Example +remoteID : +status : Down +remoteSubnets : +localSubnets : 10.154.11.80/32 + + + + + + + + + + + + + + + + + Get-VSTotals + + Get global summary statistics for all Virtual Services. + + + + + + + + + + Retrieves the total number of Virtual Services, SubVSs and Real Servers that are up, down and administratively disabled. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-VSTotals + + + + + Example Output: +Type : VSTotals +Total : 9 +Up : 4 +Down : 5 +Disabled : 0 + +Type : SubVSTotals +Total : 0 +Up : 0 +Down : 0 +Disabled : 0 + +Type : RSTotals +Total : 1 +Up : 0 +Down : 1 + + + + + + + + + + + + + + + + + Get-WafVSRules + + View a list of rules and rule IDs for an active ruleset. + + + + + + + + + + A list of rules and their IDs will be displayed for the specified ruleset. + + + + + + VS + + The IP address of the relevant Virtual Service. + + string + + string + + + + + + Port + + The port of the relevant Virtual Service. + + string + + string + + + + + + Prot + + The protocol of the relevant Virtual Service, i.e. tcp or udp. + + string + + string + + + + + + Rule + + The name of the ruleset to display the rules for. The rule name must be preceded with the relevant letter or word and a forward slash. The letter/word used depends on the type of rule: +• C or Custom +• Z or ApplicationGeneric +• A or ApplicationSpecific +• G or Generic +This is case sensitive. The letter/word needs to be in in the correct case for the command to work. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-WafVSRules -Port 443 -Prot tcp -Rule G/owasp_protocol_violations -VS 10.154.11.102 + + + + + Example Output: +ActiveRule1 : 960020:OWASP_CRS/PROTOCOL_VIOLATION/INVALID_HREQ:Pragma Header requires Cache-Control Header for HTTP/1.1 requests. +ActiveRule2 : 958291:OWASP_CRS/PROTOCOL_VIOLATION/INVALID_HREQ:Range: field exists and begins with 0. +ActiveRule3 : 958230:OWASP_CRS/PROTOCOL_VIOLATION/INVALID_HREQ:Range: Invalid Last Byte Value. +ActiveRule4 : 958231:OWASP_CRS/PROTOCOL_VIOLATION/INVALID_HREQ:Range: Too many fields +ActiveRule5 : 958295:OWASP_CRS/PROTOCOL_VIOLATION/INVALID_HREQ:Multiple/Conflicting Connection Header Data Found. +ActiveRule6 : 950107:OWASP_CRS/PROTOCOL_VIOLATION/EVASION:URL Encoding Abuse Attack Attempt +ActiveRule7 : 950109:OWASP_CRS/PROTOCOL_VIOLATION/EVASION:Multiple URL Encoding Detected +ActiveRule8 : 950108:OWASP_CRS/PROTOCOL_VIOLATION/EVASION:URL Encoding Abuse Attack Attempt +ActiveRule9 : 950801:OWASP_CRS/PROTOCOL_VIOLATION/EVASION:UTF8 Encoding Abuse Attack Attempt +ActiveRule10 : 950116:(null):Unicode Full/Half Width Abuse Attack Attempt +ActiveRule11 : 960901:OWASP_CRS/PROTOCOL_VIOLATION/EVASION:Invalid character in request +ActiveRule12 : 960018:OWASP_CRS/PROTOCOL_VIOLATION/EVASION:Invalid character in request + + + + + + + + + + + + + + + + + Initialize-Lm + + Allows you to globally set the LoadMaster IP address and login credentials for the PowerShell session. + + + + + + + + + + Allows you to globally set the LoadMaster IP address and login credentials for the PowerShell session. These details can be overridden on individual commands by using the LoadBalancer and Credential parameters. + + + + + + Address + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If the API interface is disabled on the LoadMaster, running this command will enable it. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Initialize-Lm –Address <LoadMasterIPAddress> -Credential bal + + + + + Example Output: +Unless overridden using a local -LoadBalancer parameter, all commands will now be directed to 10.11.0.60. +Unless overridden using a local -Credential parameter, all commands will now use bal. + + + + + + + + + + + + + + + + + IsAPIEnabled + + Check if the API interface is enabled on the LoadMaster. + + + + + + + + + + The results will display whether or not the API interface is enabled. The LoadMaster firmware version is also displayed. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and has been replaced by the Test-SecAPIAccess command. KEMP strongly recommends using the new command instead. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + IsAPIEnabled + + + + + Example Output: +API is Enabled + +version +------- +7.1.36.0.13179.DEV + + + + + + + + + + + + + + + + + New-AdcVirtualServerRule + + Allows you to add a preconfigured rule to a Virtual Service. + + + + + + + + + + Allows you to add a preconfigured rule to a Virtual Service or SubVS. + + + + + + RuleType + + Specifies if the rule is a pre-processing rule, a response rule, or a request rule. Valid options are "pre", "response", and "request". + + string + + string + + + + + + VirtualService + + Specifies the IP Address of the Virtual Service that this rule should be applied to. + + string + + string + + + + + + Port + + Specifies the port on which the Virtual Service accepts connections. + + int32 + + int32 + + + + + + Protocol + + Specifies the communication protocol. Valid options are TCP or UDP. + + string + + string + + + + + + VSIndex + + The VSIndex number of the relevant Virtual Service or SubVS. To retrieve the VSIndex, run the Get-VirtualService command. + + int32 + + int32 + + + + + + RuleName + + The name of the rule that should be set on this Virtual Service. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-AdcVirtualServerRule -Port 80 -Protocol tcp -RealServer 10.11.0.24 -RSPort 80 -RuleName TestRule1 -RuleType pre -VirtualService 10.11.0.200 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + New-SubVirtualService + + Create a new Sub-Virtual Service. + + + + + + + + + + Creates a new Sub-Virtual Service by identifying the parent Virtual Service by its IP address, port and protocol. + + + + + + VirtualService + + The IP address of the parent Virtual Service. + + string + + string + + + + + + Port + + The port of the parent Virtual Service. + + int32 + + int32 + + + + + + Protocol + + The protocol of the parent Virtual Service. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-SubVirtualService -Port 80 -Protocol tcp -VirtualService 172.20.0.209 + + + + + Example Output: +Status : Down +Index : 1 +VSAddress : 172.20.0.209 +VSPort : 80 +Enable : Y +SSLReverse : N +SSLReencrypt : N +Intercept : N +InterceptOpts : InterceptOpts +AlertThreshold : 0 +Transactionlimit : 0 +Transparent : Y +SubnetOriginating : N +ServerInit : 0 +StartTLSMode : 0 +Idletime : 0 +Cache : N +Compress : N +Verify : 0 +UseforSnat : N +ForceL7 : Y +MultiConnect : N +ClientCert : 0 +ErrorCode : 0 +CertFile : bd665e52e39df817a0e88a9bec7c3c95 +CheckUrl : /healthcheck.htm +CheckUse1.1 : N +MatchLen : 0 +CheckUseGet : 1 +SSLRewrite : 0 +VStype : http +FollowVSID : 0 +Protocol : tcp +Schedule : rr +CheckType : https +PersistTimeout : 360 +SSLAcceleration : Y +CheckPort : 443 +NRules : 0 +NRequestRules : 0 +NResponseRules : 0 +NPreProcessRules : 0 +EspEnabled : N +InputAuthMode : 0 +OutputAuthMode : 0 +MasterVS : 1 +MasterVSID : 0 +AddVia : 0 +QoS : 0 +TlsType : 1 +NeedHostName : N +OCSPVerify : N +RsMinimum : 0 +CipherSet : Default +NumberOfRSs : 1 +SubVS : SubVS + + + + + + + + + + + + + + + + + New-SubVirtualServiceByID + + Create a new Sub-Virtual Service. + + + + + + + + + + Creates a new Sub-Virtual Service by identifying the parent Virtual Service by its Virtual Service index. + + + + + + VSIndex + + The index number of the parent Virtual Service. + + int32 + + int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-SubVirtualServiceByID -VSIndex 4 + + + + + Example Output: +Status : Down +Index : 4 +VSAddress : 172.20.0.237 +VSPort : 80 +Enable : Y +SSLReverse : N +SSLReencrypt : N +Intercept : N +InterceptOpts : InterceptOpts +AlertThreshold : 0 +Transactionlimit : 0 +Transparent : Y +SubnetOriginating : N +ServerInit : 0 +StartTLSMode : 0 +Idletime : 0 +Cache : N +Compress : N +Verify : 0 +UseforSnat : N +ForceL7 : Y +MultiConnect : N +ClientCert : 0 +ErrorCode : 0 +CheckUse1.1 : N +MatchLen : 0 +CheckUseGet : 0 +SSLRewrite : 0 +VStype : http +FollowVSID : 0 +Protocol : tcp +Schedule : rr +CheckType : http +PersistTimeout : 0 +CheckPort : 0 +NRules : 0 +NRequestRules : 0 +NResponseRules : 0 +NPreProcessRules : 0 +EspEnabled : N +InputAuthMode : 0 +OutputAuthMode : 0 +MasterVS : 1 +MasterVSID : 0 +AddVia : 0 +QoS : 0 +TlsType : 0 +NeedHostName : N +OCSPVerify : N +RsMinimum : 0 +NumberOfRSs : 1 +SubVS : SubVS + + + + + + + + + + + + + + + + + New-VpnConnection + + Creates a new VPN connection + + + + + + + + + + Creates a new VPN connection + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + New-VpnConnection -Name ExampleVPN + + + + + Example Output: +status defaultLocalIP defaultLocalSubnet defaultLocalID +------ -------------- ------------------ -------------- +Down 10.11.0.10 10.11.0.10/32 10.11.0.10 + + + + + + + + + + + + + + + + + ReadEULA + + Displays the EULA and a magic cookie. + + + + + + + + + + The End User License Agreement (EULA) and magic cookie will be displayed. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and has been replaced with the Read-LicenseEULA command. KEMP strongly recommends using the new command instead. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ReadEULA –LoadBalancer 10.154.11.60 + + + + + Example Output: +The output displays a magic key, for example <Magic>98d10cca-b721-4378-b5be-e8c458ec7214</Magic> and the LoadMaster End User License Agreement (EULA). + + + + + + + + + + + + + + + + + Remove-AdcVirtualServiceByID + + Remove a Virtual Service by its Virtual Service ID. + + + + + + + + + + Removes a Virtual Service with the specified Virtual Service ID. This is the only way in which a SubVS can be removed using the PowerShell API, because SubVSs do not have IP addresses. To find out the Virtual Service ID, run the Get-VirtualService command without any parameters. + + + + + + VSIndex + + The index number of the Virtual Service. + + int32 + + int32 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + switchparameter + + switchparameter + + + + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + switchparameter + + switchparameter + + + + + + Confirm + + Confirms that the action should be carried out. + + switchparameter + + switchparameter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcVirtualServiceByID -VSIndex 2 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Remove-AdcWafRule + + Un-assigns an AFP rule from the specified Virtual Service. + + + + + + + + + + Un-assigns an AFP rule from the specified Virtual Service. + + + + + + VS + + The IP address of the relevant Virtual Service. + + string + + string + + + + + + Port + + Specifies the port on which this Virtual Service accepts connections. + + string + + string + + + + + + Prot + + Specifies the communication protocol of the Virtual Service. Valid options are TCP or UDP. + + string + + string + + + + + + Rule + + Specify the name of the rule to be unassigned. +The rule name must be preceded with a letter/word and a forward slash. The letter used depends on the type of rule being added: + - C or Custom + - Z or ApplicationGeneric + - A or ApplicationSpecific + - G or Generic + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The rule name must be preceded with the relevant letter/word and a forward slash. The letter/word used depends on the type of rule being added: + • C or Custom + • Z or ApplicationGeneric + • A or ApplicationSpecific + • G or Generic + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-AdcWafRule -VS 10.11.0.31 -Port 80 -Prot tcp -Rule C/modsecurity_crs_11_brute_force + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Remove-NetworkInterfaceAddress + + Allows you to remove an address from an interface. + + + + + + + + + + Allows you to remove an address from an interface. + + + + + + InterfaceID + + The interface ID that should be removed from the LoadMaster. To view the interface ID for each of the interfaces, run the Get-Statistics command. The interface ID is the first number displayed in each interface row. + + int16 + + int16 + + + + + + Address + + The IP address of the interface. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + Force + + Enable this parameter to force the command to execute without a confirmation. + + switchparameter + + switchparameter + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + WhatIf + + Enable this parameter to see what the command will do without actually executing the command. + + switchparameter + + switchparameter + + + + + + Confirm + + Confirms that the action should be carried out. + + switchparameter + + switchparameter + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-NetworkInterfaceAddress -InterfaceID 0 -Address 172.21.56.121/24 + + + + + Example Output: +Mtu : 1500 +InterfaceType : Port +Id : 0 +DefaultInterface : yes +GeoTrafficEnable : yes +IPAddress : 172.21.56.120/24 + + + + + + + + + + + + + + + + + Remove-VpnConnection + + Deletes an existing VPN connection. + + + + + + + + + + Deletes an existing VPN connection. + + + + + + Name + + The name of the VPN. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Remove-VpnConnection -Name ExampleVpn + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + SetInitialPasswd + + Set the password of the default bal LoadMaster user, during initial configuration. + + + + + + + + + + During initial configuration of the LoadMaster, this command can be used to set the password of the default bal user. + + + + + + Passwd + + This is the password for the default administrator user (bal). The password should contain at least 8 alphanumeric characters. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a legacy command and has been replaced with Set-LicenseInitialPassword. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + SetInitialPassword –Passwd examplepassword + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Update-License + + Update the LoadMaster's license using the offline method. + + + + + + + + + + A BLOB is required to license a LoadMaster using the offline method. BLOBs are emailed to customers when requested. The BLOB is the body of text from the word begin to the word end in the email. Copy and paste this text into a text file. This file must be uploaded when running this command in order to successfully license the LoadMaster. + + + + + + Path + + The local path to the license file to upload. Use the Get-AccessKey command to get the key to use to generate a license from KEMP Technologies. This parameter is required. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-License -Path c:\license\license.txt + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Update-WafIDSRules + + Allows you to update the Intrusion Detection ruleset. + + + + + + + + + + Allows you to update the Intrusion Detection ruleset. + + + + + + Path + + The local path to the IDS rules file. This file should be a .tar.gz file. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Update-WafIDSRules -Path c:\IDSRules\community.rules.tar + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-LmBackupSecureIndentity + + Upload the SSH private key generated on the remote scp server. + + + + + + + + + + If using scp (1) as the backupsecure method, the remote identity value must be provided. This is the SSH private key generated using ssh-keygen on the remote scp server. + + + + + + Path + + The file path to the private key file. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + CertificateStoreLocation + + This parameter is optional. If you do not use it, the cmdlet searches for the certificate in the default Cert:\CurrentUser\My location. If the CertificateStoreLocation parameter is set, the API searches for the certificate in the specified location, for example, Cert:\<CurrentUser>\TrustedPeople. +Note: The CertificateStoreLocation can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the CertificateStoreLocation field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + SubjectCN + + This parameter is mandatory if you want to use certificate-based authentication. Specify the certificate Common Name (CN), which is the username of the LoadMaster user that the certificate was generated for. If you do not specify the CertificateStoreLocation, the certificate is searched for in the default Cert:\CurrentUser\My location. +Note: The SubjectCN can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the SubjectCN field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LmBackupSecureIndentity -Path C:\Users\ExampleUser\Desktop\Work\PowerShell\pdata + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + SetWafAutoInstall + + Allows you to enable/disable the automatic installation of commercial AFP rules. + + + + + + + + + + Allows you to enable/disable the automatic installation of commercial AFP rules. + + + + + + Enable + + Enable or disable the commercial AFP automatic rule install. +0 - Disable +1 - Enable + + string + + string + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Does the same thing as the EnableWafAutoInstall command. This is a legacy command and has been replaced with the Set-WafRulesAutoUpdateConfiguration command. + + + + + -------------------------- Example -------------------------- + + PS C:\> + + SetWafAutoInstall –Enable 1 + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Switch-ClusterHAUnit + + Allows you to set the values of High Availability (HA) options. + + + + + + + + + + Allows you to set the values of High Availability (HA) options. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Switch-ClusterHAUnit -LoadBalancer 10.11.0.35 + + + + + Example Command: +(This is a legacy command and should no longer be used.) + + + + + + + + + + + + + + + + + Restore-LmLoadBalancer + + Restore the LoadMaster using a backup file already saved. + + + + + + + + + + Restore the LoadMaster using a backup file already saved. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + Path + + The local path to the backup file. + + string + + string + + + + + + Type + + The type of information to restore. + + string + + string + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Restore-LoadBalancer -Path C:\backups\LMBackups_2013_11_04.17_43 -Type Base + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Set-LicenseInitialPasswd + + Used to set the password of the default bal LoadMaster user during initial configuration. + + + + + + + + + + Used to set the password of the default bal LoadMaster user during initial configuration. + + + + + + Passwd + + This is the password for the default administrator user (bal). The password should contain at least 8 alphanumeric characters. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-LicenseInitialPasswd –Passwd examplepassword + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + Add-NetworkBondedInterfae + + Adds a standalone interface to a bonded interface. + + + + + + + + + + Adds a standalone interface to a bonded interface. + + + + + + InterfaceID + + The Interface ID that should be bound to the Bonded Interface. To view the interface ID for each of the interfaces, run the Get-Statistics command. The interface ID is the first number displayed in each interface row. + + int16 + + int16 + + + + + + BondID + + The Bonded Interface ID that the network interface should be bound to. + + int16 + + int16 + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + pscredential + + pscredential + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-NetworkBondedInterfae -BondID 0 -InterfaceID 0 + + + + + Example Output: +Mtu : 1500 +InterfaceType : Bonded +Id : 1 +DefaultInterface : no +BondMembers : 1,2 +GeoTrafficEnable : no +NBondMembers : 2 +Mode : 802.3ad +IPAddress : 172.22.56.102/24 + + + + + + + + + + + + + + + + + Add-GeoIPRange + + Allows you to add an IP address to the IP range selection criteria list. + + + + + + + + + + Allows you to add an IP address to the IP range selection criteria list. + + + + + + IP + + IP address of the IP range. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Add-GeoIPRange <IPAddress> + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Backup-TlsCertificateStore + + Allows you create a backup of all the certificates and intermediate certificates on the LoadMaster. + + + + + + + + + + Allows you create a backup of all the certificates and intermediate certificates on the LoadMaster. The password will be required to restore the certificate file to the load balancer. + + + + + + Password + + A password to encrypt the certificate backup file. This password will be needed to restore the certificate file to the LoadMaster. + + string + + string + + + + + + Path + + The local path where the certificate backup file should be saved. If no file is specified, the backup file will be saved as C:\Temp\CertificateBackup_yyyy-MM-dd_HH-mm-ss, assuming that C:\ is the System Root drive specified in the Environment variables. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Backup-TlsCertificateStore -Password password -Path C:\temp + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Test-SecMultipleWebUIAccess + + Informs you if the WUI can be accessed via multiple interfaces or not. + + + + + + + + + + Informs you if the WUI can be accessed via multiple interfaces or not. + + + + + + loadbalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Test-SecMultipleWebUIAccess + + + + + Example Output: +multihomedwui +------------- +yes + + + + + + + + + + + + + + + + + ListClusters + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoCluster + + + + + + + + + + WARNING: This function is deprecated. Use the following command instead: +Get-GeoCluster + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ListClusters + + + + + Example Output: +Enable : Y +LocationLatitude : 0.01666667 +Type : default +LocationLongitude : 0.01666667 +ClusterVSAddress : +Checker : none +Name : Example +Index : 1 +Status : Up +CheckerPort : 80 +IPAddress : 10.154.11.55 + + + + + + + + + + + + + + + + + Get-Templates + + Returns a list of any templates that exist on the LoadMaster. + + + + + + + + + + Returns a list of any templates that exist on the LoadMaster. + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Get-Templates + + + + + Example Output: +comment certified name +------- --------- ---- +Handles Storage Connector to Atmos (Version 1.0) yes AtmosREST +Handles Syncplicity Https (Version 1.0) yes Syncplicity + + + + + + + + + + + + + + + + + Set-GeoLocation + + Allows you to install an updated GEO database patch file. + + + + + + + + + + Allows you to install an updated GEO database patch file. + + + + + + Path + + The path to the patch file in the format path\filename.extension + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-GeoLocation –Path <Path\Filename.extension> + + + + + Example Output: +Ok + + + + + + + + + + + + + + + + + Set-ClusterAwsHAOption + + Allows you to set the other AWS HA options: health check port and partner address. + + + + + + + + + + Allows you to set the other AWS HA options: health check port and partner address. + + + + + + Partner + + Address of the HA partner. + + string + + string + + + + + + Hcp + + The port over which the health check is run. This needs to be the same on both the master and the slave units in order for HA to function correctly. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + Set-ClusterAwsHAOption –Hcp 443 –Partner <PartnerIPAddress> + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + ShowFQDN + + Displays the details of a specific FQDN. + + + + + + + + + + Displays the details of a specific FQDN. + + + + + + FQDN + + The name of the FQDN. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + ShowFQDN –FQDN <FQDNName> + + + + + Example Output: +Mapping : 1 2 +SiteRecoveryMode : manual +Map : Down,1,10.11.0.12,Test,AS,EU,clust,80,10.11.0.14,1000,10.11.0.11,80,N,0.00000000,0.00000000,Up,2,10.11.0.23,Test,icmp,0,1000,Y,0.0 + 0000000,0.00000000 +failover : Y +SelectionCriteria : rr +Status : Up +FullyQualifiedDomainName : example.com. +FailTime : 1920 + + + + + + + + + + + + + + + + + UserDeleteCert + + Delete a local user's certificate. + + + + + + + + + + Delete a local user's certificate file on the LoadMaster. + + + + + + User + + Name of local user. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + UserDeleteCert -User ExampleUser + + + + + Example Output: +ok + + + + + + + + + + + + + + + + + UserDownloadCert + + Download a local user's certificate. + + + + + + + + + + Download a local user's certificate file from the LoadMaster. + + + + + + User + + Name of local user. + + string + + string + + + + + + Path + + Path to store certificate file. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + UserDownloadCert -Path C:\ExampleCert\ExampleCertName.pem -User ExampleUser + + + + + Example Output: +There is no output displayed but the file should be downloaded to the specified location. + + + + + + + + + + + + + + + + + UserGenerateCert + + Generate a certificate for a local user. + + + + + + + + + + Generate (or regenerate if one already exists) a certificate for a local user on the LoadMaster. + + + + + + User + + Name of local user. + + string + + string + + + + + + Passphrase + + Optional passphrase for certificate. + + string + + string + + + + + + LoadBalancer + + Specify the address of the LoadMaster to run the command on. +Note: The LoadMaster address can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LoadBalancer field when running a command, unless you want to overwrite it. + + string + + string + + + + + + LBPort + + Specify the port to communicate with the LoadMaster on. +Note: The LoadMaster port can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the LBPort field when running a command, unless you want to overwrite it. + + int32 + + int32 + + + + + + Credential + + The username to connect to the LoadMaster with. +Note: The username can be specified for the session by using the Initialize-LmConnectionParameters command. If this is done, there is no need to fill out the Credential field when running a command, unless you want to overwrite it. +When running PowerShell commands, either authenticate using the username (Credential) and password, or use certificate-based authentication by using the CertificateStoreLocation and SubjectCN parameters. + + object + + object + + + + + + InformationAction + + + + actionpreference + + actionpreference + + + + + + InformationVariable + + + + string + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -------------------------- Example -------------------------- + + PS C:\> + + UserGenerateCert -User ExampleUser -Passphrase ExamplePassphrase + + + + + Example Output: +ok + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Kemp/modules/Kemp.LoadBalancer.Powershell/Kemp.LoadBalancer.Powershell.psd1 b/Kemp/modules/Kemp.LoadBalancer.Powershell/Kemp.LoadBalancer.Powershell.psd1 new file mode 100644 index 0000000..8adaa1a --- /dev/null +++ b/Kemp/modules/Kemp.LoadBalancer.Powershell/Kemp.LoadBalancer.Powershell.psd1 @@ -0,0 +1,120 @@ +# +# Module manifest for module 'Kemp.LoadBalancer.Powershell' +# +# Generated by: KEMP +# +# Generated on: Nov 30 2017 +# + +@{ + +# Script module or binary module file associated with this manifest. +RootModule = 'Kemp.LoadBalancer.Powershell.psm1' + +# Version number of this module. +ModuleVersion = '7.2.40.0' + +# ID used to uniquely identify this module +GUID = 'fb76aa2c-d5f7-11e7-b122-000af7388c80' + +# Author of this module +Author = 'Fabrizio Carpin' + +# Company or vendor of this module +CompanyName = 'KEMP Technologies' + +# Copyright statement for this module +Copyright = '(c) 2017. All rights reserved.' + +# Description of the functionality provided by this module +Description = 'KEMP Load Balancer Powershell Module' + +# Minimum version of the Windows PowerShell engine required by this module +PowerShellVersion = '2.0' + +# Name of the Windows PowerShell host required by this module +# PowerShellHostName = '' + +# Minimum version of the Windows PowerShell host required by this module +PowerShellHostVersion = '2.0' + +# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. +DotNetFrameworkVersion = '2.0' + +# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. +CLRVersion = '2.0.50727.0' + +# Processor architecture (None, X86, Amd64) required by this module +ProcessorArchitecture = 'None' + +# Modules that must be imported into the global environment prior to importing this module +# RequiredModules = @() + +# Assemblies that must be loaded prior to importing this module +RequiredAssemblies = @() + +# Script files (.ps1) that are run in the caller's environment prior to importing this module. +ScriptsToProcess = @() + +# Type files (.ps1xml) to be loaded when importing this module +TypesToProcess = @() + +# Format files (.ps1xml) to be loaded when importing this module +FormatsToProcess = @() + +# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess +NestedModules = @() + +# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. +FunctionsToExport = '*' + +# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. +CmdletsToExport = '*' + +# Variables to export from this module +VariablesToExport = '*' + +# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. +AliasesToExport = '*' + +# DSC resources to export from this module +# DscResourcesToExport = @() + +# List of all modules packaged with this module +ModuleList = @() + +# List of all files packaged with this module +FileList = @() + +# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. +PrivateData = @{ + + PSData = @{ + + # Tags applied to this module. These help with module discovery in online galleries. + # Tags = @() + + # A URL to the license for this module. + # LicenseUri = '' + + # A URL to the main website for this project. + # ProjectUri = '' + + # A URL to an icon representing this module. + # IconUri = '' + + # ReleaseNotes of this module + ReleaseNotes = 'BUILD: 1159' + + } # End of PSData hashtable + +} # End of PrivateData hashtable + +# HelpInfo URI of this module +# HelpInfoURI = '' + +# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. +# DefaultCommandPrefix = '' + +} + diff --git a/Kemp/modules/Kemp.LoadBalancer.Powershell/Kemp.LoadBalancer.Powershell.psm1 b/Kemp/modules/Kemp.LoadBalancer.Powershell/Kemp.LoadBalancer.Powershell.psm1 new file mode 100644 index 0000000..81c98be --- /dev/null +++ b/Kemp/modules/Kemp.LoadBalancer.Powershell/Kemp.LoadBalancer.Powershell.psm1 @@ -0,0 +1,21279 @@ +# +# $Id: Kemp.LoadBalancer.Powershell.psm1 15844 2017-11-30 17:55:50Z fcarpin $ +# + +$ScriptDir = Split-Path -parent $MyInvocation.MyCommand.Path +Import-Module $ScriptDir\deprecated.psm1 + +#################### +# MODULE VARIABLES # +#################### +[System.Reflection.Assembly]::LoadWithPartialName("system.web") | Out-Null + +New-Variable -Name LoadBalancerAddress -Scope Script -Force +New-Variable -Name LBAccessPort -Scope Script -Force -Value 443 + +New-Variable -Name Cred -Scope Script -Force + +New-Variable -Name SubjectCN -Scope Script -Force +New-Variable -Name CertificateStoreLocation -Scope Script -Force -Value $null + +$IgnoredParameters = @("Verbose", "Debug", "WarningAction", "WarningVariable", "ErrorAction", + "ErrorVariable", "OutVariable", "OutBuffer", "WhatIf", "Confirm", "RuleType", + "LoadBalancer", "LBPort", "Credential", "SubjectCN", "CertificateStoreLocation") + +$ParamReplacement = @{VSIndex = "vs"; VirtualService = "vs"; Protocol = "prot"; VSProtocol = "prot"; VSPort = "port"; + RSIndex = "rs"; RealServer = "rs"; RealServerPort = "rsport"; + RuleName = "rule"; + InterfaceID = "iface"; IPAddress = "addr"; + NameServer = "nameserver"; NamServer = "namserver"; + HAMode = "hamode"; Partner = 'partner'; Hcp = "hcp"; + Location = "location"; GeoTraffic = "geotraffic"; Mapaddress = "mapaddress"; Mapport = "mapport"; Cluster = "clust"; + KempId = "kempid"; Password = "password"; OrderId = "orderid"; + ConnectTimeout = "timeout"; + WuiNetworkInterfaceId = "wuiiface"; WuiPort = "wuiport"; WuiDefaultGateway = "wuidefaultgateway"; + CurrentPassword = "currpassword"; NewPassword = "password"; + Permissions = "perms"; + SyslogPort = "syslogport"; + StatisticsDisplaySize = "wuidisplaylines"; + ClusterIp = "IP"; ClusterName = "Name"; + SiteAddress = "IP"; + HostIP = "hostip"; HostFQDN = "hostfqdn"; + GeoInterfaceId = "geo_ssh_iface"; + ScalingOver64KConnections = "localbind"; AddPortToActiveCookie = "addcookieport"; RFCConform = "rfcconform"; + CloseOnError = "closeonerror"; AddViaHeaderInCacheResponses = "addvia"; RSAreLocal = "rsarelocal"; + DropOnRSFail = "droponfail"; DropAtDrainEnd = "dropatdrainend"; L7AuthTimeoutSecs = "authtimeout"; + L7ClientTokenTimeoutSecs = "clienttokentimeout"; L7ConnectionDrainTimeoutSecs = "finalpersist"; + AllowEmptyPosts = "allowemptyposts"; AllowEmptyHttpHeaders = "AllowEmptyHttpHeaders"; + ForceCompleteRSMatch = "ForceFullRSMatch"; SlowStart = "slowstart"; ShareSubVSPersistance = "ShareSubVSPersist"; + SSHPreAuthBanner = "SSHPreAuth"; MultiHomedWui = "multihomedwui"; AllowUpdateChecks = "tethering"; } + +$SystemRuleType = @{MatchContentRule=0; AddHeaderRule=1; DeleteHeaderRule=2; ReplaceHeaderRule=3; ModifyUrlRule=4; ReplaceBodyRule=5} + +$loginMethodHT = @{"PasswordOnly" = 0; "PasswordOrClientCertificate" = 1; "ClientCertificateRequired" = 2; "ClientCertificateRequiredOCSP" = 3;} + +$preferredServerHT = @{"No Preferred Host" = 0; "Prefer First HA" = 1; "Prefer Second HA" = 2;} + +$global:PSDefaultParameterValues = @{"Confirm-LicenseEULA:Type"="trial"} + +$LmTestServerConnectionFlag = $false +# ---------------------------------------------------------------------------------------------------------------- + +# region - UTILITY FUNCTIONS +# Do not export these functions. Internal use only + +# -------------------------------------------------------------------------------------------- +# LM answer helper function +# -------------------------------------------------------------------------------------------- +# Internal use only +Function GetSuccessString($lmRawAnswer) +{ + $str = $null + if ($lmRawAnswer) { + $sIndex = $lmRawAnswer.IndexOf("") + if ($sIndex -ne -1) { + $sIndex += 9 + $eIndex = $lmRawAnswer.IndexOf("") + $str = $lmRawAnswer.Substring($sIndex, $eIndex - $sIndex) + return $str + } + } + return $str +} + +# Internal use only +Function setKempAPIReturnObject($retCode, $apiResponse, $data) +{ + $tempApiRetObj = [ordered]@{} + $tempApiRetObj.PSTypeName = "KempAPI" + $tempApiRetObj.ReturnCode = $retCode + $tempApiRetObj.Response = $apiResponse + $tempApiRetObj.Data = $data + + $kempApiRetObject = New-Object -TypeName PSObject -Prop $tempApiRetObj + + $kempApiRetObject +} + +# -------------------------------------------------------------------------------------------- +# LM XML answer helper functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function AddXmlNodeToDictionary($dictionary, $keyname, $actualValue, $newValue) +{ + if ($actualValue -is [array]) { + $actualValue += $newValue + $dictionary[$keyName] = $actualValue + } + else { + $tmpA = @() + $tmpA += $actualValue + $tmpA += $newValue + $dictionary[$keyName] = $tmpA + } +} + +# Internal use only +Function GetPSObjectFromXml($NodeInfoType, $xmlNode, $notrim) +{ + if ( ([String]::IsNullOrEmpty($xmlNode)) ) { + return + } + + $NodeInfo = [ordered]@{} + $NodeInfo.PSTypeName = "$NodeInfoType" + + foreach ($item in $xmlNode.GetEnumerator()) { + $check = $item.FirstChild.HasChildNodes + if ($check -eq $false) { + if ($NodeInfo.Contains($item.Name) -eq $true) { + $kval = $NodeInfo.Get_Item($item.Name) + if (([String]::IsNullOrEmpty($notrim))) { + $nodeValue = $item.InnerXml -replace "`n","" -replace "`r","" + } + else { + # CERTS case + $nodeValue = $item.InnerXml + } + AddXmlNodeToDictionary $NodeInfo $item.Name $kval $nodeValue + } + else { + if (([String]::IsNullOrEmpty($notrim))) { + $nodeValue = $item.InnerXml -replace "`n","" -replace "`r","" + } + else { + # CERTS case + $nodeValue = $item.InnerXml + } + $NodeInfo.Add($item.Name, $nodeValue) + } + } + else { + $LocalNodeInfoType = $($item.LocalName) + $childNodeData = GetPSObjectFromXml $LocalNodeInfoType $item + if ($NodeInfo.Contains($item.LocalName) -eq $true) { + $kval = $NodeInfo.Get_Item($item.LocalName) + AddXmlNodeToDictionary $NodeInfo $item.LocalName $kval $childNodeData + } + else { + $NodeInfo.Add($item.LocalName, $childNodeData) + } + } + } + New-Object -TypeName PSObject -Prop $NodeInfo +} + +# Internal use only +Function GetPSSdnDataFromXml($NodeInfoType, $xmlNode, $notrim) +{ + if ( ([String]::IsNullOrEmpty($xmlNode)) ) { + return + } + + $NodeInfo = [ordered]@{} + $NodeInfo.PSTypeName = "$NodeInfoType" + + foreach ($item in $xmlNode.GetEnumerator()) { + $check = $item.HasChildNodes + if ($check -eq $false) { + if ($item.HasAttributes) { + $attrs = $item | gm -MemberType Property | Select Name + $NodeInfo2 = [ordered]@{} + $NodeInfo2.PSTypeName = $item.LocalName + foreach($a in $attrs) { + $p = $a.Name + if ($item.LocalName -eq "cluster" -and $a.Name -eq "id") { + $NodeInfo2.Add("clusterid", $item.$p) + } + else { + $NodeInfo2.Add($a.Name, $item.$p) + } + } + $tempObj = New-Object -TypeName PSObject -Prop $NodeInfo2 + if ($NodeInfo.Contains($item.LocalName) -eq $true) { + $kval = $NodeInfo.Get_Item($item.LocalName) + AddXmlNodeToDictionary $NodeInfo $item.LocalName $kval $tempObj + } + else { + $NodeInfo.Add($item.LocalName, $tempObj) + } + } + } + else { + if ($item.HasAttributes) { + $attrs = $item | gm -MemberType Property | Select Name + $NodeInfo3 = [ordered]@{} + $NodeInfo3.PSTypeName = $item.LocalName + foreach($a in $attrs) { + $p = $a.Name + if ($a.Name -eq "id") { + if ($item.LocalName -eq "controller") { + $NodeInfo3.Add("controllerid", $item.$p) + } + else { + $NodeInfo3.Add("clusterid", $item.$p) + } + } + else { + if ($a.Name -ne "controller") { + $NodeInfo3.Add($a.Name, $item.$p) + } + } + } + if ($item.LocalName -eq "controller") { + return $NodeInfo3 + } + $childNodeData = GetPSSdnDataFromXml "controller" $item + if ($childNodeData) { + foreach($elem in $childNodeData.GetEnumerator()) { + if ($elem.Name -ne "PSTypeName") { + $NodeInfo3.Add($elem.Name, $elem.Value) + } + } + } + $tempObj = New-Object -TypeName PSObject -Prop $NodeInfo3 + if ($NodeInfo.Contains($item.LocalName) -eq $true) { + $kval = $NodeInfo.Get_Item($item.LocalName) + AddXmlNodeToDictionary $NodeInfo $item.LocalName $kval $tempObj + } + else { + $NodeInfo.Add($item.LocalName, $tempObj) + } + } + } + } + New-Object -TypeName PSObject -Prop $NodeInfo +} + +# -------------------------------------------------------------------------------------------- +# LM IP/FQDN checker functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function checkLmIpFqdn($LmIP) +{ + if ( ([String]::IsNullOrEmpty($LmIP)) ) { + $errStr = "ERROR: Load Master IP address/FQDN is a mandatory input parameter." + Write-Verbose $errStr + Throw $errStr + } +} + +# Internal use only +Function validateConnectionParameters($LmIP, $LmPort) +{ + checkLmIpFqdn $LmIP + + if ($LmPort -lt 3 -or $LmPort -gt 65530) { + $errStr = "ERROR: Load Master Port value [$LmPort] is invalid. Allowed values: 3, 65530." + Write-Verbose $errStr + Throw $errStr + } +} + +# -------------------------------------------------------------------------------------------- +# Login method checker functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function getCertPathFromCert($Certificate) +{ + if ($Certificate) { + $tmp = $Certificate.PSPath.Split('::') + $tpath = "Cert:\" + $tmp[2] + $idx = $tpath.LastIndexOf('\') + $certPath = $tpath.Substring(0, $idx) + } + else { + # It should never happen + $errStr = "ERROR: the certificate is NULL." + Write-Verbose $errStr + Throw $errStr + } + $certPath +} + +# Internal use only +Function Get-LoginCertificate($certStoreLoc, $certCN) +{ + if (([String]::IsNullOrEmpty($certStoreLoc))) { + $certStoreLoc = "Cert:\CurrentUser\My" + } + + if ($certCN -eq "" -or $certCN -eq $false) { + $errStr = "ERROR: SubjectCN is NULL." + Write-Verbose $errStr + Throw $errStr + } + + $certs_list = Get-ChildItem -Recurse -Path $certStoreLoc + + $found = $false + $certificate = $null + $location = "Cert:\" # Certificates base dir + foreach ($item in $certs_list) { + $item.Subject | Where {$check = $_ -Like "*CN=$certCN, OU=support*"} + if ($check) { + $index = $item.PSPath.IndexOf("::") + $location += ($item.PSPath).Substring($index + 2) + $certificate = $item + $found = $true + break + } + } + $certificate +} + +# Internal use only +Function checkLoginMethod($Cred, $SubjectCN) +{ + if ( ([String]::IsNullOrEmpty($Cred)) -and ([String]::IsNullOrEmpty($SubjectCN)) ) { + $errStr = "ERROR: login method param is empty. Credentials or SubjectCN must be specified." + Write-Verbose $errStr + Throw $errStr + } + + if ( (-not [String]::IsNullOrEmpty($Cred)) -and (-not [String]::IsNullOrEmpty($SubjectCN)) ) { + $errStr = "ERROR: only one login method (Credentials or SubjectCN) can be used." + Write-Verbose $errStr + Throw $errStr + } +} + +# Internal use only +Function validateLoginParameters($Cred, $SubjectCN, $CertLocation) +{ + checkLoginMethod $Cred $SubjectCN + + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + $loginCert = Get-LoginCertificate $CertLocation $SubjectCN + if ($loginCert -ne $null) { + $certPath = getCertPathFromCert $loginCert + } + else { + if ($CertLocation) { + $errStr = "ERROR: Can't find a certificate with `"$SubjectCN`" as CN in $CertLocation store." + Write-Verbose $errStr + Throw $errStr + } + else { + $errStr = "ERROR: Can't find a certificate with `"$SubjectCN`" as CN in the default Cert:\CurrentUser\My store." + Write-Verbose $errStr + Throw $errStr + } + } + } +} + +# Internal use only +Function validateCommonInputParams($LmIp, $LmPort, $Credential, $SubjectCN, $CertLoc, $File, $Output, $skipLoginMethodCheck) +{ + validateConnectionParameters $LmIp $LmPort + + if (([String]::IsNullOrEmpty($skipLoginMethodCheck))) { + validateLoginParameters $Credential $SubjectCN $CertLoc + } + + validateFile2Upload $File $Output + validateDownloadFileName $Output +} + +# -------------------------------------------------------------------------------------------- +# Get connection parameters checker functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function getConnParameters($LMaster, $LMasterPort, $LMCred, $LMLoginCert, $LMLoginCertLoc, $version) +{ + $params = [ordered]@{} + + if ($version -eq "getConnParameters_2") { + $params.Add("LoadBalancer", $LMaster) + $params.Add("LBPort", $LMasterPort -as [int]) + + if (-not ([String]::IsNullOrEmpty($LMLoginCert))) { + $params.Add("SubjectCN", $LMLoginCert) + if (-not ([String]::IsNullOrEmpty($LMLoginCertLoc))) { + $params.Add("CertificateStoreLocation", $LMLoginCertLoc) + } + } + else { + $params.Add("Credential", $LMCred) + } + } + else { + $params.Add("LmIp", $LMaster) + $params.Add("LmPort", $LMasterPort -as [int]) + + if ($LMLoginCert) { + $params.Add("SubjectCN", $LMLoginCert) + if ($LMLoginCertLoc) { + $params.Add("CertLoc", $LMLoginCertLoc) + } + } + else { + $params.Add("Cred", $LMCred) + } + } + return $params +} + +# Internal use only +Function getConnParameters_2($LMaster, $LMasterPort, $LMCred, $LMLoginCert, $LMLoginCertLoc) +{ + getConnParameters $LMaster $LMasterPort $LMCred $LMLoginCert $LMLoginCertLoc "getConnParameters_2" +} + +# -------------------------------------------------------------------------------------------- +# Networking helper functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function checkInterface($interfaceDetails, $WuiIface) +{ + if ($interfaceDetails) { + if ($interfaceDetails -is [array]) { + foreach($intf in $interfaceDetails) { + if ($intf.Id -eq $WuiIface) { + return $true + } + } + } + else { + if ($interfaceDetails.Id -eq $WuiIface) { + return $true + } + } + } + return $false +} + +# Internal use only +Function getCurrentIntfId($interfaceDetails, $LoadBalancer) +{ + if ($interfaceDetails) { + if ($interfaceDetails -is [array]) { + foreach($intf in $interfaceDetails) { + $lmIP = $intf.IPAddress + if ($lmIP.Contains($LoadBalancer) -eq $true) { + return $intf.Id + } + } + } + else { + $lmIP = $interfaceDetails.IPAddress + if ($lmIP.Contains($LoadBalancer) -eq $true) { + return $interfaceDetails.Id + } + } + } + return "-1" +} + +# Internal use only +Function getIpFromCidrNotation($ipCidr) +{ + if ($ipCidr) { + $sIdx = $ipCidr.IndexOf("/") + if ($sIdx -gt 0) { + $ip = $ipCidr.Substring(0, $sIdx) + return $ip + } + else { + Throw "ERROR: the given ip [$ipCidr] is not in CIDR notation" + } + } + else { + Throw "ERROR: NULL ip address" + } +} + +# Internal use only +Function GetLmNetworkInterface($InterfaceID, $LoadBalancer, $LBPort, $Credential, $SubjectCN, $CertSL) +{ + $params = [ordered]@{ + InterfaceID = $InterfaceID + LoadBalancer = $LoadBalancer + LBPort = $LBPort + } + + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + $params.Add("SubjectCN", $SubjectCN) + if (-not ([String]::IsNullOrEmpty($CertSL))) { + $params.Add("CertificateStoreLocation", $CertSL) + } + } + else { + $params.Add("Credential", $Credential) + } + Get-NetworkInterface @params +} + +# Internal use only +Function SetNetworkInterfaceParam($cmd2exec, $networkParams, $ConnParams) +{ + try { + $response = SendCmdToLm -Command "$cmd2exec" -ParameterValuePair $networkParams -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} + +# -------------------------------------------------------------------------------------------- +# Get/Set helper functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function GetLmParameter($Param, $LoadBalancer, $LBPort, $Credential, $SubjectCN, $CertSL) +{ + $params = [ordered]@{ + Param = $param + LoadBalancer = $LoadBalancer + LBPort = $LBPort + } + + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + $params.Add("SubjectCN", $SubjectCN) + if (-not ([String]::IsNullOrEmpty($CertSL))) { + $params.Add("CertificateStoreLocation", $CertSL) + } + } + else { + $params.Add("Credential", $Credential) + } + Get-LmParameter @params +} + +# Internal use only +Function SetLmParameter($ParamName, $ParamValue, $LoadBalancer, $LBPort, $Credential, $SubjectCN, $CertSL) +{ + $params = [ordered]@{ + Param = $ParamName + Value = $ParamValue + LoadBalancer = $LoadBalancer + LBPort = $LBPort + } + + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + $params.Add("SubjectCN", $SubjectCN) + if (-not ([String]::IsNullOrEmpty($CertSL))) { + $params.Add("CertificateStoreLocation", $CertSL) + } + } + else { + $params.Add("Credential", $Credential) + } + Set-LmParameter @params +} + +# Internal use only +Function GetLmParameterSet($queryParams, $objectPSName, $lmInputParams) +{ + $configContainer = [ordered]@{} + $configContainer.PSTypeName = $objectPSName + + Foreach ($param in $queryParams) { + $lmInputParams.Add("param", $param) + + $response = Get-LmParameter @lmInputParams + if ($response.ReturnCode -eq 200) { + $value = $response.Data.$param + if ($param -ne "wuidisplaylines") { + $configContainer.Add($param, $value) + } + else { + # Statistics Display Size + $configContainer.Add("StatisticsDisplaySize", $value) + } + } + else { + # ERROR + return $response + } + $lmInputParams.Remove("param") + Start-Sleep -m 200 + } + $data = New-Object -TypeName PSObject -Property $configContainer + + $settingsContainer = [ordered]@{} + $settingsContainer.PSTypeName = $objectPSName + $settingsContainer.Add($objectPSName, $data) + + $finalObject = New-Object -TypeName PSObject -Property $settingsContainer + + setKempAPIReturnObject 200 "Command successfully executed." $finalObject +} + +# Internal use only +Function SetParameterSet($paramsSet, $connParams, [ref]$params2Get) +{ + if ($paramsSet) { + + foreach ($param in $paramsSet.Keys) { + + $connParams.Add("param", $param) + $connParams.Add("value", $paramsSet[$param]) + $params2Get.value += $param + + $response = Set-LmParameter @connParams + if ($response.ReturnCode -ne 200) { + return $response + } + + $connParams.Remove("param") + $connParams.Remove("value") + + Start-Sleep -m 200 + } + $response + } +} + +# -------------------------------------------------------------------------------------------- +# LM ANSWER helper functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function checkLmOkResponse($LmResponse) +{ + $retValue = $false + if ($LmResponse -eq "OK" -or + $LmResponse -eq "ok" -or + $LmResponse -eq "Ok" ) { + $retValue = $true + } + return $retValue +} + +# Internal use only +Function getErrorCode($errMsg) +{ + if ($errMsg) { + + $errMsg = [string]$errMsg + if ($errMsg.Contains("Unauthorized")) { + $errCode = 401 + } + else { + $errCode = 400 + } + + } + else { + $errCode = 400 + } + return $errCode +} + +# -------------------------------------------------------------------------------------------- +# EULA helper functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function SetEulaResponseObject($rawAnswer, $EulaType) +{ + if ($rawAnswer) { + try { + $EulaCmdResponse = [xml]$rawAnswer + $answerCode = $EulaCmdResponse.Response.stat + + if ($answerCode -eq 200) { + $answerDes = "Command successfully executed" + try { + $mstr = $EulaCmdResponse.Response.Success.Data.Magic + # NOTE we can't access the eula directly + # due to the HTML tags. + $eulaStartIndex = $rawAnswer.IndexOf("`") + 6 + $eulaEndIndex = $rawAnswer.IndexOf("`") + $eula = $rawAnswer.Substring($eulaStartIndex, $eulaEndIndex - $eulaStartIndex) + + $tempEulaAnswer = [ordered]@{} + $tempEulaAnswer.PSTypeName = $EulaType + $tempEulaAnswer.MagicString = $mstr + $tempEulaAnswer.$EulaType = $eula + $eulaAnswer = New-Object -TypeName PSObject -Prop $tempEulaAnswer + + $eulaHT = [ordered]@{} + $eulaHT.PSTypeName = $EulaType + $eulaHT.Add($EulaType, $eulaAnswer) + $eulaObject = New-Object -TypeName PSObject -Prop $eulaHT + + $answer = setKempAPIReturnObject $answerCode $answerDes $eulaObject + return $answer + } + catch { + $errorString = $_.Exception.Message + $errorAnswer = setKempAPIReturnObject 401 "$errorString" $null + return $errorAnswer + } + } + else { + # ERROR + $answerDes = $EulaCmdResponse.Response.Error + $errorAnswer = setKempAPIReturnObject $answerCode $answerDes $null + return $errorAnswer + } + } + catch { + $errorAnswer = setKempAPIReturnObject 401 $rawAnswer $null + return $errorAnswer + } + } + $errorAnswer = setKempAPIReturnObject 401 "ERROR: no answer from the LM." $null + return $errorAnswer +} + +# Internal use only +Function SetEulaErrorResponseObject($rawError) +{ + if ($rawError) { + + try { + $err = [xml]$rawError + $errCode = $err.Response.stat + $errDes = $err.Response.Error + } + catch { + $errCode = 400 + $errDes = $rawError + } + } + else { + $errCode = 400 + $errDes = "ERROR: Unknown error." + } + setKempAPIReturnObject $errCode $errDes $null +} + +# -------------------------------------------------------------------------------------------- +# LICENSE helper functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function GetLicenseCmdErrorCode($errorString) +{ + if ($errorString.Contains("invalid username")) { + $errCode = 422 + } + elseif ($errorString.Contains("Unauthorized")) { + $errCode = 401 + } + elseif ($errorString.Contains("Unable to connect") -or + $errorString.Contains("The remote name could not be resolved") -or + $errorString.Contains("Can't find a certificate") -or + $errorString.Contains("The underlying connection was closed")) { + $errCode = 400 + } + else { + Write-Debug "Unknown error message [$errorString]" + $errCode = 400 + } + $errCode +} + +# -------------------------------------------------------------------------------------------- +# Cmdlets response "HANDLER" functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function SetGetLicenseAccessKeyReturnObject($response) +{ + $accessKey = $([xml]$response).Response.Success.Data.AccessKey + + $tempAKA = @{} + $tempAKA.PSTypeName = "AccessKey" + $tempAKA.AccessKey = $accessKey + New-Object -TypeName PSObject -Prop $tempAKA +} + +# Internal use only +Function AddLicenseObject($licItem, $pOrderId) +{ + $LicVector = @() + + $licDes = $licItem.description + if ($licDes.Contains("from OrderID")) { + $licDes += " $pOrderId" + } + $buymore = $licItem.purchaseOptions[0].link -replace "`n","" -replace "`r","" + + foreach($lic in $licItem.licenseTypes) { + $LicData = [ordered]@{} + $LicData.PSTypeName = "License" + + foreach($item in $lic.PSObject.Properties) { + $value = $item.Value -replace "`n","" -replace "`r","" + $LicData.Add($item.Name, $value) + } + if ($licDes.Contains("Temp")) { + $LicData.Add("LicenseStatus", $licDes) + $LicData.Add("description", $LicData.name) + } + else { + $LicData.Add("LicenseStatus", "Permanent License") + } + $LicData.Add("BuyMoreAt", $buymore) + + $licObj = New-Object -TypeName PSObject -Prop $LicData + $LicVector += $LicObj + } + return $LicVector +} + +# Internal use only +Function SetGetLicenseTypeReturnObject($xmlAnsw, $pOrderId) +{ + $data = $xmlAnsw.Response.Success + + if ( ([String]::IsNullOrEmpty($data)) ) { + return $null + } + + $LicHt = [ordered]@{} + $LicHt.PSTypeName = "License" + + if ($data.Contains("License type information not available") -or $data -eq "[]") { + $LicHt.Add("Licenses", "License type information not available") + New-Object -TypeName PSObject -Prop $LicHt + return + } + + $TempLicObject = $data | ConvertFrom-Json + $licenseArray = @() + foreach($item in $TempLicObject.categories) { + $tmp = AddLicenseObject $item $pOrderId + foreach($item in $tmp) { + $licenseArray += $item + } + } + $LicHt.Add("License", $licenseArray) + New-Object -TypeName PSObject -Prop $LicHt +} + +# Internal use only +Function SetGetLicenseInfoReturnObject($response) +{ + $LicInfo = [ordered]@{} + $LicInfo.PSTypeName = "LicenseInfo" + + $data = $([xml]$response).Response.Success.Data + + $licenseData = GetPSObjectFromXml "LicenseInfo" $data + $LicInfo.Add("LicenseInfo", $licenseData) | Out-null + + New-Object -TypeName PSObject -Property $LicInfo +} + +# Internal use only +Function SetAdcVSSettingsReturnObject($xmlAnsw, $single) +{ + if ($single -eq $true) { + $vsSettings = [ordered]@{} + $vsSettings.PSTypeName = "VSSettings" + $vsData = GetPSObjectFromXml "VS" $xmlAnsw.Response.Success.Data + $vsSettings.Add("VS", $vsData) | Out-null + New-Object -TypeName PSObject -Property $vsSettings + } + else { + GetPSObjectFromXml "VS" $xmlAnsw.Response.Success.Data.VS + } +} + +# Internal use only +Function SetRSSettingReturnObject($xmlAnsw) +{ + $rsSettings = [ordered]@{} + $rsSettings.PSTypeName = "Real Server settings" + + $vsData = GetPSObjectFromXml "VS" $xmlAnsw.Response.Success.Data.Rs + + $rsSettings.Add("RsSettings", $vsData) | Out-null + New-Object -TypeName PSObject -Property $rsSettings +} + +# Internal use only +Function SetAdcContentRuleReturnObject($xmlAnsw) +{ + $crSettings = [ordered]@{} + $crSettings.PSTypeName = "ContentRules" + + if ($xmlAnsw.Response.Success.Data.MatchContentRule) { + $data = $([xml]$response).Response.Success.Data.MatchContentRule + $mCrData = GetPSObjectFromXml "MatchContentRule" $data + if ($mCrData.MatchContentRule) { + $crSettings.Add("MatchContentRule", $mCrData.MatchContentRule) | Out-null + } + else { + $crSettings.Add("MatchContentRule", $mCrData) | Out-null + } + } + + if ($xmlAnsw.Response.Success.Data.AddHeaderRule) { + $data = $([xml]$response).Response.Success.Data.AddHeaderRule + $ahCrData = GetPSObjectFromXml "AddHeaderRule" $data + if ($ahCrData.AddHeaderRule) { + $crSettings.Add("AddHeaderRule", $ahCrData.AddHeaderRule) | Out-null + } + else { + $crSettings.Add("AddHeaderRule", $ahCrData) | Out-null + } + } + + if ($xmlAnsw.Response.Success.Data.DeleteHeaderRule) { + $data = $([xml]$response).Response.Success.Data.DeleteHeaderRule + $dhCrData = GetPSObjectFromXml "DeleteHeaderRule" $data + if ($dhCrData.DeleteHeaderRule) { + $crSettings.Add("DeleteHeaderRule", $dhCrData.DeleteHeaderRule) | Out-null + } + else { + $crSettings.Add("DeleteHeaderRule", $dhCrData) | Out-null + } + } + + if ($xmlAnsw.Response.Success.Data.ReplaceHeaderRule) { + $data = $([xml]$response).Response.Success.Data.ReplaceHeaderRule + $rhCrData = GetPSObjectFromXml "ReplaceHeaderRule" $data + if ($rhCrData.ReplaceHeaderRule) { + $crSettings.Add("ReplaceHeaderRule", $rhCrData.ReplaceHeaderRule) | Out-null + } + else { + $crSettings.Add("ReplaceHeaderRule", $rhCrData) | Out-null + } + } + + if ($xmlAnsw.Response.Success.Data.ModifyURLRule) { + $data = $([xml]$response).Response.Success.Data.ModifyURLRule + $muRData = GetPSObjectFromXml "ModifyURLRule" $data + if ($muRData.ModifyURLRule) { + $crSettings.Add("ModifyURLRule", $muRData.ModifyURLRule) | Out-null + } + else { + $crSettings.Add("ModifyURLRule", $muRData) | Out-null + } + } + + if ($xmlAnsw.Response.Success.Data.ReplaceBodyRule) { + $data = $([xml]$response).Response.Success.Data.ReplaceBodyRule + $repBodyData = GetPSObjectFromXml "ReplaceBodyRule" $data + if ($repBodyData.ReplaceBodyRule) { + $crSettings.Add("ReplaceBodyRule", $repBodyData.ReplaceBodyRule) | Out-null + } + else { + $crSettings.Add("ReplaceBodyRule", $repBodyData) | Out-null + } + } + + $crRetObj = New-Object -TypeName PSObject -Property $crSettings + + $crConf = [ordered]@{} + $crConf.PSTypeName = "ContentRules" + $crConf.Add("ContentRules", $crRetObj) | Out-null + New-Object -TypeName PSObject -Property $crConf +} + +# Internal use only +Function SetAdcServiceHealthReturnObject($xmlAnsw) +{ + $srvHConf = [ordered]@{} + $srvHConf.PSTypeName = "AdcServiceHealth" + + $data = $([xml]$response).Response.Success.Data + $srvHData = GetPSObjectFromXml "AdcServiceHealth" $data + + if ($srvHData.RetryInterval) { + renameCustomObjectProperty $srvHData "RetryInterval" "CheckInterval" + } + if ($srvHData.Timeout) { + renameCustomObjectProperty $srvHData "Timeout" "ConnectionTimeout" + } + if ($srvHData.RetryCount) { + renameCustomObjectProperty $srvHData "RetryCount" "RetryCount" + } + + $srvHConf.Add("AdcServiceHealth", $srvHData) | Out-null + New-Object -TypeName PSObject -Property $srvHConf +} + +# Internal use only +Function SetAdcAdaptiveHealthCheckReturnObject($xmlAnsw) +{ + $ahcConf = [ordered]@{} + $ahcConf.PSTypeName = "AdcAdaptiveHealthCheck" + + $data = $([xml]$response).Response.Success.Data + $ahcData = GetPSObjectFromXml "AdcAdaptiveHealthCheck" $data + + $ahcConf.Add("AdcAdaptiveHealthCheck", $ahcData) | Out-null + New-Object -TypeName PSObject -Property $ahcConf +} + +# Internal use only +Function SetAdcWafVSRulesReturnObject($xmlAnsw, $rulename) +{ + $vsWafRule = [ordered]@{} + $vsWafRule.PSTypeName = "AdcWafVSRules" + + $data = $([xml]$response).Response.Success.Data + $vsWafRuleData = GetPSObjectFromXml "AdcWafVSRules" $data + + $vsWafRule.Add("AdcWafVSRules", $vsWafRuleData) | Out-null + New-Object -TypeName PSObject -Property $vsWafRule +} + +# Internal use only +Function SetLicenseOnPremiseReturnObject($xmlAnsw) +{ + $AslServerIpAddr = $xmlAnsw.Response.Success.Data.aslipaddr + $AslServerPort = $xmlAnsw.Response.Success.Data.aslport + $AslServerFqdn = $xmlAnsw.Response.Success.Data.aslname + + $aslConf = [ordered]@{} + $aslConf.PSTypeName = "Asl Server Data" + + $aslConf.Add("AslServerIpAddress", $AslServerIpAddr) | Out-null + $aslConf.Add("AslServerPort", $AslServerPort) | Out-null + $aslConf.Add("AslServerFqdn", $AslServerFqdn) | Out-null + + New-Object -TypeName PSObject -Prop $aslConf +} + +# Internal use only +Function SetGetSecUserReturnObject($xmlAnsw) +{ + $secUserConf = [ordered]@{} + $secUserConf.PSTypeName = "SecureUserSettings" + + $secUserData = GetPSObjectFromXml "SecureUserSettings" $xmlAnsw.Response.Success.Data.User + if ($secUserData) { + + if ($secUserData.User) { + foreach ($user in $secUserData.User) { + $user.Perms = $user.Perms.Trim(",", " ") + } + $secUserConf.Add("SecureUserSettings", $secUserData.User) | Out-null + } + else { + $secUserData.Perms = $secUserData.Perms.Trim(",", " ") + $secUserConf.Add("SecureUserSettings", $secUserData) | Out-null + } + } + New-Object -TypeName PSObject -Property $secUserConf +} + +# Internal use only +Function SetNetworkInterfaceReturnObject($xmlAnsw, $interfaceId) +{ + $networkInterfaceData = GetPSObjectFromXml "NetworkInterfaceSettings" $xmlAnsw.Response.Success.Data.Interface + if ($interfaceId -ge 0) { + # specific interface + $networkInterfaceConf = [ordered]@{} + $networkInterfaceConf.PSTypeName = "NetworkInterfaceSettings" + + $networkInterfaceConf.Add("Interface", $networkInterfaceData) | Out-null + New-Object -TypeName PSObject -Property $networkInterfaceConf + } + else { + # all interfaces + return $networkInterfaceData + } +} + +# Internal use only +Function SetGetAllParametersReturnObject($xmlAnsw, $typeName) +{ + $ht = [ordered]@{} + + if ($typeName -eq "AllParameters") { + $ht.PSTypeName = $typeName + $allParamsData = GetPSObjectFromXml $typeName $xmlAnsw.Response.Success.Data + $ht.Add($typeName, $allParamsData) | Out-null + } + else { + $ht.PSTypeName = "Parameter" + $node = $xmlAnsw.Response.Success.Data + foreach($item in $node.GetEnumerator()) { + $paramValue = $item.InnerText -replace "`n","" -replace "`r","" # LM s..t + $ht.add($item.Name, $paramValue) + } + } + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetLmNetworkInterfaceReturnObject($xmlAnsw) +{ + GetPSObjectFromXml "InterfaceSettings" $xmlAnsw.Response.Success.Data.Network +} + +# Internal use only +Function SetTLSCertificateReturnObject($xmlAnsw) +{ + $data = $xmlAnsw.Response.Success.Data + if ($data) { + GetPSObjectFromXml "TlsCertificate" $data "notrim" + } + else { + return $null + } +} + +# Internal use only +Function SetGetTLSCipherSetReturnObject($xmlAnsw) +{ + $data = $xmlAnsw.Response.Success.Data.cipherset + + if ($data) { + $data = $data.split(":") + } + + $tlsCS = [ordered]@{} + $tlsCS.PSTypeName = "TlsCipherSet" + + $tlsCS.Add("TlsCipherSet", $data) | Out-null + + New-Object -TypeName PSObject -Prop $tlsCS +} + +# Internal use only +Function SetTLSHSMReturnObject($xmlAnsw) +{ + GetPSObjectFromXml "HSMSettings" $xmlAnsw.Response.Success.Data.HSM +} + +# Internal use only +Function doRemoveNonSamlData($singleSSODomain) +{ + if ($singleSSODomain.auth_type -eq "SAML") { + $singleSSODomain.PSObject.Properties.Remove("testuser") + $singleSSODomain.PSObject.Properties.Remove("ldap_version") + $singleSSODomain.PSObject.Properties.Remove("server_side") + $singleSSODomain.PSObject.Properties.Remove("logon_fmt") + $singleSSODomain.PSObject.Properties.Remove("logon_fmt2") + $singleSSODomain.PSObject.Properties.Remove("logon_transcode") + $singleSSODomain.PSObject.Properties.Remove("logon_domain") + $singleSSODomain.PSObject.Properties.Remove("kerberos_domain") + $singleSSODomain.PSObject.Properties.Remove("kerberos_kdc") + $singleSSODomain.PSObject.Properties.Remove("kcd_username") + $singleSSODomain.PSObject.Properties.Remove("max_failed_auths") + $singleSSODomain.PSObject.Properties.Remove("reset_fail_tout") + $singleSSODomain.PSObject.Properties.Remove("unblock_tout") + $singleSSODomain.PSObject.Properties.Remove("sess_tout_idle_priv") + $singleSSODomain.PSObject.Properties.Remove("sess_tout_duration_priv") + $singleSSODomain.PSObject.Properties.Remove("cert_check_asi") + $singleSSODomain.PSObject.Properties.Remove("cert_check_cn") + } +} + +# Internal use only +Function removeNonSamlData($SSODomainData) +{ + if ($SSODomainData) { + + if ($SSODomainData.Domain) { + # array case + $domainsArray = $SSODomainData.Domain + foreach ($singleDomain in $domainsArray) { + doRemoveNonSamlData($singleDomain) + } + } + else { + # scalar case + doRemoveNonSamlData($SSODomainData) + } + } +} + +# Internal use only +Function SetGetSSODomainReturnObject($xmlAnsw) +{ + $ssoData = $xmlAnsw.Response.Success.Data.Domain + $data = GetPSObjectFromXml "SSODomain" $ssoData + + removeNonSamlData $data + + $ht = [ordered]@{} + $ht.PSTypeName = "SSODomain" + + if ($data.Domain) { + $ht.add("Domain", $data.Domain) + } + else { + $ht.add("Domain", $data) + } + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetSSOSamlDomainReturnObject($xmlAnsw) +{ + $ssoData = $xmlAnsw.Response.Success.Data.Domain + + $data = GetPSObjectFromXml "SSODomain" $ssoData + + removeNonSamlData $data + + $ht = [ordered]@{} + $ht.PSTypeName = "SSODomain" + $ht.add("Domain", $data) + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetSSODomainLockUnLockAnswerReturnObject($xmlAnsw, $Cmd) +{ + $dht = [ordered]@{} + + if ($Cmd -eq "showdomainlockedusers") { + $dht.PSTypeName = "SSODomainsLockedUsers" + $data = $xmlAnsw.Response.Success.Data.LockedUsers + + $lockedUser = GetPSObjectFromXml "LockedUsers" $data + if ($lockedUser) { + $dht.Add("LockedUsers", $lockedUser) | Out-null + } + else { + $dht = $null + } + } + elseif ($Cmd -eq "unlockdomainusers") { + $dht.PSTypeName = "SSODomainsUnlockedUsers" + $data = $xmlAnsw.Response.Success.Data.UnlockedUsers + + $unlockedUser = GetPSObjectFromXml "UnlockedUsers" $data + if ($unlockedUser) { + $dht.Add("UnlockedUsers", $unlockedUser) | Out-null + } + else { + $dht = $null + } + } + else { + Throw "Unknown SSO Domain command" + return + } + New-Object -TypeName PSObject -Prop $dht +} + +# Internal use only +Function SetGetSSODomainSessionReturnObject($xmlAnsw) +{ + $Sessions = [ordered]@{} + $Sessions.PSTypeName = "SSOSession" + + $nos = $xmlAnsw.Response.Success.Data.NumberOfSessions + $Sessions.Add("NumberOfSessions", $nos) | Out-null + + if ($nos -eq 0) { + $Sessions.Add("Session", $null) + } + elseif ($nos -eq 1) { + $data = $xmlAnsw.Response.Success.Data.Session + $sHt = GetPSObjectFromXml "Session" $data + + $Sessions.Add("Session", $sHt) + } + else { + $data = $xmlAnsw.Response.Success.Data.Session + $sHt_temp = GetPSObjectFromXml "Session" $data + $sHt = $sHt_temp.Session + + $Sessions.Add("Session", $sHt) + } + + $sObj = New-Object -TypeName PSObject -Prop $Sessions + + $ssoSession = [ordered]@{} + $ssoSession.PSTypeName = "SSOSession" + $ssoSession.Add("SSOSession", $sObj) | Out-null + + New-Object -TypeName PSObject -Property $ssoSession +} + +# Internal use only +Function doUpdateLdapEndPointFields($ldapPoint) +{ + if ($ldapPoint) { + if ($ldapPoint.ldaptype) { + renameCustomObjectProperty $ldapPoint "ldaptype" "LdapProtocol" + } + if ($ldapPoint.refcnt) { + renameCustomObjectProperty $ldapPoint "refcnt" "ReferralCount" + } + } +} + +# Internal use only +Function SetGetLdapEndpointReturnObject($xmlAnsw, $list) +{ + $ht = [ordered]@{} + $ht.PSTypeName = "LDAPEndPoint" + + $data = $xmlAnsw.Response.Success.Data + $ldapEPData = GetPSObjectFromXml "LDAPEndPoint" $data + if ($list) { + $ldapPoints = $ldapEPData.EndPoint + foreach ($singleLdapPoint in $ldapPoints) { + doUpdateLdapEndPointFields $singleLdapPoint + } + $ht.Add("LDAPEndPoint", $ldapEPData.EndPoint) + } + else { + doUpdateLdapEndPointFields $ldapEPData + if ($ldapEPData.server) { + $ldapEPData.server = $ldapEPData.server.Trim() + } + $ht.Add("LDAPEndPoint", $ldapEPData) + } + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetInstallTemplateReturnObject($xmlAnsw) +{ + $data = $xmlAnsw.Response.Success + if ($data) { + $lma = $data -replace "\\n", " " + Write-Verbose "response: $data" + + $ht = [ordered]@{} + $ht.PSTypeName = "TemplateData" + $ht.add("TemplateData", $data) + New-Object -TypeName PSObject -Property $ht + } + else { + return $null + } +} + +# Internal use only +Function SetGetTemplateReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "Templates" $xmlAnsw.Response.Success.Data.template + + if ($data) { + $ht = [ordered]@{} + $ht.PSTypeName = "Template" + if ($data.template) { + $ht.add("Template", $data.template) + } + else { + $ht.add("Template", $data) + } + New-Object -TypeName PSObject -Property $ht + } + else { + return $null + } +} + +# Internal use only +Function SetExportVSTemplateReturnObject($xmlAnsw) +{ + return $null +} + +# Internal use only +Function SetGetLogStatisticsReturnObject($xmlAnsw, $stats2collect) +{ + $ht = [ordered]@{} + $ht.PSTypeName = "Statistics" + + if ($stats2Collect.VS -eq $true) { + if ($xmlAnsw.Response.Success.Data.Vs) { + $vsStats = GetPSObjectFromXml "VSStats" $xmlAnsw.Response.Success.Data.Vs + $ht.Add("Vs", $vsStats.Vs) | Out-null + } + } + + if ($stats2Collect.RS -eq $true) { + if ($xmlAnsw.Response.Success.Data.Rs) { + $rsStats = GetPSObjectFromXml "RSStats" $xmlAnsw.Response.Success.Data.Rs + $ht.Add("Rs", $rsStats.Rs) | Out-null + } + } + + if ($stats2Collect.Totals -eq $true) { + + if ($xmlAnsw.Response.Success.Data.VStotals) { + $vsTotalData = GetPSObjectFromXml "VSTStats" $xmlAnsw.Response.Success.Data.VStotals + $ht.Add("VStotals", $vsTotalData) | Out-null + } + + if ($xmlAnsw.Response.Success.Data.CPU) { + $cpuData = GetPSObjectFromXml "CPUStats" $xmlAnsw.Response.Success.Data.CPU + $ht.Add("CPU", $cpuData) | Out-null + } + + if ($xmlAnsw.Response.Success.Data.Network) { + $networkData = GetPSObjectFromXml "NetStats" $xmlAnsw.Response.Success.Data.Network + $ht.Add("Network", $networkData) | Out-null + } + + if ($xmlAnsw.Response.Success.Data.Memory) { + $memoryData = GetPSObjectFromXml "MemStats" $xmlAnsw.Response.Success.Data.Memory + $ht.Add("Memory", $memoryData) | Out-null + } + + if ($xmlAnsw.Response.Success.Data.TPS) { + $tpsData = GetPSObjectFromXml "TpsStats" $xmlAnsw.Response.Success.Data.TPS + $ht.Add("TPS", $tpsData) | Out-null + } + } + + $ct = $xmlAnsw.Response.Success.Data.ChangeTime + $ht.Add("ChangeTime", $ct) | Out-null + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetWafRulesReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "WafRules" $xmlAnsw.Response.Success.Data.Rules + + $ht = [ordered]@{} + $ht.PSTypeName = "WafRules" + $ht.add("WafRules", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetWafRulesAutoUpdateConfigurationReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "WafConfiguration" $xmlAnsw.Response.Success.Data.WAF + + $ht = [ordered]@{} + $ht.PSTypeName = "WafConfiguration" + $ht.add("WafConfiguration", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetWafAuditFilesReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "WafAuditFiles" $xmlAnsw.Response.Success.Data.WAFAuditFiles + + $ht = [ordered]@{} + $ht.PSTypeName = "WafAuditFiles" + $ht.add("WafAuditFiles", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGeneralCaseReturnObject($xmlAnsw) +{ + return $null +} + +# Internal use only +Function renameCustomObjectProperty($customPsObject, $oldPropName, $newPropName) +{ + $value = $customPsObject.$oldPropName + $customPsObject.PSObject.Properties.Remove($oldPropName) + $customPsObject | Add-Member -NotePropertyName "$newPropName" -NotePropertyValue $value +} + +# Internal use only +Function getSelectionCriteriaName($scInternalName) +{ + $name = "" + + switch ($scInternalName) + { + "rr" { $name = "RoundRobin"; break } + "wrr" { $name = "WeightedRoundRobin"; break } + "fw" { $name = "FixedWeighting"; break } + "rsr" { $name = "RealServerLoad"; break } + "prx" { $name = "Proximity"; break } + "lb" { $name = "LocationBased"; break } + "all" { $name = "AllAvailable"; break } + } + return $name +} + +# Internal use only +Function UpdateFqdnFieldNames($fqdnData) +{ + if ($fqdnData.fqdn) { + $Fqdns = $fqdnData.fqdn + } + else { + $Fqdns = $fqdnData + } + + foreach ($singleFqdn in $Fqdns) { + foreach ($key in Get-Member -InputObject $singleFqdn -MemberType NoteProperty) { + switch ($key.Name) + { + "FullyQualifiedDomainName" { + renameCustomObjectProperty $singleFqdn "FullyQualifiedDomainName" "Fqdn" + break + } + + "failover" { + renameCustomObjectProperty $singleFqdn "failover" "Failover" + break + } + + "publicRequestValue" { + renameCustomObjectProperty $singleFqdn "publicRequestValue" "PublicRequest" + break + } + + "privateRequestValue" { + renameCustomObjectProperty $singleFqdn "privateRequestValue" "PrivateRequest" + break + } + + "FailTime" { + renameCustomObjectProperty $singleFqdn "FailTime" "SiteFailureDelay" + break + } + + "SelectionCriteria" { + $value = getSelectionCriteriaName $singleFqdn.SelectionCriteria + $singleFqdn.SelectionCriteria = $value + break + } + } + } + } +} + +# Internal use only +Function SetGetGeoFqdnReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "GeoFqdn" $xmlAnsw.Response.Success.Data.fqdn + UpdateFqdnFieldNames $data + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoFqdn" + if ($data.fqdn -is [array]) { + $ht.add("GeoFqdn", $data.fqdn) + } + else { + $ht.add("GeoFqdn", $data) + } + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetGeoStatsReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "GeoStats" $xmlAnsw.Response.Success.Data + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoStats" + $ht.add("GeoStats", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetGeoClusterReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "GeoCluster" $xmlAnsw.Response.Success.Data.cluster + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoCluster" + if ($data.cluster) { + $ht.add("GeoCluster", $data.cluster) + } + else { + $ht.add("GeoCluster", $data) + } + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetAddGeoClusterReturnObject($xmlAnsw, $ClusterName) +{ + $rawData = $xmlAnsw.Response.Success + $clusterIp = $($rawData.split(" "))[1] + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoCluster" + $ht.add("IPAddress", $clusterIp) + $ht.add("Name", $ClusterName) + + $clObj = New-Object -TypeName PSObject -Property $ht + + $cl = [ordered]@{} + $cl.PSTypeName = "GeoCluster" + $cl.Add("GeoCluster", $clObj) | Out-null + + New-Object -TypeName PSObject -Property $cl +} + +# Internal use only +Function SetSetGeoClusterReturnObject($xmlAnsw) +{ + SetGetGeoClusterReturnObject $xmlAnsw +} + +# Internal use only +Function SetGetNetworkRouteReturnObject($xmlAnsw) +{ + $routeData = $xmlAnsw.Response.Success.Data.Route + + if ($routeData -is [array]) { + GetPSObjectFromXml "Route" $routeData + } + else { + $data = GetPSObjectFromXml "Route" $routeData + + $ht = [ordered]@{} + $ht.PSTypeName = "Route" + $ht.add("Route", $data) + + New-Object -TypeName PSObject -Property $ht + } +} + +# Internal use only +Function SetTestNetworkRouteReturnObject($xmlAnsw) +{ + $traceRouteRawData = $xmlAnsw.Response.Success.Data + + $ht = [ordered]@{} + $ht.PSTypeName = "Traceroute" + + $go = $true + $pos2 = 0 + $hop = 1 + while ($go -eq $true) { + $pos = $traceRouteRawData.IndexOf("#") + if ($pos -lt 0) { + $go = $false + } + elseif ($pos2 -gt 0) { + $tmp = $traceRouteRawData.Substring(0, $pos) + $hopString = "Hop " + $hop + $ht.Add($hopString, $tmp) + $tmp = $traceRouteRawData.Substring($pos + 1) + $traceRouteRawData = $tmp + $hop += 1 + } + else { + $tmp = $traceRouteRawData.Substring($pos + 1) + if (-not ([string]::IsNullOrEmpty($tmp))) { + $traceRouteRawData = $tmp + $pos2 = $traceRouteRawData.IndexOf("#") + $tmp = $traceRouteRawData.Substring(0, $pos2) + $ht.TracerouteTo = $tmp + $tmp = $traceRouteRawData.Substring($pos2 + 1) + $traceRouteRawData = $tmp + } + } + } + $trRawObj = New-Object -TypeName PSObject -Property $ht + + $trHt = [ordered]@{} + $trHt.PSTypeName = "Traceroute" + $trHt.Add("Traceroute", $trRawObj) | Out-null + + New-Object -TypeName PSObject -Property $trHt +} + +# Internal use only +Function SetAddNetworkVxLANReturnObject($xmlAnsw, $InterfaceId, $vlanFlag) +{ + $data = $xmlAnsw.Response.Success + $intfId = $data.split()[4] # same answer structure for VLan/VxLan + + $ht = [ordered]@{} + + if ($vlanFlag -eq "vlan") { + $lanType = "VLan" + $lanIntfLabel = "VLanInterfaceId" + } + else { + $lanType = "VxLan" + $lanIntfLabel = "VxLanInterfaceId" + } + + $ht.PSTypeName = $lanType + $ht.add("NetworkInterfaceId", $InterfaceId) + $ht.add($lanIntfLabel, $intfId) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetAddNetworkVLANReturnObject($xmlAnsw, $InterfaceId) +{ + SetAddNetworkVxLANReturnObject $xmlAnsw $InterfaceId "vlan" +} + +# Internal use only +Function SetGetHostsReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "LocalHosts" $xmlAnsw.Response.Success.Data.HostsEntry + + $ht = [ordered]@{} + $ht.PSTypeName = "LocalHosts" + $ht.add("LocalHosts", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetVSTotalsReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "TotalVS" $xmlAnsw.Response.Success.Data + + $ht = [ordered]@{} + $ht.PSTypeName = "TotalVS" + $ht.add("TotalVS", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetVpnConnectionReturnObject($xmlAnsw, $vpnName) +{ + $ht = [ordered]@{} + $ht.PSTypeName = "VpnConfiguration" + + if ($vpnName) { + $check = $xmlAnsw.Response.Success.Data.GetElementsByTagName("name") + if ([string]::IsNullOrEmpty($check)) { + $newNode = $xmlAnsw.CreateElement("name") + $newNodeText = $xmlAnsw.CreateTextNode($vpnName) + $newNode.AppendChild($newNodeText) | Out-Null + + $nref = $xmlAnsw.Response.Success.Data.Item("status") + $xmlAnsw.Response.Success.Data.InsertBefore($newNode, $nref) | Out-Null + } + } + $data = $xmlAnsw.Response.Success.Data + $vpnData = GetPSObjectFromXml "VpnConfiguration" $data + + if ($vpnName) { + $ht.Add("VpnConfiguration", $vpnData) + } + else { + $ht.Add("VpnConfiguration", $vpnData.VPN) + } + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetInstallLmAddonReturnObject($xmlAnsw) +{ + $data = $xmlAnsw.Response.Success + + $ht = [ordered]@{} + $ht.PSTypeName = "Package" + $ht.add("Package", $data) + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetLmAddOnReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "Package" $xmlAnsw.Response.Success.Data.Packages.Package + + $ht = [ordered]@{} + $ht.PSTypeName = "Package" + + if ($data) { + + if ($data.Package) { + $ht.add("Package", $data.Package) + } + else { + $ht.add("Package", $data) + } + } + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetInstallLmPatchReturnObject($xmlAnsw) +{ + $data = "Patch successfully installed. Please reboot the LM to apply the new software." + + $ht = [ordered]@{} + $ht.PSTypeName = "PatchData" + $ht.add("PatchData", $data) + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetUninstallLmPatchReturnObject($xmlAnsw) +{ + $data = "Previous firmware version successfully restored. Please reboot the LM to apply." + + $ht = [ordered]@{} + $ht.PSTypeName = "PatchData" + $ht.add("PatchData", $data) + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetLmPreviousFirmwareVersionReturnObject($xmlAnsw) +{ + $data = $xmlAnsw.Response.Success.Data.PreviousVersion + + $ht = [ordered]@{} + $ht.PSTypeName = "PreviousVersion" + + if ($data) { + $ht.add("PreviousVersion", $data) + } + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetAddSdnControllerReturnObject($xmlAnsw) +{ + $data = GetPSSdnDataFromXml "Controller" $xmlAnsw.Response.Success.Data.controllers + + $ht = [ordered]@{} + $ht.PSTypeName = "Controllers" + $ht.add("Controllers", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetSdnControllerReturnObject($xmlAnsw) +{ + $data = GetPSSdnDataFromXml "Controller" $xmlAnsw.Response.Success.Data.controllers + + $ht = [ordered]@{} + $ht.PSTypeName = "Controllers" + $ht.add("Controllers", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetSetSdnControllerReturnObject($xmlAnsw) +{ + $data = GetPSSdnDataFromXml "Controller" $xmlAnsw.Response.Success.Data.controllers + + $ht = [ordered]@{} + $ht.PSTypeName = "Controllers" + $ht.add("Controllers", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetRemoveSdnControllerReturnObject($xmlAnsw) +{ + $data = GetPSSdnDataFromXml "Controller" $xmlAnsw.Response.Success.Data.controllers + + $ht = [ordered]@{} + $ht.PSTypeName = "Controllers" + $ht.add("Controllers", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetAdcRealServerReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "Rs" $xmlAnsw.Response.Success.Data.Rs + + $ht = [ordered]@{} + $ht.PSTypeName = "Rs" + $ht.add("Rs", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetSetGeoFQDNSiteAddressReturnObject($xmlAnsw, $SiteAddress) +{ + $data = GetPSObjectFromXml "GeoFqdnMap" $xmlAnsw.Response.Success.Data.fqdn + + if ($data) { + foreach($map in $data.map) { + if ($map.IPAddress -eq $SiteAddress) { + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoFqdnMap" + $ht.add("GeoFqdnMap", $map) + + New-Object -TypeName PSObject -Property $ht + return + } + } + } + return $null +} + +# Internal use only +Function SetGetGeoCustomLocationReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "GeoCustomLocation" $xmlAnsw.Response.Success.Data.location + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoCustomLocation" + if ($data.location) { + $ht.add("GeoCustomLocation", $data.location) + } + else { + $ht.add("GeoCustomLocation", $data) + } + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetGeoIpRangeReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "GeoIpRange" $xmlAnsw.Response.Success.Data + + $ht = [ordered]@{} + $ht.PSTypeName = "IpRange" + if ($data.IPAddress) { + foreach ($item in $data.IPAddress) { + if ($item.Country -eq -1) { + $item.Country = "" + } + } + $ht.add("IpRange", $data.IPAddress) + } + else { + if ($data.Country -eq -1) { + $data.Country = "" + } + $ht.add("IpRange", $data) + } + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetTestLmGeoEnabledReturnObject($xmlAnsw) +{ + $data = $xmlAnsw.Response.Success.Data + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoStatus" + + if ($data) { + $ht.add("GeoStatus", $data) + } + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetGeoPartnerStatusReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "GeoPartners" $xmlAnsw.Response.Success.Data.GeoPartners + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoPartners" + if ($data.Partner) { + $ht.add("GeoPartners", $data.Partner) + } + else { + $ht.add("GeoPartners", $null) + } + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetGeoIPBlacklistDatabaseConfigurationReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "GeoBlacklistDbConf" $xmlAnsw.Response.Success.Data.GeoAcl + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoBlacklistDbConf" + $ht.add("GeoBlacklistDbConf", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetGeoIPWhitelistReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "GeoWhitelist" $xmlAnsw.Response.Success.Data.Whitelist + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoWhiteList" + $ht.add("GeoWhiteList", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetExportGeoIPWhitelistDatabaseReturnObject($xmlAnsw, $cmdOptions) +{ + $data = GetPSObjectFromXml "GeoWhitelist" $xmlAnsw.Response.Success.Data.Whitelist + + $filename = $cmdOptions.filename + $forceSwitch = $cmdOptions.force + + $today = Get-Date + + if ($forceSwitch) { + Out-File $filename + } + else { + Out-File $filename -NoClobber + } + + Add-Content $filename "----------------------------------------------" + Add-Content $filename " Whitelisted IPs ($today)" + Add-Content $filename "----------------------------------------------" + + if ($data.addr) { + foreach ($ip in $data.addr) { + Add-Content $filename "$ip" + } + } + return $null +} + +# Internal use only +Function SetGetGeoDNSSECConfigurationReturnObject($xmlAnsw) +{ + $ksk_data = GetPSObjectFromXml "GeoDNSSECKSk" $xmlAnsw.Response.Success.Data.KSK + $dnssec_data = GetPSObjectFromXml "GeoDNSSECStatus" $xmlAnsw.Response.Success.Data.DNSSEC + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoDnsSecConfiguration" + $ht.add("PublicKey", $ksk_data.PublicKey) + $ht.add("DS_SHA1", $ksk_data.DS_SHA1) + $ht.add("DS_SHA2", $ksk_data.DS_SHA2) + if ($dnssec_data.Enable -eq "Y") { + $ht.add("DNSSECStatus", "enabled") + } + else { + $ht.add("DNSSECStatus", "disabled") + } + + $dnssecHt = New-Object -TypeName PSObject -Property $ht + $dnssecConf = [ordered]@{} + $dnssecConf.PSTypeName = "GeoDnsSecConfiguration" + $dnssecConf.Add("GeoDnsSecConfiguration", $dnssecHt) | Out-null + New-Object -TypeName PSObject -Property $dnssecConf +} + +# Internal use only +Function SetGetGeoLmMiscParameterReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "GeoMiscParameters" $xmlAnsw.Response.Success.Data + + if ( ([String]::IsNullOrEmpty($data.soa.Zone)) ) { + $data.soa | Add-Member -NotePropertyName "Zone" -NotePropertyValue "" + } + + if ( ([String]::IsNullOrEmpty($data.soa.SourceOfAuthority)) ) { + $data.soa | Add-Member -NotePropertyName "SourceOfAuthority" -NotePropertyValue "" + } + + if ( ([String]::IsNullOrEmpty($data.soa.NameSrv)) ) { + $data.soa | Add-Member -NotePropertyName "NameSrv" -NotePropertyValue "" + } + + if ( ([String]::IsNullOrEmpty($data.soa.SOAEmail)) ) { + $data.soa | Add-Member -NotePropertyName "SOAEmail" -NotePropertyValue "" + } + + $ht = [ordered]@{} + $ht.PSTypeName = "GeoMiscParameters" + $ht.add("GeoMiscParameters", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetVSPacketFilterACLReturnObject($xmlAnsw, $aclType) +{ + $data = GetPSObjectFromXml "VsAclData" $xmlAnsw.Response.Success.Data.VS + + $ht = [ordered]@{} + $ht.PSTypeName = "VsAclConfiguration" + $ht.add("VS_IP", $data.VS_IP) + $ht.add("VS_Port", $data.VS_Port) + $ht.add("VS_Protocol", $data.VS_Protocol) + switch ($aclType) + { + "black" { + $ht.add("Blacklist", $data.Blacklist.IP) + break + } + + "white" { + $ht.add("Whitelist", $data.WhiteList.IP) + break + } + } + + $vsAclData = New-Object -TypeName PSObject -Property $ht + $vsAclConf = [ordered]@{} + $vsAclConf.PSTypeName = "VsAclConfiguration" + $vsAclConf.Add("VsAclConfiguration", $vsAclData) | Out-null + + New-Object -TypeName PSObject -Property $vsAclConf +} + +# Internal use only +Function SetNewVSPacketFilterACLReturnObject($xmlAnsw) +{ + return $null +} + +# Internal use only +Function SetRemoveVSPacketFilterACLReturnObject($xmlAnsw) +{ + return $null +} + +# Internal use only +Function SetGetPacketFilterOptionReturnObject($xmlAnsw, $Type) +{ + switch ($Type) + { + "isenabled" { + $dataString = "aclstatus" + break + } + "isdrop" { + $dataString = "aclmethod" + break + } + "isifblock" { + $dataString = "aclblockall" + break + } + } + $data = $xmlAnsw.Response.Success.Data.$dataString + + $ht = [ordered]@{} + $ht.PSTypeName = "PacketFilterOption" + $ht.add($dataString, $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetGlobalPacketFilterACLReturnObject($xmlAnsw, $aclType) +{ + $ht = [ordered]@{} + switch ($aclType) + { + "black" { + $ht.PSTypeName = "AclBlacklist" + $data = GetPSObjectFromXml "AclData" $xmlAnsw.Response.Success.Data.Blacklist + $ht.add("Blacklist", $data.IP) + break + } + + "white" { + $ht.PSTypeName = "AclWhitelist" + $data = GetPSObjectFromXml "AclData" $xmlAnsw.Response.Success.Data.Whitelist + $ht.add("Whitelist", $data.IP) + break + } + } + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetLmIPConnectionLimitReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "LmIPConnectionLimit" $xmlAnsw.Response.Success.Data.ClientLimit + + $ht = [ordered]@{} + $ht.PSTypeName = "LmIPConnectionLimit" + if ($data.ClientLimit) { + $ht.add("LmIPConnectionLimit", $data.ClientLimit) + } + else { + $ht.add("LmIPConnectionLimit", $data) + } + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetAzureHAConfigurationReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "AzureHAConfiguration" $xmlAnsw.Response.Success.Data.AzureHA + + if ($data.Port) { + renameCustomObjectProperty $data "Port" "HealthCheckPort" + } + + if ($data.HaPrefered) { + renameCustomObjectProperty $data "HaPrefered" "Hapreferred" + } + + if ($data.HealthCheckAllInterfaces) { + if ($data.HealthCheckAllInterfaces -eq "unset") { + $data.HealthCheckAllInterfaces = "no" + } + } + + $ht = [ordered]@{} + $ht.PSTypeName = "AzureHAConfiguration" + $ht.add("AzureHAConfiguration", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetAwsHAConfigurationReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "AwsHAConfiguration" $xmlAnsw.Response.Success.Data.AwsHA + + if ($data.Port) { + renameCustomObjectProperty $data "Port" "HealthCheckPort" + } + + if ($data.HealthCheckAllInterfaces) { + if ($data.HealthCheckAllInterfaces -eq "unset") { + $data.HealthCheckAllInterfaces = "no" + } + } + + $ht = [ordered]@{} + $ht.PSTypeName = "AwsHAConfiguration" + $ht.add("AwsHAConfiguration", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetLmCloudHaConfiguration($xmlAnsw) +{ + if ($xmlAnsw.Response.Success.Data.AzureHA) { + return SetGetAzureHAConfigurationReturnObject $xmlAnsw + } + + if ($xmlAnsw.Response.Success.Data.AwsHA) { + return SetGetAwsHAConfigurationReturnObject $xmlAnsw + } + + Throw "Unknow cloud platform or not a cloud VLM." + return +} + +# Internal use only +Function SetGetLmDebugInformationReturnObject($xmlAnsw, $type) +{ + if ($type -eq "slabinfo") { + $data = GetPSObjectFromXml $type $xmlAnsw.Response.Success.Data.$type "notrim" + if ($data.$type.data) { + $data.$type.data = $data.$type.data.split("`n") + } + } + else { + $data = $xmlAnsw.Response.Success.Data + } + + $ht = [ordered]@{} + $ht.PSTypeName = $type + $ht.add($type, $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetPingHostReturnObject($xmlAnsw) +{ + $data = $xmlAnsw.Response.Success + + if ($data) { + $StatsPos1 = $data.IndexOf("ping statistics") + "ping statistics --- ".Length + $StatsPos2 = $data.IndexOf("received") + "received".Length + $trPcksString = $data.Substring($StatsPos1, $StatsPos2 - $StatsPos1) + $cPos = $trPcksString.IndexOf(",") + $tPackets = $trPcksString.Substring(0, $cPos) + $rPackets = $trPcksString.Substring($cPos + 2) + + $PLPos = $data.IndexOf("packet loss") + "packet loss".Length + $lossPackets = $data.Substring($StatsPos2 + 2, ($PLPos - $StatsPos2 - 2)) + + $timePos = $data.IndexOf("time ") + $rttPos = $data.IndexOf("rtt min/avg/max/mdev") + $timeStr = $data.Substring($timePos, ($rttPos - $timePos)) + $rtt = $data.Substring($rttPos) + + $endPingResult = $data.IndexOf(" --- ") + $PingResult = $data.Substring(0, $endPingResult) + + $pingData = [ordered]@{} + + $pingData.Add("PingResult", $PingResult) + $pingData.Add("PacketsTransmitted", $tPackets) + $pingData.Add("PacketsReceived", $rPackets) + $pingData.Add("PacketsLoss", $lossPackets) + $pingData.Add("Time", $timeStr) + $pingData.Add("Rtt", $rtt) + + $PingObject = New-Object -TypeName PSObject -Prop $pingData + + $ht = [ordered]@{} + $ht.PSTypeName = "PingData" + $ht.add("PingData", $PingObject) + + New-Object -TypeName PSObject -Property $ht + } + else { + return $null + } +} + +# Internal use only +Function SetGetAslLicenseTypeReturnObject($xmlAnsw) +{ + $data = $xmlAnsw.Response.Success + + if (([String]::IsNullOrEmpty($data))) { + return $null + } + + $ht = [ordered]@{} + $ht.PSTypeName = "AslLicenseType" + + if ($data.Contains("License type information not available")) { + $ht.add("License", $data) + } + elseif ($data -ne "[]") { + $TempLicObject = $data | ConvertFrom-Json + $LicObject = [ordered]@{} + $LicObject.PSTypeName = "LicenseData" + $licNumber = $TempLicObject.categories.licenseTypes.Length + if (([String]::IsNullOrEmpty($licNumber))) { + $licNumber = 1 + } + #$LicObject.Add("OrderID", $OrderId) + $LicObject.Add("AvailableLicenses", $licNumber) + $LicObject.Add("Licenses", $TempLicObject.categories.licenseTypes) + + $licData = New-Object -TypeName PSObject -Prop $LicObject + + $ht.add("License", $licData.Licenses) + $ht.add("AvailableLicenses", $licData.AvailableLicenses) + } + else { + # No licenses available + $emptyLicObject = [ordered]@{} + $emptyLicObject.PSTypeName = "LicenseData" + #$emptyLicObject.Add("OrderID", $OrderId) + $emptyLicObject.Add("AvailableLicenses", 0) + $emptyLicObject.Add("Licenses", $null) + $licData = New-Object -TypeName PSObject -Prop $emptyLicObject + + $ht.add("License", $licData) + $ht.add("AvailableLicenses", 0) + } + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetGetLmVpnIkeDaemonStatusReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "IkeDaemonStatus" $xmlAnsw.Response.Success.Data + + $ht = [ordered]@{} + $ht.PSTypeName = "IkeDaemonStatus" + $ht.add("IkeDaemonStatus", $data.status) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetNewLmVpnConnectionReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "NewVpnConfiguration" $xmlAnsw.Response.Success.Data + + $ht = [ordered]@{} + $ht.PSTypeName = "NewVpnConfiguration" + $ht.add("status", $data.status) + $ht.add("defaultLocalIP", $data.defaultLocalIP) + $ht.add("defaultLocalSubnets", $data.defaultLocalSubnets) + $ht.add("defaultLocalID", $data.defaultLocalID) + + $vpnData = New-Object -TypeName PSObject -Property $ht + + $vpnConf = [ordered]@{} + $vpnConf.PSTypeName = "NewVpnConfiguration" + $vpnConf.Add("NewVpnConfiguration", $vpnData) | Out-null + + New-Object -TypeName PSObject -Property $vpnConf +} + +# Internal use only +Function SetNewGlobalPacketFilterACLReturnObject($xmlAnsw) +{ + return $null +} + +# Internal use only +Function SetGetClusterStatusReturnObject($xmlAnsw) +{ + $data = GetPSObjectFromXml "ClusterConfiguration" $xmlAnsw.Response.Success.Data + + $ht = [ordered]@{} + $ht.PSTypeName = "ClusterConfiguration" + + $ht.add("ClusterConfiguration", $data.status) + + New-Object -TypeName PSObject -Property $ht +} + +# Internal use only +Function SetNewClusterReturnObject($xmlAnsw) +{ + $data = $xmlAnsw.Response.Success + + $ht = [ordered]@{} + $ht.PSTypeName = "NewCluster" + + $ht.add("NewCluster", $data) + + New-Object -TypeName PSObject -Property $ht +} + +# Function "pointers" hashtable: success lm answer handlers +$successHandlerList = [ordered]@{ + GeneralCase = (gi function:SetGeneralCaseReturnObject) + + SetInitialPasswd = (gi function:SetGeneralCaseReturnObject) + + GetLicenseAccessKey = (gi function:SetGetLicenseAccessKeyReturnObject) + GetLicenseType = (gi function:SetGetLicenseTypeReturnObject) + GetLicenseInfo = (gi function:SetGetLicenseInfoReturnObject) + RequestLicenseOnPremise = (gi function:SetLicenseOnPremiseReturnObject) + GetAslLicenseType = (gi function:SetGetAslLicenseTypeReturnObject) + + NewAdcVS = (gi function:SetAdcVSSettingsReturnObject) + SetAdcVS = (gi function:SetAdcVSSettingsReturnObject) + GetAdcVS_Single = (gi function:SetAdcVSSettingsReturnObject) + GetAdcVS_List = (gi function:SetAdcVSSettingsReturnObject) + NewAdcRS = (gi function:SetRSSettingReturnObject) + RemoveAdcVS = (gi function:SetGeneralCaseReturnObject) + GetVSTotals = (gi function:SetGetVSTotalsReturnObject) + GetAdcRealServer = (gi function:SetGetAdcRealServerReturnObject) + + AddAdcContentRule = (gi function:SetAdcContentRuleReturnObject) + SetAdcContentRule = (gi function:SetAdcContentRuleReturnObject) + GetAdcContentRule = (gi function:SetAdcContentRuleReturnObject) + + GetAdcServiceHealth = (gi function:SetAdcServiceHealthReturnObject) + AdcAdaptiveHealthCheck = (gi function:SetAdcAdaptiveHealthCheckReturnObject) + + AdcWafVSRules = (gi function:SetAdcWafVSRulesReturnObject) + + GetAllSecUser = (gi function:SetGetSecUserReturnObject) + GetSingleSecUser = (gi function:SetGetSecUserReturnObject) + + GetNetworkInterface = (gi function:SetNetworkInterfaceReturnObject) + GetLmNetworkInterface = (gi function:SetGetLmNetworkInterfaceReturnObject) + + GetTlsCertificate = (gi function:SetTLSCertificateReturnObject) + GetTlsCipherSet = (gi function:SetGetTLSCipherSetReturnObject) + TlsHSM = (gi function:SetTLSHSMReturnObject) + + GetSSODomain = (gi function:SetGetSSODomainReturnObject) + GetSSOSamlDomain = (gi function:SetGetSSOSamlDomainReturnObject) + GetSSODomainLockedUser = (gi function:SetSSODomainLockUnLockAnswerReturnObject) + SetSSODomainLockedUser = (gi function:SetSSODomainLockUnLockAnswerReturnObject) + GetSSODomainSession = (gi function:SetGetSSODomainSessionReturnObject) + + GetLdapEndpoint = (gi function:SetGetLdapEndpointReturnObject) + + InstallTemplate = (gi function:SetInstallTemplateReturnObject) + GetTemplate = (gi function:SetGetTemplateReturnObject) + ExportVSTemplate = (gi function:SetExportVSTemplateReturnObject) + + GetLogStatistics = (gi function:SetGetLogStatisticsReturnObject) + + GetWafRules = (gi function:SetGetWafRulesReturnObject) + GetWafRulesAutoUpdateConfiguration = (gi function:SetGetWafRulesAutoUpdateConfigurationReturnObject) + GetWafAuditFiles = (gi function:SetGetWafAuditFilesReturnObject) + + GetAllParameters = (gi function:SetGetAllParametersReturnObject) + + GetNetworkRoute = (gi function:SetGetNetworkRouteReturnObject) + TestNetworkRoute = (gi function:SetTestNetworkRouteReturnObject) + + AddNetworkVxLAN = (gi function:SetAddNetworkVxLANReturnObject) + AddNetworkVLAN = (gi function:SetAddNetworkVLANReturnObject) + GetLmVpnIkeDaemonStatus = (gi function:SetGetLmVpnIkeDaemonStatusReturnObject) + NewLmVpnConnection = (gi function:SetNewLmVpnConnectionReturnObject) + GetVpnConnection = (gi function:SetGetVpnConnectionReturnObject) + + GetHosts = (gi function:SetGetHostsReturnObject) + + AddSdnController = (gi function:SetAddSdnControllerReturnObject) + GetSdnController = (gi function:SetGetSdnControllerReturnObject) + SetSdnController = (gi function:SetSetSdnControllerReturnObject) + RemoveSdnController = (gi function:SetRemoveSdnControllerReturnObject) + + InstallLmPatch = (gi function:SetInstallLmPatchReturnObject) + UninstallLmPatch = (gi function:SetUninstallLmPatchReturnObject) + GetLmPreviousFirmwareVersion = (gi function:SetGetLmPreviousFirmwareVersionReturnObject) + + InstallLmAddon = (gi function:SetInstallLmAddonReturnObject) + GetLmAddOn = (gi function:SetGetLmAddOnReturnObject) + + GetGeoFQDN = (gi function:SetGetGeoFqdnReturnObject) + GetGeoCluster = (gi function:SetGetGeoClusterReturnObject) + AddGeoCluster = (gi function:SetAddGeoClusterReturnObject) + SetGeoCluster = (gi function:SetSetGeoClusterReturnObject) + SetGeoFQDNSiteAddress = (gi function:SetSetGeoFQDNSiteAddressReturnObject) + GetGeoCustomLocation = (gi function:SetGetGeoCustomLocationReturnObject) + GetGeoIpRange = (gi function:SetGetGeoIpRangeReturnObject) + TestLmGeoEnabled = (gi function:SetTestLmGeoEnabledReturnObject) + GetGeoPartnerStatus = (gi function:SetGetGeoPartnerStatusReturnObject) + GetGeoIPBlacklistDatabaseConfiguration = (gi function:SetGetGeoIPBlacklistDatabaseConfigurationReturnObject) + GetGeoIPWhitelist = (gi function:SetGetGeoIPWhitelistReturnObject) + ExportGeoIPWhitelistDatabase = (gi function:SetExportGeoIPWhitelistDatabaseReturnObject) + GetGeoDNSSECConfiguration = (gi function:SetGetGeoDNSSECConfigurationReturnObject) + GetGeoLmMiscParameter = (gi function:SetGetGeoLmMiscParameterReturnObject) + GetGeoStats = (gi function:SetGetGeoStatsReturnObject) + + GetVSPacketFilterACL = (gi function:SetGetVSPacketFilterACLReturnObject) + NewVSPacketFilterACL = (gi function:SetNewVSPacketFilterACLReturnObject) + RemoveVSPacketFilterACL = (gi function:SetRemoveVSPacketFilterACLReturnObject) + GetPacketFilterOption = (gi function:SetGetPacketFilterOptionReturnObject) + GetGlobalPacketFilterACL = (gi function:SetGetGlobalPacketFilterACLReturnObject) + NewGlobalPacketFilterACL = (gi function:SetNewGlobalPacketFilterACLReturnObject) + + GetLmIPConnectionLimit = (gi function:SetGetLmIPConnectionLimitReturnObject) + + GetAzureHAConfiguration = (gi function:SetGetAzureHAConfigurationReturnObject) + GetAwsHaConfiguration = (gi function:SetGetAwsHAConfigurationReturnObject) + GetLmCloudHaConfiguration = (gi function:SetGetLmCloudHaConfiguration) + + GetLmDebugInformation = (gi function:SetGetLmDebugInformationReturnObject) + PingHost = (gi function:SetPingHostReturnObject) + + NewCluster = (gi function:SetNewClusterReturnObject) + GetClusterStatus = (gi function:SetGetClusterStatusReturnObject) +} + +# Internal use only +Function HandleSuccessAnswer($Command2ExecClass, $xmlAnsw, $AdditionalData) +{ + $SuccessString = "Command successfully executed." + + & $successHandlerList.$Command2ExecClass $xmlAnsw $AdditionalData | Tee-Object -Variable response | Out-null + + setKempAPIReturnObject 200 $SuccessString $response +} + +# Internal use only +Function SetPingErrorResponse($pingErrorResponse) +{ + $StatsPos1 = $pingErrorResponse.IndexOf("ping statistics") + "ping statistics --- ".Length + $StatsPos2 = $pingErrorResponse.IndexOf("received") + "received".Length + $trPcksString = $pingErrorResponse.Substring($StatsPos1, $StatsPos2 - $StatsPos1) + + $cPos = $trPcksString.IndexOf(",") + $tPackets = $trPcksString.Substring(0, $cPos) + $rPackets = $trPcksString.Substring($cPos + 2) + + $errStringCheck = $pingErrorResponse.IndexOf("errors") + if ($errStringCheck -gt 0) { + $ErrorPos = $pingErrorResponse.IndexOf("errors") + "errors,".Length + $Errors = $pingErrorResponse.Substring($StatsPos2 + 2, ($ErrorPos - $StatsPos2 - 3)) + } + else { + $Errors = "" + } + + $PLPos = $pingErrorResponse.IndexOf("packet loss") + "packet loss".Length + if ($errStringCheck -gt 0) { + $lossPackets = $pingErrorResponse.Substring($ErrorPos + 1, ($PLPos - $ErrorPos - 1)) + } + else { + $lossPackets = $pingErrorResponse.Substring($StatsPos2 + 2, ($PLPos - $StatsPos2 - 2)) + $tmp = $pingErrorResponse.Substring($StatsPos2 + 2) + $eTPos = $tmp.IndexOf(", time ") + ", time ".Length + $elapsedTime = $tmp.Substring($eTPos) + } + + $endPingResult = $pingErrorResponse.IndexOf(" --- ") + $PingResult = $pingErrorResponse.Substring(0, $endPingResult) + + $pingData = [ordered]@{} + + $pingData.Add("PingResult", $PingResult) + $pingData.Add("PacketsTransmitted", $tPackets) + $pingData.Add("PacketsReceived", $rPackets) + $pingData.Add("Errors", $Errors) + $pingData.Add("PacketsLoss", $lossPackets) + $pingData.Add("Time", $elapsedTime) + + New-Object -TypeName PSObject -Prop $pingData +} + +# Internal use only +Function HandleErrorAnswer($Command2ExecClass, $xmlAnsw) +{ + # + # FIXME: to change the logic: if the cmd does not need a specific handler, + # then the answer will be handled by the default case. + # + switch ($Command2ExecClass) + { + { ($_ -in "GeneralCase", "NewAdcVS", "GetAdcVS_Single", "GetAdcVS_List", "SetAdcVS", "NewAdcRS", "VirtualServiceRule", "RealServerRule", "EnableDisableRS", "GetSetAdcRS", "RemoveAdcRS", "AddAdcContentRule", "RemoveAdcContentRule", "SetAdcContentRule", "GetAdcContentRule", "GetAdcServiceHealth","AdcHttpExceptions", "AdcAdaptiveHealthCheck", "AdcWafVSRules", "AddRemoveAdcWafRule", "GetLicenseAccessKey", "GetLicenseType", "GetLicenseInfo", "RequestLicenseOnline", "RequestLicenseOffline", "UpdateLicenseOnline", "UpdateLicenseOffline", "RequestLicenseOnPremise", "GetAllSecUser", "GetSingleSecUser", "GetNetworkInterface", "GetAllParameters", "GetLmNetworkInterface", "GetTlsCertificate", "GetTlsCipherSet", "TlsHSM", "GetSSODomain", "GetSSOSamlDomain", "GetSSODomainLockedUser", "SetSSODomainLockedUser", "GetSSODomainSession", "InstallTemplate", "ExportVSTemplate", "GetTemplate", "GetLogStatistics", "GetWafRules", "GetWafRulesAutoUpdateConfiguration", "GetWafAuditFiles", "GetGeoFQDN", "GetGeoStats", "AddGeoCluster", "SetGeoCluster", "AddNetworkVxLAN", "AddNetworkVLAN", "GetNetworkRoute", "TestNetworkRoute", "GetHosts", "GetVSTotals", "GetLdapEndpoint", "GetVpnConnection", "InstallLmAddon", "GetLmAddOn", "InstallLmPatch", "UninstallLmPatch", "GetLmPreviousFirmwareVersion", "AddSdnController", "SetSdnController", "GetSdnController", "RemoveSdnController", "GetAdcRealServer", "SetGeoFQDNSiteAddress", "GetGeoCustomLocation", "GetGeoIpRange", "TestLmGeoEnabled", "GetGeoPartnerStatus", "GetGeoIPBlacklistDatabaseConfiguration", "GetGeoIPWhitelist", "ExportGeoIPWhitelistDatabase", "GetGeoDNSSECConfiguration", "GetGeoLmMiscParameter", "GetVSPacketFilterACL", "GetPacketFilterOption", "GetGlobalPacketFilterACL", "GetLmIPConnectionLimit", "GetAzureHAConfiguration", "GetAwsHaConfiguration", "GetLmCloudHaConfiguration", "GetLmDebugInformation", "GetAslLicenseType", "GetLmVpnIkeDaemonStatus", "NewLmVpnConnection", "GetClusterStatus", "NewCluster") } { + $errMsg = $xmlAnsw.Response.Error + } + + { ($_ -in "RemoveAdcVS") } { + $errMsg = $xmlAnsw.Response.Error + if ($errMsg -and $errMsg.Contains("Unknown VS")) { + $errMsg += ". Has it already been deleted?" + } + } + + { ($_ -in "SetInitialPasswd") } { + if ($xmlAnsw.Response.stat -eq 405) { + $errMsg = "Method not allowed" + } + elseif ($xmlAnsw.Response.stat -eq 500) { + $errMsg = "Method not allowed" + } + else { + $errMsg = $xmlAnsw.Response.Error + } + } + + { ($_ -in "GetGeoCluster") } { + $errMsg = $xmlAnsw.Response.Error + if ($errMsg -and $errMsg.Contains("No geo data found")) { #NOTE: this must be fixed on the LM side + $errMsg = "Cluster NOT found." + } + } + + { ($_ -in "NewVSPacketFilterACL", "NewGlobalPacketFilterACL") } { #NOTE: this must be fixed on the LM side + $errMsg = $xmlAnsw.Response.Error + if ($errMsg -and $errMsg.Contains("Invalid address")) { + $xmlAnsw.Response.stat = "422" + if ($errMsg.Contains("+")) { + $errMsg = "Invalid Virtual Service." + } + else { + $errMsg = "Invalid ACL address." + } + } + } + + { ($_ -in "RemoveVSPacketFilterACL") } { + $errMsg = $xmlAnsw.Response.Error + if ($errMsg -and $errMsg.Contains("vipdump")) { #NOTE: this must be fixed on the LM side + $errMsg = "Invalid Virtual Service." + } + } + + { ($_ -in "PingHost") } { + $errMsg = "Command Failed" + if ($xmlAnsw.Response.Error) { + if ($xmlAnsw.Response.Error.Contains("Invalid address format")) { + $errMsg += ": Invalid address format" + } + elseif ($xmlAnsw.Response.Error.Contains("Unknown command")) { + $errMsg += ": Unknown command" + } + else { + $pingErrorObject = SetPingErrorResponse $xmlAnsw.Response.Error + } + } + setKempAPIReturnObject $xmlAnsw.Response.stat "$errMsg" $pingErrorObject + return + } + + default { + $errMsg = "[HandleErrorAnswer] Unknown Object class [$Command2ExecClass]" + } + } + setKempAPIReturnObject $xmlAnsw.Response.stat "$errMsg" $null +} + +# Internal use only +Function isXml($rawData) +{ + if ($rawData) { + try { + $xmlData = [xml]$rawData + return $true + } + catch { + return $false + } + } + return $false +} + +# Internal use only +Function getXmlData($rawData) +{ + if ($rawData) { + if ( (isXml $rawData) ) { + $xmlData = [xml]$rawData + return $xmlData + } + else { + try { + $rt = $rawData.Response.stat + if ($rt -eq 200 -or $rt -ge 400) { + return $rawData + } + else { + return $null + } + } + catch { + return $null + } + } + return $null + } + return $null +} + +# Internal use only +Function HandleLmAnswer +{ + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Command2ExecClass, + + [Parameter(Mandatory=$true)] + $LmResponse, + + $AdditionalData + ) + + $xmlAnsw = getXmlData $LmResponse + if ($xmlAnsw) { + if ($xmlAnsw.Response.stat -eq 200 -or $xmlAnsw.Response.stat -eq "ok") { + # command successfully executed: the answer can be cmdlet specific + HandleSuccessAnswer $Command2ExecClass $xmlAnsw $AdditionalData + } + else { + # command failure: the error can be cmdlet specific + HandleErrorAnswer $Command2ExecClass $xmlAnsw + } + } + else { + $check = checkLmOkResponse $LmResponse + if ($check -eq $true) { + setKempAPIReturnObject 200 "Command successfully executed." $null + } + else { + # COMMON errors (i.e. Unauthorized) + if ($Command2ExecClass -eq "ExportVSTemplate" -and $LmResponse -eq "Unauthorized") { + $LmResponse = "The remote server returned an error: (401) Unauthorized." + } + $errMsg = $LmResponse + $errCode = getErrorCode $errMsg + setKempAPIReturnObject $errCode "$errMsg" $null + } + } +} + +# -------------------------------------------------------------------------------------------- +# SendCmdToLm helper functions +# -------------------------------------------------------------------------------------------- +# Internal use only +Function validateFile2Upload($file, $Output) +{ + if ($file -and -not($Output)) { + if ( -not (Test-Path -Path $file) ) { + $errStr = "ERROR: The input file does not exist. Please check your input." + Write-Verbose $errStr + Throw $errStr + } + } +} + +# Internal use only +Function validateDownloadFileName($Output) +{ + if ($Output) { + # FIXME To check: + # 1) if the containing folder exist + # 2) if it's possible to write in that folder + # + } +} + +# Internal use only +Function SetSingleParamUrl($LmIp, $LmPort, $Cmd, $ParamName, $ParamValue) +{ + $tmpUrl = New-Object Text.StringBuilder + + $tmpUrl.Append("https://$LmIp`:$LmPort/access/$Cmd`?") | Out-Null + + if ($ParamValue) { + $tmpUrl.Append("param=$ParamName&value=$ParamValue") | Out-Null + } + else { + if ($ParamName) { + $tmpUrl.Append("param=$ParamName") | Out-Null + } + else { + if ($Cmd -eq "Get" -or $Cmd -eq "get") { + $errStr = "ERROR: missing parameter name." + Write-Verbose $errStr + Throw $errStr + } + else { + # NOTHING TODO + } + } + } + $url = $tmpUrl.ToString() -replace "\&$" + + $urlLen = $url.Length + $urlLastChar = $url[$urlLen - 1] + if ($urlLastChar -eq "?") { + $url = $url.Substring(0, $urlLen - 1) + } + Write-Verbose "[SetSingleParamUrl] command url: $url" + + return $url +} + +# Internal use only +Function SetMultipleParamUrl($LmIp, $LmPort, $Cmd, $ParamValuePair) +{ + $tmpUrl = New-Object Text.StringBuilder + $tmpUrl2Print = New-Object Text.StringBuilder + + $tmpUrl.Append("https://$LmIp`:$LmPort/access/$Cmd`?") | Out-Null + $tmpUrl2Print.Append("https://$LmIp`:$LmPort/access/$Cmd`?") | Out-Null + + ForEach ($key in $ParamValuePair.keys) { + + if ($key -eq "password" -or $key -eq "passwd") { + Write-Verbose "ParamName=`"$key`" - ParamValue=`"*****`"" + $tmpUrl2Print.Append("$key=*****&") | Out-Null + } + else { + Write-Verbose "ParamName=`"$key`" - ParamValue=`"$($ParamValuePair[$key])`"" + $tmpUrl2Print.Append("$key=$($ParamValuePair[$key])&") | Out-Null + } + $tmpUrl.Append("$key=$($ParamValuePair[$key])&") | Out-Null + } + $url = $tmpUrl.ToString() -replace "\&$" + $url2print = $tmpUrl2Print.ToString() -replace "\&$" + + $urlLen = $url.Length + $urlLastChar = $url[$urlLen - 1] + if ($urlLastChar -eq "?") { + $url = $url.Substring(0, $urlLen - 1) + } + + $urlLen = $url2print.Length + $urlLastChar = $url2print[$urlLen - 1] + if ($urlLastChar -eq "?") { + $url2print = $url2print.Substring(0, $urlLen - 1) + } + Write-Verbose "[SetMultipleParamUrl] command url: $url2print" + + return $url +} + +# Internal use only +Function SetCmdUrl($PSetName, $LmIp, $LmPort, $Command, $ParameterValuePair, $ParameterName, $ParameterValue) +{ + if ($PSetName -eq "SingleParam") { + $url = SetSingleParamUrl $LmIp $LmPort $Command $ParameterName $ParameterValue + } + elseif ($PSetName -eq "MultiParam") { + $url = SetMultipleParamUrl $LmIp $LmPort $Command $ParameterValuePair + } + else { + $errStr = "ERROR: NULL parameter set." + Write-Verbose $errStr + Throw $errStr + } + return $url +} + +# Internal use only +Function CreateLmHttpsRequest($url, $cred, $loginCert, $loginCertStore) +{ + if (([String]::IsNullOrEmpty($url))) { + $errStr = "ERROR: the url to connect to is null." + Write-Verbose $errStr + Throw $errStr + } + + [System.Net.ServicePointManager]::Expect100Continue = $true + [System.Net.ServicePointManager]::MaxServicePointIdleTime = 10000 + Write-Verbose "setting ServerCertificateValidationCallback to TRUE." + [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} + [System.Net.ServicePointManager]::SecurityProtocol = 'Tls11','Tls12' + + $request = [System.Net.HttpWebRequest]::Create($url) + $request.UserAgent = "KempLoadBalancerPowershellModule" + $request.KeepAlive = $false + + if (-not ([String]::IsNullOrEmpty($loginCert))) { + + $LCert = Get-LoginCertificate $loginCertStore $loginCert + if ($LCert -ne $null) { + $tmp = $request.ClientCertificates.Add($LCert) + } + else { + $errStr = "ERROR: Can't find certificate with $SubjectCN." + Write-Verbose $errStr + Throw $errStr + } + Write-Verbose "Running the API command using the certificate `"$loginCert`" as login credential." + } + else { + if ($cred) { + Write-Verbose "Running the API command using the specified login/password (user: `"$($cred.UserName)`") as login credential." + $request.Credentials = $cred + } + else { + Write-Verbose "WARNING: Running the API command with NO credential. Is it OK?" + } + } + return $request +} + +# Internal use only +Function UploadFile2Lm($File, $request) +{ + Write-Verbose "There is a file to upload." + + if (-not (Test-Path $File) ) { + Throw "ERROR: the file $File does not exist" + return + } + + $fd = Get-Item -Path $File + + $datalength = $fd.Length + Write-Verbose "File length: $datalength" + + #$request.SendChunked = $true + $request.KeepAlive = $false + $request.Timeout = 500000 + + #$request.protocolversion = [System.Net.HttpVersion]::Version10 + + $request.method = "POST" + $request.ContentType = "application/x-www-form-urlencoded" + + Write-Verbose "Reading file..." + + $dn = $fd.DirectoryName + $fn = $fd.Name + $ft = $dn + "\" + $fn + Write-Verbose "File to upload: $ft" + + $fileStream = New-Object IO.FileStream($ft, "Open", "Read") + $binaryReader = New-Object IO.BinaryReader($fileStream) + $data = $binaryReader.ReadBytes([int]$datalength) + + Write-Verbose "Cleaning up readers." + $binaryReader.close() + + Write-Verbose "Getting request stream." + $stream = $request.GetRequestStream() + $binaryWriter = New-Object IO.BinaryWriter($stream) + + $sd = date -Format HH:mm:ss:ms + Write-Verbose "START Writing the data to the stream (time: $sd)" + $binaryWriter.Write($data, 0, $data.length) + $ed = date -Format HH:mm:ss:ms + Write-Verbose "END Writing the data to the stream (time: $ed)" + + $binaryWriter.Flush() + $binaryWriter.Close() +} + +# Internal use only +Function SetLoginConnectionErrorAnswer($ExError) +{ + $errMsg1 = $ExError.Exception.Message + $errMsg2 = $ExError.Exception.InnerException.Message + + if (!$errMsg2) { + if ($LmTestServerConnectionFlag -eq $false) { + Write-Verbose "Exception Message......: [$errMsg1]." + } + $response = $ExError.Exception.Response + } + else { + Write-Verbose "Inner Exception Message: [$errMsg2]." + $response = $null + } + Write-Verbose "setting ServerCertificateValidationCallback to NULL." + [System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null + return $response +} + +# Internal use only +Function CloseConnectionWithLm($reader, $stream, $filestream, $response) +{ + Write-Verbose "setting ServerCertificateValidationCallback to NULL." + [System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null + + Write-Verbose "closing connection." + if ($reader) { + $reader.Close() + $reader.Dispose() + } + + if ($stream) { + $stream.Close() + $stream.Dispose() + } + + if ($fileStream) { + $fileStream.Close() + $fileStream.Dispose() + } + + if ($response) { + $response.Close() + $response.Dispose() + } +} + +# Internal usage only +Function WriteOutputFile($response, $fileName) +{ + $datalength = $response.ContentLength + $reader = $response.GetResponseStream() + + try { + $writer = New-Object io.FileStream $fileName, "Create" + $buffer = New-Object byte[] 4096 + + do { + $count = $reader.Read($buffer, 0, $buffer.length) + $writer.Write($buffer, 0, $count) + } while ($count -gt 0) + + $writer.Flush() + $writer.Close() + } + catch { + if ($_.Exception.InnerException) { + $errorAnswer = $_.Exception.InnerException + } + else { + $errorAnswer = $_.Exception.Message + } + Write-Verbose "errorAnswer: $errorAnswer" + return $errorAnswer + } +} + +# Internal usage only +Function writeDataFromLm2File($file, $Force, $response) +{ + $check = "" + $fileCheck = Test-Path -Path $file + + if ($file[0] -eq ".") { + if ($file[1] -eq ".") { + $d = Get-Location + $file = $d.Path + "\" + $file + } + else { + $d = Get-Location + $file = $d.Path + $file.Substring(1) + } + } + + if ($file[1] -ne ":") { + $d = Get-Location + $file = $d.Path + "\" + $file.Substring(0) + } + + Write-Verbose "File to write: $file" + + if (-not $fileCheck) { # The output file does not exist + $check = WriteOutputFile $response $file + if ($check) { + return $check + } + } + else { + if ($Force) { # The output file exists and force is true + $check = WriteOutputFile $response $file + if ($check) { + return $check + } + } + else { # The output file exists and force is false + $eStr1 = "ERROR: The specified file already exists." + $eStr2 = "To use the same filename, either delete the file or use the -Force switch." + $errorAnswer = "$eStr1 $eStr2" + Write-Verbose "errorAnswer: $errorAnswer" + return $errorAnswer + } + } + return "" +} + +# Internal use only +Function uploadGeoDnssecKeyFiles($url, $privateKeyFile, $publicKeyFile, $creds, $cert, $certStore) +{ + [System.Net.ServicePointManager]::Expect100Continue = $true + [System.Net.ServicePointManager]::MaxServicePointIdleTime = 10000 + Write-Verbose "setting ServerCertificateValidationCallback to TRUE." + [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} + [System.Net.ServicePointManager]::SecurityProtocol = 'Tls11','Tls12' + + $pageCoding = "UTF-8" + $enc = [System.Text.Encoding]::GetEncoding($pageCoding) + + $pubKF = Get-Item -Path $publicKeyFile + $fileBin1 = [System.IO.File]::ReadAllBytes($pubKF.FullName) + $fileEnc1 = $enc.GetString($fileBin1) + + $privKF = Get-Item -Path $privateKeyFile + $fileBin2 = [System.IO.File]::ReadAllBytes($privKF.FullName) + $fileEnc2 = $enc.GetString($fileBin2) + + $LF = "`r`n" + $boundary = [System.Guid]::NewGuid().ToString() + + $bodyLines = ( + "--$boundary", + "Content-Disposition: form-data; name=`"publickey`"; filename=`"publickey`"", + "Content-Type: application/octet-stream$LF", $fileEnc1, + "--$boundary", + "Content-Disposition: form-data; name=`"privatekey`"; filename=`"privatekey`"", + "Content-Type: application/octet-stream$LF", $fileEnc2, + "--$boundary--$LF" + ) -join $LF + + $ct = "multipart/form-data; boundary=`"$boundary`"" + $params = @{ + Uri = $url + Method = "Post" + ContentType = $ct + Body = $bodyLines + } + if ($creds) { + $params.Add("Credential", $creds) + } + else { + $rCert = Get-LoginCertificate $certStore $cert + if ($rCert) { + $params.Add("Certificate", $rCert) + } + else { + Throw "ERROR: the provide certificate and/or its location is invalid" + return + } + } + + try { + $response = Invoke-RestMethod @params + } + catch { + if ( ($_.Exception.Message) -and + ($_.Exception.Message -is [string]) -and + (($_.Exception.Message.Contains("Unable to connect")) -or + ($_.Exception.Message.Contains("could not be resolved")) -or + ($_.Exception.Message.Contains("Unauthorized")))) { + $errorAnswer = $_.Exception.Message + Write-Verbose "ERROR: $errorAnswer" + Write-Verbose "setting ServerCertificateValidationCallback to NULL." + [System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null + Throw $errorAnswer + return + } + try { + $result = $_.Exception.Response.GetResponseStream() + } + catch { + $errorAnswer = $_.Exception.Message + Write-Verbose "ERROR: $errorAnswer" + Write-Verbose "setting ServerCertificateValidationCallback to NULL." + [System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null + Throw $errorAnswer + return + } + $reader = New-Object System.IO.StreamReader($result) + $reader.BaseStream.Position = 0 + $reader.DiscardBufferedData() + $responseBody = $reader.ReadToEnd(); + Write-Verbose "ERROR: $responseBody" + Write-Verbose "setting ServerCertificateValidationCallback to NULL." + [System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null + return $responseBody + } + Write-Verbose "$($response.Innerxml)" + Write-Verbose "setting ServerCertificateValidationCallback to NULL." + [System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null + return $response +} + +# Internal use only +# This function sends the command to the LM +Function SendCmdToLm +{ + [CmdletBinding(DefaultParameterSetName="SingleParam")] + Param( + [Parameter(Mandatory=$true)] + [string]$Command, + + [Parameter(ParameterSetName="SingleParam")] + [string]$ParameterName, + + [Parameter(ParameterSetName="SingleParam")] + [string]$ParameterValue, + + [Parameter(ParameterSetName="MultiParam")] + [hashtable]$ParameterValuePair, + + [Parameter(ParameterSetName="MultiParam")] + [string]$File, + + [hashtable]$ConnParams, + + [switch]$Output, + [switch]$pTest + ) + + if ($ConnParams) { + if ($ConnParams.ContainsKey("LmIp")) { + $LmIp = $ConnParams.Get_Item("LmIp") + } + if ($ConnParams.ContainsKey("LmPort")) { + $LmPort = $ConnParams.Get_Item("LmPort") + } + if ($ConnParams.ContainsKey("Cred")) { + $Credential = $ConnParams.Get_Item("Cred") + } + if ($ConnParams.ContainsKey("SubjectCN")) { + $SubjectCN = $ConnParams.Get_Item("SubjectCN") + } + if ($ConnParams.ContainsKey("CertLoc")) { + $CertLoc = $ConnParams.Get_Item("CertLoc") + } + } + + if ($script:cred -eq $Credential -and ($SubjectCN -and $script:SubjectCN -ne $SubjectCN) ) { + # this is an overwrite of the stored credentials with a local login certificate + $Credential = $null + } + + if ($script:SubjectCN -eq $SubjectCN -and ($Credential -and $script:cred -ne $Credential) ) { + # this is an overwrite of the stored certificate with local credentials + $SubjectCN = $null + } + + Write-Verbose "Input params are OK, moving on . . ." + + # the following function can throw + $url = SetCmdUrl $PsCmdlet.ParameterSetName $LmIp $LmPort $Command $ParameterValuePair $ParameterName $ParameterValue + + if ($pTest) { # Testing purpose: don't remove + return $true + } + + $response = $null + $errorAnswer = $null + try { + $request = CreateLmHttpsRequest $url $Credential $SubjectCN $CertLoc + + if (($File) -and (-not ($Output))) { + UploadFile2Lm $File $request + } + + $response = $request.GetResponse() + Write-Verbose "Response received." + + $HTTP_STATUS = $response.StatusCode + Write-Verbose "HTTP STATUS: $HTTP_STATUS" + } + catch [Exception] { + $err = $_ # we need to save the exception object for further procesing + $errorAnswer = SetLoginConnectionErrorAnswer $err + } + + finally { + if (!$response) { + if (!$errorAnswer) { + CloseConnectionWithLm $reader $stream $filestream $response + Throw $err.Exception.Message + } + else { + $response = $errorAnswer + } + } + + try { + $stream = $response.GetResponseStream() + } + catch { + CloseConnectionWithLm $reader $stream $filestream $response + $errorAnswer = $_.Exception.Message + Write-Verbose "errorAnswer (2): $errorAnswer" + Throw $errorAnswer + } + + $found = $false + if ($response.contenttype -eq "text/xml") { + $Encoding = [System.Text.Encoding]::GetEncoding("utf-8") + $reader = New-Object system.io.StreamReader($stream, $Encoding) + $result = $reader.REadToEnd() + + if (-not ($Command.Contains("eula"))) { + Write-Verbose "result: $result" + } + Write-Output $result + + $found = $true + } + + if (-not ($found) -and + ($response.ContentType -eq "application/octet-stream" -or + $response.ContentType -eq "application/x509-cert" -or + $response.ContentType -eq "application/vnd.tcpdump.pcap" -or + $Command -eq "exportvstmplt")) { + if ($response.StatusCode -eq 200) { + try { + $errorAnswer = writeDataFromLm2File $file $Force $response + if ($errorAnswer -ne "") { + CloseConnectionWithLm $reader $stream $filestream $response + Throw $errorAnswer + } + } + catch { + CloseConnectionWithLm $reader $stream $filestream $response + Throw $errorAnswer + } + } + Write-Output $response.StatusCode + + $found = $true + } + + if (-not $found) { + $errorString = [string]$err + Write-Output $errorString + } + CloseConnectionWithLm $reader $stream $filestream $response + } +} + +# Internal use only +Function ConvertBoundParameters +{ + [CmdletBinding()] + Param( + [hashtable]$hashtable, + + [switch]$SkipEncoding + ) + + $propertyTable = @{} + + foreach ($param in $IgnoredParameters) { + $hashtable.Remove($param) + } + + foreach ($param in $hashtable.keys) { + if ($hashtable[$param] -is [bool]) { + if ($ParamReplacement.Keys -contains $param) { + $paramValue = $hashtable[$param] -as [int] + $param = $ParamReplacement[$param] + $propertyTable.Add($param, $paramValue) + } + else { + $propertyTable.Add(($param), $hashtable[$param] -as [int]) + } + } + else { + if ($SkipEncoding -eq $false) { + $value = [System.Web.HttpUtility]::UrlEncode($hashtable[$param]) + } + else { + $value = $hashtable[$param] + } + + if ($param -eq "BondMode") { + if ($hashtable[$param].ToLowerInvariant() -eq "802.3ad") {$value = 4} + if ($hashtable[$param].ToLowerInvariant() -eq "active-backup") {$value = 1} + } + + if ($ParamReplacement.Keys -contains $param) { + # Special case: Add the "!" prefix to the RSIndex value. + if ($param -eq "RSIndex") { + $value = "!" + $value + } + $param = $ParamReplacement[$param] + } + $propertyTable.Add($param, $value) + } + } + return $propertyTable +} + +# Internal usage only +Function CheckLmConnection($LmIp, $LmNewIp, $LmPort) +{ + $check = $true + $counter = 2 + $connStatus = $true + while ($check) { + if (-not (Test-LmServerConnection -ComputerName $LmIp -Port $LmPort)) { + $connStatus = $false + Start-Sleep -s 5 + $counter -= 1 + if ($counter -eq 0) { + $check = $false + } + } + else { + $connStatus = $true + $check = $false + } + } + + if ($connStatus -eq $false) { + $check = $true + $counter = 5 + $LmIp = $($LmNewIp.Split('/'))[0] + while ($check) { + if (-not (Test-LmServerConnection -ComputerName $LmIp -Port $LmPort)) { + Start-Sleep -s 5 + $counter -= 1 + if ($counter -eq 0) { + $check = $false + } + } + else { + $check = $false + $connStatus = $true + } + } + } + + if ($connStatus -eq $false) { + Throw "ERROR: not able to reconnect to the LM" + } + else { + $LmIp + } +} + +# Internal usage only +Function throwIfEmpty($param) +{ + if ( ([String]::IsNullOrEmpty($param)) ) { + Throw "ERROR: $param is a required parameter" + } +} + +# endregion - UTILITY FUNCTION + + +# ================================================== +# region - EULA +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Read-LicenseEULA +{ + [CmdletBinding()] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $null $null $null $null "skipLoginCheck" + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential + + try { + $response = SendCmdToLm -Command "readeula" -ParameterValuePair $params -ConnParams $ConnParams + SetEulaResponseObject $response "Eula" + } + catch { + SetEulaErrorResponseObject $_.Exception.Message + } +} +Export-ModuleMember -function Read-LicenseEULA + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Confirm-LicenseEULA +{ + [CmdletBinding()] + Param( + [ValidateSet("trial", "perm", "free")] + [String]$Type = "trial", + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Magic, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $null $null $null $null "skipLoginCheck" + $propertyTable = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential + + try { + $response = SendCmdToLm -Command "accepteula" -ParameterValuePair $propertyTable -ConnParams $ConnParams + SetEulaResponseObject $response "Eula2" + } + catch { + SetEulaErrorResponseObject $_.Exception.Message + } +} +Export-ModuleMember -function Confirm-LicenseEULA + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Confirm-LicenseEULA2 +{ + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Magic, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateSet("yes", "no")] + [String]$Accept, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $null $null $null $null "skipLoginCheck" + $propertyTable = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential + + try { + $response = SendCmdToLm -Command "accepteula2" -ParameterValuePair $propertyTable -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + SetEulaErrorResponseObject $_.Exception.Message + } +} +Export-ModuleMember -function Confirm-LicenseEULA2 + +# ================================================== +# endregion - EULA +# ================================================== + + +# ================================================== +# region - LICENSE +# ================================================== + +Function Set-LicenseInitialPassword +{ + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Passwd, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $null $null $null $null "skipLoginCheck" + $propertyTable = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential + + try { + $response = SendCmdToLm -Command "set_initial_passwd" -ParameterValuePair $propertyTable -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "SetInitialPasswd" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 $errMsg $null + } +} +Export-ModuleMember -function Set-LicenseInitialPassword + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Request-LicenseOnline +{ + [CmdletBinding()] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [string]$KempId = $KempId, + + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [string]$Password = $Password, + + [ValidateNotNullOrEmpty()] + [string]$OrderId, + + [ValidateNotNullOrEmpty()] + [string]$LicenseTypeId, + + [string]$http_proxy + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $null $null $null $null "skipLoginCheck" + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential + + if ($LicenseTypeId) { + $params.Remove("LicenseTypeId") + $params.Add("licensetypeid", $LicenseTypeId) + } + + try { + $response = SendCmdToLm -Command "alsilicense" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errorString = $_.Exception.Message + $errorCode = GetLicenseCmdErrorCode $errorString + setKempAPIReturnObject $errorCode "$errorString" $null + } +} +Export-ModuleMember -function Request-LicenseOnline + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Request-LicenseOffline +{ + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $null $null $null $null "skipLoginCheck" + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential + + try { + $response = SendCmdToLm -Command "license" -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + if ($errMsg -eq "ERROR: The input file does not exist. Please check your input.") { + Throw $errMsg + } + $errorString = $_.Exception.Message + $errorCode = GetLicenseCmdErrorCode $errorString + setKempAPIReturnObject $errorCode "$errorString" $null + } +} +Export-ModuleMember -function Request-LicenseOffline + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LicenseAccessKey +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -command "accesskey" -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLicenseAccessKey" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LicenseAccessKey + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LicenseType +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [string]$KempId = $KempId, + + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [string]$Password = $Password, + + [ValidateNotNullOrEmpty()] + [string]$OrderId, + + [ValidateNotNullOrEmpty()] + [string]$http_proxy, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $null $null $null $null $null "skipLoginCheck" + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -command "alsilicensetypes" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLicenseType" -LMResponse $response -AdditionalData $OrderId + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LicenseType + +Function Get-LicenseInfo +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -command "licenseinfo" -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLicenseInfo" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LicenseInfo + +Function Update-LicenseOnline +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [string]$KempId = $KempId, + + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Password = $Password, + + [ValidateNotNullOrEmpty()] + [string]$OrderId, + + [string]$http_proxy, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ($OrderId) { + $params.Remove("OrderId") + $params.Add("orderid", $OrderId) + } + + try { + $response = SendCmdToLm -command "alsilicense" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + $errCode = GetLicenseCmdErrorCode $errMsg + setKempAPIReturnObject $errCode "$errMsg" $null + } +} +Export-ModuleMember -function Update-LicenseOnline + +Function Update-LicenseOffline +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "license" -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + if ($errMsg -eq "ERROR: The input file does not exist. Please check your input.") { + Throw $errMsg + } + $errCode = GetLicenseCmdErrorCode $errMsg + setKempAPIReturnObject $errCode "$errMsg" $null + } +} +Export-ModuleMember -function Update-LicenseOffline + +Function Request-LicenseOnPremise +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$aslipaddr, + + [ValidateNotNullOrEmpty()] + [String]$aslname, + + [ValidateNotNullOrEmpty()] + [ValidateRange(1, 65535)] + [int]$aslport, + + [ValidateNotNullOrEmpty()] + [string]$LicenseTypeId, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $null $null $null $null $null "skipLoginCheck" + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($LicenseTypeId) { + $params.Remove("LicenseTypeId") + $params.Add("lic_type_id", $LicenseTypeId) + } + + try { + $response = SendCmdToLm -Command "aslactivate" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "RequestLicenseOnPremise" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Request-LicenseOnPremise + +Function Get-AslLicenseType +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$aslipaddr, + + [ValidateNotNullOrEmpty()] + [ValidateRange(1, 65535)] + [int]$aslport, + + [ValidateNotNullOrEmpty()] + [String]$aslname, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $null $null $null $null $null "skipLoginCheck" + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + try { + $response = SendCmdToLm -Command "aslgetlicensetypes" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetAslLicenseType" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-AslLicenseType + +Function Stop-AslInstance +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "killaslinstance" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Stop-AslInstance + +# ================================================== +# endregion - LICENSE +# ================================================== + + +# ================================================== +# region TEMPLATES +# ================================================== + +# Internal use only +Function setExportVsTemplatesInputParams($VirtualService, $VSIndex, $Port, $Protocol, $params) +{ + if ($VirtualService -and $VSIndex) { + Throw "Cannot set both parameters VirtualService and VSIndex" + } + + if ($VirtualService) { + if ($Port -and $Protocol) { + $params.Add("vs", $VirtualService) + } + else { + Throw "Cannot set VirtualService without Port and Protocol" + } + } + elseif ($VSIndex) { + $params.Add("vs", $VSIndex) + return + } + else { + Throw "One parameter VirtualService or VSIndex must be set" + } + + if ($Port) { + if ($Port -lt 3 -or $Port -gt 65530) { + Throw "The port value is less than the minimum allowed value (0) or it is greater than the maximun allowed value (65530)" + } + if ($Protocol) { + $params.Add("port", $Port) + $params.Add("prot", $Protocol) + } + else { + Throw "The port/protcol parameters must be specified" + } + $check = $true + } + else { + if ($protocol) { + Throw "The port/protcol parameters must be specified" + } + } +} + +Function Export-VSTemplate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$Port, + + [ValidateSet("tcp", "udp")] + [string]$Protocol, + + [Int32]$VSIndex, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Path, + [switch]$Force, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = @{} + setExportVsTemplatesInputParams $VirtualService $VSIndex $Port $Protocol $params + + try { + $response = SendCmdToLm -Command "exportvstmplt" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "ExportVSTemplate" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Export-VSTemplate, ExportVSTemplate + +Function Install-Template +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "uploadtemplate" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "InstallTemplate" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Install-Template, UploadTemplate + +Function Remove-Template +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "deltemplate" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-Template, DeleteTemplate + +Function Get-Template +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "listtemplates" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetTemplate" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-Template, ListTemplates + +# ================================================== +# endregion TEMPLATES +# ================================================== + + +# ================================================== +# region LOGGING +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LogEmailConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params2get = @("EmailEnable", "EmailServer", "EmailPort", "EmailUser", "EmailPassword", "EmailDomain", "EmailSSLMode", + "EmailEmergency", "EmailCritical", "EmailError", "EmailWarn", "EmailNotice", "EmailInfo") + + $ht = [ordered]@{} + $ht.PSTypeName = "EmailConfiguration" + foreach($param in $params2get) { + $params.Add("param", $param) + + $lma = Get-LmParameter @params + if ($lma.ReturnCode -eq 200) { + $paramValue = $lma.Data.$param + $ht.Add($param, $paramValue) + } + else { + return $lma + } + $params.Remove("param") + Start-Sleep -m 200 + } + $tmpObj = New-Object -TypeName PSObject -Property $ht + + $emConf = [ordered]@{} + $emConf.PSTypeName = "EmailConfiguration" + $emConf.Add("EmailConfiguration", $tmpObj) + $emConfObject = New-Object -TypeName PSObject -Property $emConf + + setKempAPIReturnObject 200 "Command successfully executed" $emConfObject +} +Export-ModuleMember -function Get-LogEmailConfiguration, Get-EmailOption + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-LogEmailConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$EmailEnable, + + [string]$EmailServer, + + [ValidateRange(3, 65530)] + [int]$EmailPort, + + [string]$EmailUser, + + [string]$EmailPassword, + + [string]$EmailDomain, + + [ValidateSet(0, 1, 2, 3)] + [Int16]$EmailSSLMode, + + [string]$EmailEmergency, + + [string]$EmailCritical, + + [string]$EmailError, + + [string]$EmailWarn, + + [string]$EmailNotice, + + [string]$EmailInfo, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + + foreach($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $paramValue = $parameters2set[$param] + $params.Add("value", "$paramValue") + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + Start-Sleep -m 200 + } + + Get-LogEmailConfiguration @params +} +Export-ModuleMember -function Set-LogEmailConfiguration, Set-EmailOption + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LogSyslogConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params2get = @("SyslogEmergency", "SyslogCritical", "SyslogError", "SyslogWarn", "SyslogNotice", "SyslogInfo", "SyslogPort") + + $ht = [ordered]@{} + $ht.PSTypeName = "SyslogSettings" + foreach($param in $params2get) { + $params.Add("param", $param) + + $lma = Get-LmParameter @params + if ($lma.ReturnCode -eq 200) { + $paramValue = $lma.Data.$param + $ht.Add($param, $paramValue) + } + else { + return $lma + } + $params.Remove("param") + Start-Sleep -m 200 + } + $tmpObj = New-Object -TypeName PSObject -Property $ht + + $syslogConf = [ordered]@{} + $syslogConf.PSTypeName = "SyslogSettings" + $syslogConf.Add("SyslogSettings", $tmpObj) + $syslogConfObject = New-Object -TypeName PSObject -Property $syslogConf + + setKempAPIReturnObject 200 "Command successfully executed" $syslogConfObject +} +Export-ModuleMember -function Get-LogSyslogConfiguration, Get-SyslogOption + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-LogSyslogConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$SyslogCritical, + [string]$SyslogEmergency, + [string]$SyslogError, + [string]$SyslogInfo, + [string]$SyslogNotice, + [string]$SyslogWarn, + + [UInt16]$SyslogPort, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters + + foreach($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $paramValue = $parameters2set[$param] + $params.Add("value", "$paramValue") + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + Start-Sleep -m 200 + } + + Get-LogSyslogConfiguration @params +} +Export-ModuleMember -function Set-LogSyslogConfiguration, Set-SyslogOption + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LogStatistics +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [switch]$VirtualService, + [switch]$RealServer, + [switch]$Totals, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ((!$VirtualService) -and (!$Totals) -and (!$RealServer)) { + $VirtualService = $true + $Totals = $true + $RealServer = $true + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $addData = [ordered]@{VS = $VirtualService; RS = $RealServer; Totals = $Totals;} + + $response = SendCmdToLm -Command "stats" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLogStatistics" -LMResponse $response -AdditionalData $addData + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Get-LogStatistics, Get-Statistics + +Function Reset-LogStatistics +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $cmd = "logging/resetstats" + $response = SendCmdToLm -Command "$Cmd" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Reset-LogStatistics + +# ================================================== +# endregion LOGGING +# ================================================== + + +# ================================================== +# region SSO +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-SSODomain +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Domain, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "showdomain" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetSSODomain" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-SSODomain + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-SSODomain +{ + [CmdletBinding()] + Param( + [Parameter(ParameterSetName="Single",ValueFromPipelineByPropertyName=$true)] + [Alias("Name")] + [string]$Domain, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "adddomain" -ParameterValuePair @{domain = $Domain} -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + + if ($lma.ReturnCode -eq 200) { + $lma.Response = "Command successfully executed (Domain `"$Domain`" created)" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-SSODomain + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-SSODomain +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,ValueFromPipeline=$true)] + [Alias("Name")] + [string]$Domain, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (($Force) -or ($PsCmdlet.ShouldProcess($Domain, "Remove SSO Domain"))) { + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "deldomain" -ParameterValuePair @{domain = $Domain} -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + + if ($lma.ReturnCode -eq 200) { + $lma.Response = "Command successfully executed (Domain `"$Domain`" deleted)" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + + } +} +Export-ModuleMember -function Remove-SSODomain + +# Internal use only +Function CheckSetSSODomainLoginFmtParam($logon_fmt, $iparams) +{ + # RESTful API mapping + if ($logon_fmt -eq "Notspecified") { + $iparams.Remove("logon_fmt") + $iparams.Add("logon_fmt", "Not specified") + } + + if ($logon_fmt -eq "Usernameonly") { + $iparams.Remove("logon_fmt") + $iparams.Add("logon_fmt", "Username only") + } + + if ($logon_fmt2 -eq "Notspecified") { + $iparams.Remove("logon_fmt2") + $iparams.Add("logon_fmt2", "Not specified") + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-SSODomain +{ + [CmdletBinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("Name")] + [string]$Domain, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [ValidateSet("Unencrypted", "StartTLS", "LDAPS")] + [string]$TLS, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [String[]]$Server, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [String[]]$Server2, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [ValidateSet("LDAP-Unencrypted", "LDAP-StartTLS", "LDAP-LDAPS", + "RADIUS", "RADIUS and LDAP-Unencrypted", "RADIUS and LDAP-StartTLS", "RADIUS and LDAP-LDAPS", + "RSA-SECURID", "RSA-SECURID and LDAP-Unencrypted", "RSA-SECURID and LDAP-StartTLS", "RSA-SECURID and LDAP-LDAPS", + "Certificates", "KCD", "SAML")] + [string]$auth_type, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [ValidateRange(0, 999)] + [int]$max_failed_auths, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [ValidateRange(60, 86400)] + [int]$reset_fail_tout, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [ValidateRange(60, 86400)] + [int]$unblock_tout, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [ValidateSet("Notspecified", "Not specified", "Principalname", "Username", "Usernameonly", "Username only")] + [string]$logon_fmt, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [ValidateSet("Notspecified", "Not specified", "Principalname", "Username")] + [string]$logon_fmt2, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [string]$logon_domain, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("stt")][ValidateSet("idle time", "max duration")] + [string]$sess_tout_type, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("stipub")][ValidateRange(60, 86400)] + [int]$sess_tout_idle_pub, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("stdpub")][ValidateRange(60, 86400)] + [int]$sess_tout_duration_pub, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("stipriv")][ValidateRange(60, 86400)] + [int]$sess_tout_idle_priv, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("stdpriv")][ValidateRange(60, 86400)] + [int]$sess_tout_duration_priv, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [string]$testuser, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [string]$testpass, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("Secret")] + [string]$radius_shared_secret, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("KerberosDomain")] + [string]$kerberos_domain, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("SKerberosKDC")] + [string]$kerberos_kdc, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("KCDUsername")] + [string]$kcd_username, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("KCDPassword")] + [string]$kcd_password, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("ServerSide")] + [string]$server_side, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("CertCheck")] + [string]$cert_check_asi, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("CertCheckCn")] + [string]$cert_check_cn, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("LogonTranscode")] + [bool]$Logon_Transcode, + + [Parameter(ValueFromPipelineByPropertyName=$true)] + [Alias("LdapEndpoint")] + [string]$ldap_endpoint, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + CheckSetSSODomainLoginFmtParam $logon_fmt $psboundparameters + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + try { + $response = SendCmdToLm -Command "moddomain" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetSSODomain" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-SSODomain + +Function Get-SSODomainLockedUser +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$false,ValueFromPipeline=$true)] + [Alias("Name")] + [string]$Domain, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "showdomainlockedusers" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetSSODomainLockedUser" -LMResponse $response -AdditionalData "showdomainlockedusers" + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + return + } +} +Export-ModuleMember -function Get-SSODomainLockedUser + +Function Set-SSODomainUnlockUser +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,ValueFromPipeline=$true)] + [Alias("Name")] + [string]$Domain, + + [Parameter(Mandatory=$true,ValueFromPipeline=$true)] + [string]$Users, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "unlockdomainusers" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "SetSSODomainLockedUser" -LMResponse $response -AdditionalData "unlockdomainusers" + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + return + } +} +Export-ModuleMember -function Set-SSODomainUnlockUser + +Function Install-SSORSAConfigurationFile +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = @{} + + try { + $response = SendCmdToLm -Command "setrsaconfig" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Authentication Manager Config successfully loaded." + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Install-SSORSAConfigurationFile, UploadRSAConfigurationFile + +Function Install-SSORSANodeSecretAndPassword +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Password, + + [Parameter(Mandatory=$true)] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = @{} + $params.Add("rsanspwd",[System.Web.HttpUtility]::UrlEncode($Password)) + + try { + $response = SendCmdToLm -Command "setrsanodesecret" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Node Secret successfully loaded." + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Install-SSORSANodeSecretAndPassword, UploadRSANodeSecretAndPassword + +Function Get-SSODomainSession +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Alias("Name")] + [string]$Domain, + + [Parameter(Mandatory=$false)] + [string]$User, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = [ordered]@{} + $params.Add("domain", $Domain) + + if (-not ([String]::IsNullOrEmpty($User))) { + $params.Add("user", $User) + $ssodcmd = "ssodomain/search" + } + else { + $ssodcmd = "ssodomain/queryall" + } + + try { + $response = SendCmdToLm -Command $ssodcmd -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetSSODomainSession" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Get-SSODomainSession + +Function Stop-SSODomainSession +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Domain, + + [Parameter(Mandatory=$false)] + [ValidateNotNullOrEmpty()] + [String]$Key, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = [ordered]@{} + $params.Add("domain", $Domain) + + if (-not ([String]::IsNullOrEmpty($Key))) { + $params.Add("key", $Key) + $ssodcmd = "ssodomain/killsession" + } + else { + $ssodcmd = "ssodomain/killallsessions" + } + + try { + $response = SendCmdToLm -Command $ssodcmd -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Stop-SSODomainSession + +Function Clear-SSOCache +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "logging/ssoflush" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Clear-SSOCache, FlushSsoCache + +# ================================================== +# endregion SSO +# ================================================== + + +# ================================================== +# region NETWORKING +# ================================================== + +# Internal use only +Function validateIp($ip) +{ + $retValue = $false + + if ($ip) { + try { + $check = [ipaddress]::Parse($ip) + if ($check) { + $retValue = $true + } + } + catch { + $errMsg = $_.Exception.Message + Write-Verbose "ERROR: $errMsg" + } + } + + return $retValue +} + +Function Get-LmNetworkInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = @{} + + try { + $response = SendCmdToLm -Command "listifconfig" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLmNetworkInterface" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmNetworkInterface, ListIfconfig + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-NetworkConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $networkParameters = @("snat", "allowupload", "conntimeout", "keepalive", + "multigw", "nonlocalrs", "onlydefaultroutes", "resetclose", + "subnetorigin", "subnetoriginating", "tcptimestamp", + "routefilter", "dhkeysize", "http_proxy") + + GetLmParameterSet $networkParameters "NetworkConfiguration" $params +} +Export-ModuleMember -function Get-NetworkConfiguration, Get-NetworkOptions + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-NetworkConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$SNAT, + + [bool]$AllowUpload, + + [ValidateRange(0, 86400)] + [Int64]$ConnTimeout, + + [bool]$KeepAlive, + + [bool]$MultiGW, + + [bool]$NonLocalRS, + + [bool]$OnlyDefaultRoutes, + + [bool]$ResetClose, + + [bool]$SubnetOrigin, + + [bool]$SubnetOriginating, + + [bool]$TCPTimeStamp, + + [bool]$RouteFilter, + + [ValidateRange(512, 4096)] + [Int32]$DHKeySize, + + [string]$Http_Proxy, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + $params2Get = @() + + foreach($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + Start-Sleep -m 200 + } + GetLmParameterSet $params2Get "Parameters" $params +} +Export-ModuleMember -function Set-NetworkConfiguration, Set-NetworkOptions + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-NetworkDNSConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $lma = GetLmParameter "Hamode" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + + $hamode = $lma.Data.Hamode + if ($hamode -eq 0) { + $dnsParameters = @("Hostname", "NamServer", "SearchList") + } + else { + $dnsParameters = @("Hostname", "HA1Hostname", "HA2Hostname", "NamServer", "SearchList") + } + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + GetLmParameterSet $dnsParameters "NetworkDNSConfiguration" $params +} +Export-ModuleMember -function Get-NetworkDNSConfiguration, Get-DNSConfiguration + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-NetworkDNSConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Hostname, + + [string]$HA1Hostname, + + [string]$HA2Hostname, + + [string]$NameServer, + + [string]$Searchlist, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + $params2Get = @() + + foreach($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + Start-Sleep -m 200 + } + GetLmParameterSet $params2Get "Parameters" $params +} +Export-ModuleMember -function Set-NetworkDNSConfiguration, Set-DNSConfiguration + +Function Update-NetworkDNSCache +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "resolvenow" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Update-NetworkDNSCache, Update-LmDNSCache + +# Internal use only +Function checkGetSnmpParam($type, $key, $param) +{ + if ($type -eq "SnmpV3") { + if (($key -eq "no") -and + ($param -eq "SNMPv3user" -or $param -eq "SNMPv3userpasswd" -or $param -eq "snmpAuthProt" -or $param -eq "snmpPrivProt")) { + return $false + } + else { + return $true + } + } + + if ($type -eq "HaTrap") { + if (($key -eq 0) -and ($param -eq "SNMPHaTrap")) { + return $false + } + else { + return $true + } + } + + if ($type -eq "SnmpTrap") { + if (($key -eq "no") -and ($param -eq "SNMPv1Sink" -or $param -eq "SNMPv2Sink")) { + return $false + } + else { + return $true + } + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-NetworkSNMPConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $lma = GetLmParameter "snmpenable" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + + $snmpenable = $lma.Data.snmpenable + if ($snmpenable -eq "no") { + return $lma + } + + $lma = GetLmParameter "SNMPv3enable" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + $snmpv3enable = $lma.Data.SNMPv3enable + + $lma = GetLmParameter "hamode" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + $hamode = $lma.Data.hamode + + $lma = GetLmParameter "SNMPTrapEnable" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + $snmptrapenable = $lma.Data.SNMPTrapEnable + + $snmpParams = @("SNMPEnable", "SNMPv3enable", "SNMPv3user", "SNMPv3userpasswd", "snmpAuthProt", "snmpPrivProt", + "SNMPClient", "SNMPCommunity", "SNMPContact", "SNMPLocation", + "SNMPTrapEnable", "SNMPHaTrap", "SNMPv1Sink", "SNMPv2Sink") + + $snmpConf = [ordered]@{} + $snmpConf.PSTypeName = "SNMPConfiguration" + foreach ($param in $snmpParams) { + + if ($param -eq "SNMPEnable") { + $snmpConf.add($param, $snmpenable) + continue + } + + if ($param -eq "SNMPv3enable") { + $snmpConf.add($param, $snmpv3enable) + continue + } + + if ($param -eq "SNMPTrapEnable") { + $snmpConf.add($param, $snmptrapenable) + continue + } + + if ((checkGetSnmpParam "SnmpV3" $snmpv3enable $param) -eq $false) { + continue + } + + if ((checkGetSnmpParam "HaTrap" $hamode $param) -eq $false) { + continue + } + + if ((checkGetSnmpParam "SnmpTrap" $snmptrapenable $param) -eq $false) { + continue + } + + $lma = GetLmParameter "$param" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + $snmpConf.add($param, $lma.Data.$param) + + Start-Sleep -m 150 + } + $data = New-Object -TypeName PSObject -Property $snmpConf + setKempAPIReturnObject 200 "Command successfully executed" $data +} +Export-ModuleMember -function Get-NetworkSNMPConfiguration, Get-SNMPOption + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-NetworkSNMPConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$SNMPEnable, + [bool]$SNMPv3enable, + [string]$SNMPv3user, + [string]$SNMPv3userpasswd, + + [ValidateSet("SHA", "MD5")] + [string]$snmpAuthProt, + + [ValidateSet("AES", "DES")] + [string]$snmpPrivProt, + + [string]$SNMPClient, + [string]$SNMPCommunity, + [string]$SNMPContact, + [string]$SNMPLocation, + [bool]$SNMPTrapEnable, + [bool]$SNMPHaTrap, + [string]$SNMPv1Sink, + [string]$SNMPv2Sink, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + + foreach ($param in $params.Keys) + { + $lma = SetLmParameter $param $params[$param] $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + Start-Sleep -m 200 + } + + $ConnParams2 = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + Get-NetworkSNMPConfiguration @ConnParams2 +} +Export-ModuleMember -function Set-NetworkSNMPConfiguration, Set-SNMPOption + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-NetworkInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Int16]$InterfaceID = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + if ($InterfaceID -ne -1) { + $param = [ordered]@{} + $param.Add("iface", $InterfaceID) + $response = SendCmdToLm -Command "showiface" -ParameterValuePair $param -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetNetworkInterface" -LMResponse $response $InterfaceID + } + else { + $response = SendCmdToLm -Command "showiface" -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetNetworkInterface" -LMResponse $response $InterfaceID + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-NetworkInterface, Get-Interface + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-NetworkInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Int16]$InterfaceID = 0, + + [string]$IPAddress, + + [Int32]$MTU, + + [bool]$HACheck, + + [bool]$GWIface, + + [bool]$clupdate, + + [bool]$GeoTraffic, + + [ValidateSet("802.3ad", "Active-backup")] + [string]$BondMode, + + [string]$Partner, + + [string]$Shared, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params.Remove("iface") + foreach($param in $params.Keys) { + + $networkParams = @{iface=$InterfaceID} + $networkParams.Add($param, $params[$param]) + + $response = SetNetworkInterfaceParam "modiface" $networkParams $ConnParams + if ($response.ReturnCode -ne 200) { + Write-Verbose "error occurred: $($response.ReturnCode), $($response.Response)" + return $response + } + } + + # The machine can have now a new address + # we need to check the connection first + Write-Verbose "Checking LM connection . . ." + $LoadBalancer = CheckLmConnection $LoadBalancer $IPAddress $LBPort + Write-Verbose "Successfully connect to the LM" + + # Get Interface details + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + $intfDetails +} +Export-ModuleMember -function Set-NetworkInterface, Set-Interface + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-NetworkInterfaceAdditionalAddress +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Int16]$InterfaceID, + [string]$Address, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + + $cidr = $intfDetails.Data.Interface.IPAddress.Split("/")[1] + if ($Address.IndexOf('/') -eq -1) { + $Address += "/$cidr" + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $response = SetNetworkInterfaceParam "addadditional" @{iface=$InterfaceID; addr=$Address} $ConnParams + if ($response.ReturnCode -ne 200) { + return $response + } + + GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation +} +Export-ModuleMember -function New-NetworkInterfaceAdditionalAddress, Add-InterfaceAddress + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-NetworkInterfaceAdditionalAddress +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [Int16]$InterfaceID, + [string]$Address, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + + if (($Force) -or ($PsCmdlet.ShouldProcess($InterfaceID, "Remove Interface Address"))) { + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $response = SetNetworkInterfaceParam "deladditional" @{iface=$InterfaceID; addr=$Address} $ConnParams + if ($response.ReturnCode -ne 200) { + return $response + } + + # Get Interface details + GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + } +} +Export-ModuleMember -function Remove-NetworkInterfaceAdditionalAddress, Remove-InterfaceAddress + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-NetworkRoute # TODO to change name to Get-NetworkAdditionalRoute ????? +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "showroute" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetNetworkRoute" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Get-NetworkRoute, Get-Route + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-NetworkRoute +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Destination, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Alias("Mask", "SubnetMask")] + [Int16]$CIDR, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Gateway, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + throwIfEmpty $Destination + throwIfEmpty $CIDR + throwIfEmpty $Gateway + + $DestIP = "$Destination/$CIDR" + + try { + $response = SendCmdToLm -Command "addroute" -ParameterValuePair @{dest=$DestIP; gateway=$Gateway} -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -ne 200) { + return $lma + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + $ConnParams2 = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + Get-NetworkRoute @ConnParams2 +} +Export-ModuleMember -function New-NetworkRoute, New-Route + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-NetworkRoute # TODO to change name to Remove-NetworkAdditionalRoute ????? +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Destination, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "delroute" -ParameterValuePair @{dest=$Destination} -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -ne 200) { + return $lma + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + $ConnParams2 = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + Get-NetworkRoute @ConnParams2 +} +Export-ModuleMember -function Remove-NetworkRoute, Remove-Route + +Function Test-NetworkRoute +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Address, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ( ([String]::IsNullOrEmpty($Address)) ) { + Throw "ERROR: The address parameter is mandatory" + } + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "logging/traceroute" -ParameterValuePair @{addr=$Address} -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "TestNetworkRoute" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Test-NetworkRoute + +# Internal usage only +Function reconnectToLm($LoadBalancer, $LBPort, $cycles, $sleepTime) +{ + $check = $true + $counter = $cycles + + while ($check) { + if (-not (Test-LmServerConnection -ComputerName $LoadBalancer -Port $LBPort)) { + Start-Sleep -s $sleepTime + $counter -= 1 + if ($counter -eq 0) { + return $false + } + } + else { + return $true + } + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Register-NetworkBondedInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $check = $true + try { + $response = SendCmdToLm -Command "createbond" -ParameterValuePair @{iface=$InterfaceID} -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -ne 200) { + return $lma + } + $check = reconnectToLm $LoadBalancer $LBPort 12 10 + } + catch { + $errMsg = $_.Exception.Message + if ($errMsg.Contains("Unable to connect to the remote server")) { + $check = reconnectToLm $LoadBalancer $LBPort 12 10 + } + else { + setKempAPIReturnObject 400 "$errMsg" $null + return + } + } + if ($check -eq $true) { + GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + } + else { + setKempAPIReturnObject 400 "Unable to connect to the LM" $null + } +} +Export-ModuleMember -function Register-NetworkBondedInterface, Register-BondedInterface + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Unregister-NetworkBondedInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $check = $true + try { + $response = SendCmdToLm -Command "unbond" -ParameterValuePair @{iface=$InterfaceID} -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -ne 200) { + return $lma + } + $check = reconnectToLm $LoadBalancer $LBPort 12 10 + } + catch { + $errMsg = $_.Exception.Message + if ($errMsg.Contains("Unable to connect to the remote server")) { + $check = reconnectToLm $LoadBalancer $LBPort 12 10 + } + else { + setKempAPIReturnObject 400 "$errMsg" $null + return + } + } + if ($check -eq $true) { + GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + } + else { + setKempAPIReturnObject 400 "Unable to connect to the LM" $null + } +} +Export-ModuleMember -function Unregister-NetworkBondedInterface, Unregister-BondedInterface + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-NetworkBondedInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [Parameter(Mandatory=$true)] + [Int16]$BondID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "addbond" -ParameterValuePair @{iface=$InterfaceID; bond=$BondID} -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -ne 200) { + return $lma + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation +} +Export-ModuleMember -function New-NetworkBondedInterface, Add-BondedInterface + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-NetworkBondedInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [Parameter(Mandatory=$true)] + [Int16]$BondID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "delbond" -ParameterValuePair @{iface=$InterfaceID; bond=$BondID} -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -ne 200) { + return $lma + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation +} +Export-ModuleMember -function Remove-NetworkBondedInterface, Remove-BondedInterface + +# Internal use only +Function AddNetworkVlanVxLan($cmd2exec, $intfType, $cmdClass, $lanParams, $getParams, $ConnParams) +{ + try { + $response = SendCmdToLm -Command $cmd2exec -ParameterValuePair $lanParams -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass $cmdClass -LMResponse $response -AdditionalData $lanParams.iface + if ($lma.ReturnCode -eq 200) { + $intfId = $lma.Data.$intfType + $getParams.Add("InterfaceID", $intfId) + Get-NetworkInterface @getParams + } + else { + return $lma + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} + +# Internal use only +Function RemoveNetworkVLanVxLan($cmd2exec, $InterfaceId, $ConnParams) +{ + try { + $response = SendCmdToLm -Command $cmd2exec -ParameterValuePair @{iface=$InterfaceID} -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-NetworkVLAN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [Parameter(Mandatory=$true)] + [ValidateRange(1, 4095)] + [Int16]$VLanId, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + $intfDetails + return + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $getParams = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $lanParams = [ordered]@{iface = $InterfaceID; vlanid = $VLanId;} + + AddNetworkVlanVxLan "addvlan" "VLanInterfaceId" "AddNetworkVLAN" $lanParams $getParams $ConnParams +} +Export-ModuleMember -function New-NetworkVLAN, Add-VLan + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-NetworkVLAN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + $intfDetails + return + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + RemoveNetworkVLanVxLan "delvlan" $InterfaceID $ConnParams +} +Export-ModuleMember -function Remove-NetworkVLAN, Remove-VLan + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-NetworkVxLAN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [Parameter(Mandatory=$true)] + [ValidateRange(1, 16777214)] + [Int32]$VNI, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Addr, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ((($Addr -As [IPAddress]) -As [Bool])) { + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $getParams = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $sep = "." + $parts = [System.StringSplitOptions]::RemoveEmptyEntries + $AddrParts = $Addr.Split($sep, 4, $parts) + [int]$parti = [convert]::ToInt32($AddrParts[0], 10) + + $lanParams = [ordered]@{iface = $InterfaceID; vni = $VNI;} + if ($parti -gt 223 -and $parti -lt 240) { + $lanParams.Add("group", $Addr) + } + else { + $lanParams.Add("remote", $Addr) + } + + AddNetworkVlanVxLan "addvxlan" "VxLanInterfaceId" "AddNetworkVxLAN" $lanParams $getParams $ConnParams + } + else { + $errMsg = "No valid group or remote IP address given" + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function New-NetworkVxLAN, Add-VxLan + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-NetworkVxLAN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intfDetails = GetLmNetworkInterface $InterfaceID $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($intfDetails.ReturnCode -ne 200) { + return $intfDetails + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + RemoveNetworkVLanVxLan "delvxlan" $InterfaceID $ConnParams +} +Export-ModuleMember -function Remove-NetworkVxLAN, Remove-VxLan + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-HostsEntry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "gethosts" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetHosts" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Get-HostsEntry + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-HostsEntry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$HostIP, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$HostFQDN, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "addhostsentry" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function New-HostsEntry + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-HostsEntry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$HostIP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "delhostsentry" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} +Export-ModuleMember -function Remove-HostsEntry + +# ================================================== +# endregion NETWORKING +# ================================================== + + +# ================================================== +# region ADC +# ================================================== + +# Internal use only +Function SetAdcVirtualserviceCheckUserParam($params, $CheckUse1_1) +{ + if ($CheckUse1_1 -ne -1) { + $params.Remove("CheckUse1_1") + + if ($CheckUse1_1 -eq 1) { + $params.Add("CheckUse1.1", 1) + } + else { + $params.Add("CheckUse1.1", 0) + } + } +} + +# Internal use only +Function checkAdcVSInputParams($VirtualService, $VSPort, $VSProtocol, $VSIndex, $case) +{ + if ($VSIndex -ge 0) { + if ($VirtualService) { + Throw "The VSIndex and VirtualService parameters are mutually exclusive." + } + if ($VSPort) { + Throw "The VSIndex and Port parameters are mutually exclusive." + } + if ($VSProtocol) { + Throw "The VSIndex and Protocol parameters are mutually exclusive." + } + $cmdCase = "Index" + } + elseif ($VirtualService) { + if (!$VSPort -or !$VSProtocol) { + Throw "The VirtualService, Port and Protocol parameters are mandatory." + } + $cmdCase = "IPAddress" + } + else { + if ($case -eq 0) { + if ($VSPort -or $VSProtocol) { + Throw "The VirtualService, Port and Protocol parameters must be used together." + } + } + else { + Throw "Either the VirtualService or VSIndex parameter is required." + } + } + $cmdCase +} + +# Internal use only +Function GeAdcVirtualService($VirtualService, $Port, $Protocol, $VSIndex, $LoadBalancer, $LBPort, $Credential, $SubjectCN, $CertSL) +{ + if ($VirtualService -and $Port -and $Protocol) { + $params = @{VirtualService=$VirtualService; VSPort=$Port; VSProtocol=$Protocol} + } + elseif ($VSIndex) { + $params = @{VSIndex=$VSIndex} + } + else { + $params = @{} + } + + $params.Add("LoadBalancer", $LoadBalancer) + if ($LBPort) { + $params.Add("LBPort", $LBPort) + } + + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + $params.Add("SubjectCN", $SubjectCN) + if (-not ([String]::IsNullOrEmpty($CertSL))) { + $params.Add("CertificateStoreLocation", $CertSL) + } + } + else { + $params.Add("Credential", $Credential) + } + Get-AdcVirtualService @params +} + +# Internal use only +Function checkAdcRSInputParams($RealServer, $RealServerPort, $RSIndex, $nocheck) +{ + if ($RSIndex -ge 0) { + if ($RealServer) { + Throw "The RSIndex and RealServer parameters are mutually exclusive." + } + if ($RealServerPort) { + Throw "The RSIndex and RealServerPort parameters are mutually exclusive." + } + $cmdCase = "Index" + } + elseif ($RealServer) { + if (!$RealServerPort) { + Throw "The RealServer and RealServerPort parameters must be used together." + } + $cmdCase = "IPAddress" + } + else { + if ($nocheck -eq 1) { + $cmdCase = "All" + } + else { + Throw "Either the RealServer or RSIndex parameter is required." + } + } + $cmdCase +} + +# Internal use only +Function GetAdcRealServerStat($RealServer, $LoadBalancer, $LBPort, $Credential, $SubjectCN, $CertSL) +{ + $params = @{LoadBalancer=$LoadBalancer} + + if ($LBPort) { + $params.Add("LBPort", $LBPort) + } + + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + $params.Add("SubjectCN", $SubjectCN) + if (-not ([String]::IsNullOrEmpty($CertSL))) { + $params.Add("CertificateStoreLocation", $CertSL) + } + } + else { + $params.Add("Credential", $Credential) + } + $tmpObject = Get-LogStatistics @params -RealServer + + if ($tmpObject.ReturnCode -eq 200 ) { + if (([String]::IsNullOrEmpty($RealServer))) { + $rs = [ordered]@{} + $rs.PSTypeName = "RealServer" + $rs.Add("RealServer", $tmpObject.Data.Rs) + $rsObject = New-Object -TypeName PSObject -Property $rs + setKempAPIReturnObject 200 "Command successfully executed." $rsObject + } + else { + $rsA = @() + foreach($server in $tmpObject.Data.Rs) { + if ($server.Addr -eq $RealServer) { + $rsA += $server + } + } + if ($rsA.Length -gt 0) { + $rs = [ordered]@{} + $rs.PSTypeName = "RealServer" + $rs.Add("Realserver", $rsA) + + $rsObject = New-Object -TypeName PSObject -Property $rs + setKempAPIReturnObject 200 "Command successfully executed." $rsObject + } + else { + setKempAPIReturnObject 400 "Rs `"$RealServer`" not found." $null + } + } + } + else { + return $tmpObject + } +} + +# Internal use only +Function EnableDisableAdcRealServer($cmd2exec, $params, $ConnParams) +{ + try { + $response = SendCmdToLm -Command "$cmd2exec" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } +} + +# +# Internal use only +# +# NOTE: The function handles the cmd to set cache and compression +# exceptions. +# +Function AddRemoveAdcHttpCacheCompressionException($Extension, $Cmd, $ConnParams) +{ + foreach ($ext in $Extension) { + try { + $response = SendCmdToLm -Command "$Cmd" -ParameterValuePair @{param=$ext} -ConnParams $ConnParams + $adcServiceHealthConfiguration = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($adcServiceHealthConfiguration.ReturnCode -ne 200) { + return $adcServiceHealthConfiguration + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + } + setKempAPIReturnObject 200 "Command successfully executed." $null +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-AdcVirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$VirtualService, + + [Parameter(Mandatory=$true)] + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [ValidateRange(0, 6)] + [Int16]$AddVia, + + [string]$Template, + + [bool]$Cache = $false, + + [string]$CertFile, + + [ValidateSet("tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", "ldap", "none")] + [string]$CheckType = "tcp", + + [string]$CheckHost, + + [string]$CheckPattern, + + [string]$CheckUrl, + + [string]$CheckHeaders, + + [string]$LdapEndpoint, + + [string]$MatchLen, + + [ValidateRange(0, 1)] + [int]$CheckUse1_1 = -1, + + [Int32]$CheckPort, + + [bool]$EnhancedHealthChecks, + + [Int32]$RsMinimum, + + [ValidateRange(0, 2)] + [Int16]$ClientCert = 0, + + [bool]$Compress = $false, + + [string]$Cookie, + + [ValidateRange(0, 100)] + [Int16]$CachePercent = 0, + + [string]$DefaultGW, + + [bool]$Enable = $true, + + [string]$ErrorCode = 0, + + [string]$ErrorUrl, + + [ValidateRange(3, 65530)] + [Int32]$PortFollow, + + [bool]$ForceL7 = $true, + + [ValidateRange(0, 86400)] + [Int32]$Idletime, + + [String[]]$LocalBindAddresses, + + [ValidateSet("gen", "http", "tls", "ts")] + [string]$VSType, + + [string]$Nickname, + + [ValidateSet("ssl", "cookie", "active-cookie", "cookie-src", "active-cook-src", "cookie-hash", + "url", "query-hash", "host", "header", "super", "super-src", "src", "rdp", "rdp-src", + "rdp-sb", "udpsip", "none")] + [string]$Persist, + + [ValidateRange(0, 604800)] + [Int32]$PersistTimeout, + + [string]$QueryTag, + + [string]$CipherSet, + + [bool]$SSLReencrypt, + + [bool]$SSLReverse, + + [ValidateSet("", "http", "https")] + [string]$SSLRewrite, + + [string]$ReverseSNIHostname, + + [ValidateSet("rr", "wrr", "lc", "wlc", "fixed", "adaptive", "sh")] + [string]$Schedule, + + [ValidateRange(0, 5)] + [Int16]$ServerInit, + + [bool]$SSLAcceleration, + + [string]$StandByAddr, + + [string]$StandByPort, + + [Int32]$TransactionLimit, + + [bool]$Transparent, + + [bool]$SubnetOriginating, + + [bool]$UseforSnat, + + [ValidateSet("0", "1", "2", "4", "8")] + [string]$QoS, + + [int32]$CheckUseGet, + + [ValidateRange(0, 7)] + [Int16]$Verify, + + [string]$ExtraHdrKey, + + [string]$ExtraHdrValue, + + [string]$AllowedHosts, + + [string]$AllowedDirectories, + + [string]$AllowedGroups, + + [string]$GroupSIDs, + + [string]$SteeringGroups, + + [bool]$IncludeNestedGroups, + + [bool]$DisplayPubPriv, + + [bool]$DisablePasswordForm, + + [string]$Domain, + + [string]$AltDomains, + + [string]$Logoff, + + [ValidateRange(0, 7)] + [Int16]$ESPLogs, + + [string]$SMTPAllowedDomains, + + [bool]$ESPEnabled, + + [string]$UserPwdChangeUrl, + + [string]$UserPwdChangeMsg, + + [ValidateRange(0, 2)] + [Int16]$SecurityHeaderOptions, + + [ValidateRange(0, 5)] + [Int16]$InputAuthMode, + + [ValidateNotNullOrEmpty()] + [string]$OutConf, + + [ValidateRange(0, 3)] + [Int16]$OutputAuthMode, + + [ValidateRange(0, 1)] + [Int16]$StartTLSMode, + + [string]$ExtraPorts, + + [string]$AltAddress, + + [bool]$MultiConnect, + + [string]$SingleSignOnDir, + + [string]$OCSPVerify, + + [Int32]$FollowVSID, + + [ValidateRange(0, 14)] + [int]$TlsType = 0, + + [string]$CheckPostData, + + [string]$CheckCodes, + + [string]$PreProcPrecedence, + + [Int16]$PreProcPrecedencePos, + + [string]$RequestPrecedence, + + [Int16]$RequestPrecedencePos, + + [string]$ResponsePrecedence, + + [Int16]$ResponsePrecedencePos, + + [string]$RsRulePrecedence, + + [Int16]$RsRulePrecedencePos, + + [bool]$NeedHostName, + + [string]$CopyHdrFrom = "", + + [string]$CopyHdrTo = "", + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + SetAdcVirtualserviceCheckUserParam $params $CheckUse1_1 + + try { + $response = SendCmdToLm -Command "addvs" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "NewAdcVS" -LMResponse $response -AdditionalData $true + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-AdcVirtualService, New-VirtualService + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-AdcVirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [String]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 0 + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + if ($VirtualService -or $VSIndex -ge 0) { + $CmdClass = "GetAdcVS_Single" + $response = SendCmdToLm -Command "showvs" -ParameterValuePair $params -ConnParams $ConnParams + $adata = $true + } + else { + $CmdClass = "GetAdcVS_List" + $response = SendCmdToLm -Command "listvs" -ParameterValuePair $params -ConnParams $ConnParams + $adata = $false + } + HandleLmAnswer -Command2ExecClass $CmdClass -LMResponse $response -AdditionalData $adata + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-AdcVirtualService, Get-VirtualService + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-AdcVirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [Int16]$AddVia, + + [bool]$Cache, + + [string]$CertFile, + + [ValidateSet("tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", "ldap", "none")] + [string]$CheckType, + + [string]$CheckHost, + + [string]$CheckPattern, + + [string]$CheckUrl, + + [string]$CheckHeaders, + + [string]$LdapEndpoint, + + [string]$MatchLen, + + [ValidateRange(0, 1)] + [int]$CheckUse1_1 = -1, + + [Int32]$CheckPort, + + [bool]$EnhancedHealthChecks, + + [Int32]$RsMinimum, + + [ValidateRange(0, 2)] + [Int16]$ClientCert, + + [bool]$Compress, + + [string]$Cookie, + + [ValidateRange(0, 100)] + [Int16]$CachePercent, + + [string]$DefaultGW, + + [bool]$Enable, + + [string]$ErrorCode, + + [string]$ErrorUrl, + + [ValidateRange(3, 65530)] + [Int32]$PortFollow, + + [bool]$ForceL7, + + [ValidateRange(0, 86400)] + [Int32]$Idletime, + + [String[]]$LocalBindAddresses, + + [ValidateSet("gen", "http", "tls", "ts")] + [string]$VSType, + + [string]$Nickname, + + [ValidateSet("none", "ssl", "cookie", "active-cookie", "cookie-src", "active-cook-src", "cookie-hash", "url", + "query-hash", "host", "header", "super", "super-src", "src", "rdp", "rdp-src", "rdp-sb", "udpsip")] + [string]$Persist, + + [ValidateRange(0, 604800)] + [Int32]$PersistTimeout, + + [string]$QueryTag, + + [string]$CipherSet, + + [bool]$SSLReencrypt, + + [bool]$SSLReverse, + + [ValidateSet("", "http", "https")] + [string]$SSLRewrite, + + [string]$ReverseSNIHostname, + + [ValidateSet("rr", "wrr", "lc", "wlc", "fixed", "adaptive", "sh")] + [string]$Schedule, + + [ValidateRange(0, 5)] + [Int16]$ServerInit, + + [bool]$SSLAcceleration, + + [string]$StandByAddr, + + [string]$StandByPort, + + [Int32]$TransactionLimit, + + [bool]$Transparent, + + [bool]$SubnetOriginating, + + [bool]$UseforSnat, + + [ValidateSet("0", "1", "2", "4", "8")] + [string]$QoS, + + [int32]$CheckUseGet, + + [ValidateRange(0, 7)] + [Int16]$Verify, + + [string]$ExtraHdrKey, + + [string]$ExtraHdrValue, + + [string]$AllowedHosts, + + [string]$AllowedDirectories, + + [string]$AllowedGroups, + + [string]$GroupSIDs, + + [string]$SteeringGroups, + + [bool]$IncludeNestedGroups, + + [bool]$DisplayPubPriv, + + [bool]$DisablePasswordForm, + + [string]$Domain, + + [string]$AltDomains, + + [string]$Logoff, + + [ValidateRange(0, 7)] + [Int16]$ESPLogs, + + [string]$SMTPAllowedDomains, + + [bool]$ESPEnabled, + + [string]$UserPwdChangeUrl, + + [string]$UserPwdChangeMsg, + + [ValidateRange(0, 2)] + [Int16]$SecurityHeaderOptions, + + [ValidateRange(0, 5)] + [Int16]$InputAuthMode, + + [ValidateNotNullOrEmpty()] + [string]$OutConf, + + [ValidateRange(0, 3)] + [Int16]$OutputAuthMode, + + [ValidateRange(0, 1)] + [Int16]$StartTLSMode, + + [string]$ExtraPorts, + + [string]$AltAddress, + + [bool]$MultiConnect, + + [string]$SingleSignOnDir, + + [string]$OCSPVerify, + + [Int32]$FollowVSID, + + [ValidateRange(0, 14)] + [int]$TlsType = 0, + + [string]$CheckPostData, + + [string]$CheckCodes, + + [string]$PreProcPrecedence, + + [Int16]$PreProcPrecedencePos, + + [string]$RequestPrecedence, + + [Int16]$RequestPrecedencePos, + + [string]$ResponsePrecedence, + + [Int16]$ResponsePrecedencePos, + + [string]$RsRulePrecedence, + + [Int16]$RsRulePrecedencePos, + + [bool]$NeedHostName, + + [string]$CopyHdrFrom, + + [string]$CopyHdrTo, + + [string]$ServerFbaPath, + + [string]$ServerFbaPost, + + [bool]$Intercept, + + [bool]$AllowHTTP2, + + [ValidateNotNullOrEmpty()] + [string]$InterceptOpts, + + [ValidateNotNullOrEmpty()] + [string]$InterceptRules, + + [ValidateRange(0, 100000)] + [int32]$AlertThreshold, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + + if ($ServerFbaPost -and -not ($ServerFbaPath) ) { + setKempAPIReturnObject 400 "ERROR: ServerFbaPath must be set in order to use ServerFbaPost parameter" $null + return + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + SetAdcVirtualserviceCheckUserParam $params $CheckUse1_1 + + try { + $response = SendCmdToLm -Command "modvs" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "SetAdcVS" -LMResponse $response -AdditionalData $true + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-AdcVirtualService, Set-VirtualService + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-AdcVirtualService +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [Parameter(ParameterSetName="IPAddress",ValueFromPipelineByPropertyName=$true)] + [Parameter(ParameterSetName="Credential")] + [Parameter(ParameterSetName="Certificate")] + [string]$VirtualService, + + [Parameter(ParameterSetName="IPAddress",ValueFromPipelineByPropertyName=$true)] + [Parameter(ParameterSetName="Credential")] + [Parameter(ParameterSetName="Certificate")] + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [Parameter(ParameterSetName="IPAddress",ValueFromPipelineByPropertyName=$true)] + [Parameter(ParameterSetName="Credential")] + [Parameter(ParameterSetName="Certificate")] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(ParameterSetName="Index",ValueFromPipelineByPropertyName=$true)] + [Parameter(ParameterSetName="Credential")] + [Parameter(ParameterSetName="Certificate")] + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + + $virtServ = GeAdcVirtualService $VirtualService $VSPort $VSProtocol $VSIndex $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($virtServ.ReturnCode -ne 200) { + if ($virtServ.Response -and $virtServ.Response.Contains("Unknown VS")) { + $virtServ.Response += ". Has it already been deleted?" + } + return $virtServ + } + + switch ($cmdCase) + { + "IPAddress" { + $params = @{vs=$VirtualService; port=$VSPort; prot=$VSProtocol} + } + + "Index" { + # NOTE: for SubVs we need to use the index only + if ($virtServ.Data.VS.VSAddress) { + $VirtualService = $virtServ.Data.VS.VSAddress + $Port = $virtServ.Data.VS.VSPort + $Protocol = $virtServ.Data.VS.Protocol + + $params = @{vs=$VirtualService; port=$Port; prot=$Protocol} + } + else { + $params = @{vs=$VSIndex} + } + } + + default { + Throw "Unknown error." + } + } + + if (($Force) -or ($PsCmdlet.ShouldProcess("$($VirtualService)/$($VSPort)/$($VSProtocol)", "Remove Virtual Service"))) { + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "delvs" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "RemoveAdcVS" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } + } +} +Export-ModuleMember -function Remove-AdcVirtualService, Remove-VirtualService + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-AdcSubVirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateNotNullOrEmpty()] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = [ordered]@{} + if ($cmdCase -eq "IPAddress") { + $params.Add("vs", $VirtualService) + $params.Add("port", $VSPort) + $params.Add("prot", $VSProtocol) + } + else { + $params.Add("vs", $VSIndex) + } + $params.Add("createsubvs", "") + + try { + $response = SendCmdToLm -Command "modvs" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "NewAdcVS" -LMResponse $response -AdditionalData $true + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-AdcSubVirtualService + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-AdcSubVirtualService +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$SubVSIndex, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ([String]::IsNullOrEmpty($SubVSIndex) -or $SubVSIndex -le 0) { + Throw "ERROR: VSIndex is a required parameter" + } + + $params = [ordered]@{VSIndex=$SubVSIndex} + $params.Add("Force", $Force) + + $params.Add("LoadBalancer", $LoadBalancer) + if ($LBPort) { + $params.Add("LBPort", $LBPort) + } + + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + if (-not ([String]::IsNullOrEmpty($CertSL))) { + $params.Add("SubjectCN", $SubjectCN) + $params.Add("CertificateStoreLocation", $CertSL) + } + else { + $params.Add("SubjectCN", $SubjectCN) + } + } + else { + $params.Add("Credential", $Credential) + } + Remove-AdcVirtualService @params + } +} +Export-ModuleMember -function Remove-AdcSubVirtualService + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-AdcSubVirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$SubVSIndex, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ([String]::IsNullOrEmpty($SubVSIndex) -or $SubVSIndex -le 0) { + Throw "ERROR: VSIndex is a required parameter" + } + + $params = [ordered]@{VSIndex=$SubVSIndex} + + $params.Add("LoadBalancer", $LoadBalancer) + if ($LBPort) { + $params.Add("LBPort", $LBPort) + } + + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + if (-not ([String]::IsNullOrEmpty($CertSL))) { + $params.Add("SubjectCN", $SubjectCN) + $params.Add("CertificateStoreLocation", $CertSL) + } + else { + $params.Add("SubjectCN", $SubjectCN) + } + } + else { + $params.Add("Credential", $Credential) + } + Get-AdcVirtualService @params +} +Export-ModuleMember -function Get-AdcSubVirtualService + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-AdcSubVirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$SubVSIndex, + + [Int16]$AddVia, + + [ValidateSet("tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", "ldap", "none")] + [string]$CheckType, + + [string]$CheckHost, + + [string]$CheckPattern, + + [string]$CheckUrl, + + [string]$CheckHeaders, + + [string]$LdapEndpoint, + + [string]$MatchLen, + + [ValidateRange(0, 1)] + [int]$CheckUse1_1 = -1, + + [Int32]$CheckPort, + + [bool]$EnhancedHealthChecks, + + [Int32]$RsMinimum, + + [string]$Cookie, + + [bool]$Enable, + + [string]$ErrorCode, + + [string]$ErrorUrl, + + [ValidateRange(3, 65530)] + [Int32]$PortFollow, + + [bool]$ForceL7, + + [ValidateRange(0, 86400)] + [Int32]$Idletime, + + [String[]]$LocalBindAddresses, + + [ValidateSet("gen", "http", "tls", "ts")] + [string]$VSType, + + [string]$Nickname, + + [ValidateSet("none", "ssl", "cookie", "active-cookie", "cookie-src", "active-cook-src", "cookie-hash", "url", + "query-hash", "host", "header", "super", "super-src", "src", "rdp", "rdp-src", "rdp-sb", "udpsip")] + [string]$Persist, + + [ValidateRange(0, 604800)] + [Int32]$PersistTimeout, + + [string]$QueryTag, + + [ValidateSet("rr", "wrr", "lc", "wlc", "fixed", "adaptive", "sh")] + [string]$Schedule, + + [ValidateRange(0, 5)] + [Int16]$ServerInit, + + [string]$StandByAddr, + + [string]$StandByPort, + + [Int32]$TransactionLimit, + + [bool]$Transparent, + + [bool]$SubnetOriginating, + + [ValidateSet("0", "1", "2", "4", "8")] + [string]$QoS, + + [int32]$CheckUseGet, + + [ValidateRange(0, 7)] + [Int16]$Verify, + + [string]$ExtraHdrKey, + + [string]$ExtraHdrValue, + + [string]$AllowedHosts, + + [string]$AllowedDirectories, + + [string]$AllowedGroups, + + [string]$GroupSIDs, + + [string]$SteeringGroups, + + [bool]$IncludeNestedGroups, + + [bool]$DisplayPubPriv, + + [bool]$DisablePasswordForm, + + [string]$Domain, + + [string]$AltDomains, + + [string]$Logoff, + + [ValidateRange(0, 7)] + [Int16]$ESPLogs, + + [string]$SMTPAllowedDomains, + + [bool]$ESPEnabled, + + [string]$UserPwdChangeUrl, + + [string]$UserPwdChangeMsg, + + [ValidateRange(0, 2)] + [Int16]$SecurityHeaderOptions, + + [ValidateRange(0, 5)] + [Int16]$InputAuthMode, + + [ValidateNotNullOrEmpty()] + [string]$OutConf, + + [ValidateRange(0, 3)] + [Int16]$OutputAuthMode, + + [ValidateRange(0, 1)] + [Int16]$StartTLSMode, + + [bool]$MultiConnect, + + [string]$SingleSignOnDir, + + [string]$OCSPVerify, + + [Int32]$FollowVSID, + + [ValidateRange(0, 14)] + [int]$TlsType = 0, + + [string]$CheckPostData, + + [string]$CheckCodes, + + [string]$PreProcPrecedence, + + [Int16]$PreProcPrecedencePos, + + [string]$RequestPrecedence, + + [Int16]$RequestPrecedencePos, + + [string]$ResponsePrecedence, + + [Int16]$ResponsePrecedencePos, + + [string]$RsRulePrecedence, + + [Int16]$RsRulePrecedencePos, + + [bool]$NeedHostName, + + [string]$CopyHdrFrom, + + [string]$CopyHdrTo, + + [string]$ServerFbaPath, + + [string]$ServerFbaPost, + + [bool]$Intercept, + + [ValidateNotNullOrEmpty()] + [string]$InterceptOpts, + + [ValidateNotNullOrEmpty()] + [string]$InterceptRules, + + [ValidateRange(0, 100000)] + [int32]$AlertThreshold, + + [ValidateRange(1, 65530)] + [Int32]$Weight, + + [ValidateRange(0, 100000)] + [Int64]$Limit = 0, + + [bool]$Critical, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ([String]::IsNullOrEmpty($SubVSIndex) -or $SubVSIndex -le 0) { + Throw "ERROR: VSIndex is a required parameter" + } + + if ($ServerFbaPost -and -not ($ServerFbaPath) ) { + setKempAPIReturnObject 400 "ERROR: ServerFbaPath must be set in order to use ServerFbaPost parameter" $null + return + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + $params.Remove("SubVSIndex") + $params.Add("vs", $SubVSIndex) + + SetAdcVirtualserviceCheckUserParam $params $CheckUse1_1 + + try { + $response = SendCmdToLm -Command "modvs" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "SetAdcVS" -LMResponse $response -AdditionalData $true + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-AdcSubVirtualService + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-AdcRealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [Parameter(Mandatory=$true)] + [ValidateRange(3, 65530)] + [Int32]$RealServerPort, + + [ValidateRange(1, 65530)] + [Int32]$Weight, + + [ValidateSet("nat", "route")] + [string]$Forward = "nat", + + [bool]$Enable = $true, + + [bool]$Non_Local = $false, + + [ValidateRange(0, 100000)] + [Int64]$Limit = 0, + + [bool]$Critical, + + [ValidateRange(0, 65535)] + [Int32]$Follow, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addrs" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "NewAdcRS" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-AdcRealServer, New-RealServer + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-AdcRealServer +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RealServerPort, + + [Int32]$RSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + checkAdcRSInputParams $RealServer $RealServerPort $RSIndex | Out-Null + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + if (($Force) -or ($PsCmdlet.ShouldProcess($RealServer, "Remove Real Server"))) { + + try { + $response = SendCmdToLm -Command "delrs" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } + } +} +Export-ModuleMember -function Remove-AdcRealServer, Remove-RealServer + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-AdcRealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RealServerPort, + + [Int32]$RSIndex = -1, + + [ValidateRange(3, 65530)] + [Int32]$NewPort, + + [ValidateRange(1, 65530)] + [Int32]$Weight, + + [ValidateSet("nat", "route")] + [string]$Forward = "nat", + + [bool]$Enable = $true, + + [ValidateRange(0, 100000)] + [Int64]$Limit = 0, + + [bool]$Critical, + + [ValidateRange(0, 65535)] + [Int32]$Follow, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + checkAdcRSInputParams $RealServer $RealServerPort $RSIndex | Out-Null + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "modrs" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-AdcRealServer, Set-RealServer + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-AdcRealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [String]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [Int32]$RSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $vsParamsCheck = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + $rsParamsCheck = checkAdcRSInputParams $RealServer $RSPort $RSIndex 1 + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = [ordered]@{} + + # default values + $cmd2exec = "showrs" + $Command2ExecClass = "GetAdcRealServer" + + if ($vsParamsCheck -eq "IPAddress") { + $params.Add("vs", $VirtualService) + $params.Add("port", $VSPort) + $params.Add("prot", $VSProtocol) + } + else { + $params.Add("vs", $VSIndex) + } + + if ($rsParamsCheck -eq "IPAddress") { + $params.Add("rs", $RealServer) + $params.Add("rsport", $RSPort) + } + elseif ($rsParamsCheck -eq "Index") { + $params.Add("rs", "!$RSIndex") + } + else { + # to get all the RS that belong to the specified VS + $cmd2exec = "showvs" + $Command2ExecClass = "GetAdcVS_Single" + } + + try { + $response = SendCmdToLm -Command $cmd2exec -ParameterValuePair $params -ConnParams $ConnParams + + $handleLmAnswerParams = [ordered]@{} + $handleLmAnswerParams.Add("Command2ExecClass", $Command2ExecClass) + $handleLmAnswerParams.Add("LMResponse", $response) + + if ($rsParamsCheck -eq "All") { + $handleLmAnswerParams.Add("AdditionalData", $true) + } + + $lma = HandleLmAnswer @handleLmAnswerParams + + if ($rsParamsCheck -ne "All") { + return $lma + } + else { + $rsData = $lma.Data.VS.Rs + + $rsConf = [ordered]@{} + $rsConf.PSTypeName = "Rs" + $rsConf.Add("Rs", $rsData) | Out-null + $rsObj = New-Object -TypeName PSObject -Property $rsConf + + setKempAPIReturnObject 200 "Command successfully executed." $rsObj + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-AdcRealServer, Get-RealServer + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Enable-AdcRealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RSIpAddress, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [ValidateNotNullOrEmpty()] + [string]$RSFqdn, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ([String]::IsNullOrEmpty($RSIpaddress)) { + Throw "ERROR: RSIpAddress is a mandatory parameter. Please check your input" + } + + $params = @{rs=$RSIpaddress} + + if ($RSPort) { + $params.Add("port", $RSPort) | Out-null + } + + if ($RSFqdn) { + $params.Add("dnsname", $RSFqdn) | Out-null + } + EnableDisableAdcRealServer "enablers" $params $ConnParams +} +Export-ModuleMember -function Enable-AdcRealServer, Enable-RealServer + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Disable-AdcRealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RSIpaddress, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [ValidateNotNullOrEmpty()] + [string]$RSFqdn, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ([String]::IsNullOrEmpty($RSIpaddress)) { + Throw "ERROR: RSIpAddress is a mandatory parameter. Please check your input" + } + + $params = @{rs=$RSIpaddress} + + if ($RSPort) { + $params.Add("port", $RSPort) | Out-null + } + + if ($RSFqdn) { + $params.Add("dnsname", $RSFqdn) | Out-null + } + EnableDisableAdcRealServer "disablers" $params $ConnParams +} +Export-ModuleMember -function Disable-AdcRealServer, Disable-RealServer + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-AdcVirtualServiceRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateSet("pre", "response", "request")] + [string]$RuleType, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $Command = "" + switch ($RuleType) + { + "pre" {$Command = "addprerule"} + "response" {$Command = "addresponserule"} + "request" {$Command = "addrequestrule"} + } + + try { + $response = SendCmdToLm -Command $Command -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-AdcVirtualServiceRule + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-AdcVirtualServiceRule +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateSet("pre", "response", "request")] + [string]$RuleType, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $Command = "" + switch ($RuleType) + { + "pre" {$Command = "delprerule"} + "response" {$Command = "delresponserule"} + "request" {$Command = "delrequestrule"} + } + + if (($Force) -or ($PsCmdlet.ShouldProcess($RuleName, "Remove Virtual Server Rule"))) { + try { + $response = SendCmdToLm -Command $Command -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } +} +Export-ModuleMember -function Remove-AdcVirtualServiceRule, Remove-VirtualServerRule, Remove-AdcVirtualServerRule + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-AdcVirtualServiceResponseBodyRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int32]$VSIndex, + + [Parameter(Mandatory=$true)] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ($VSIndex -le 0) { + Throw "ERROR: VSIndex must be greater than 0." + return + } + + if ([String]::IsNullOrEmpty($RuleName)) { + Throw "ERROR: Rule name is a mandatory parameter. Please check your input" + return + } + + try { + $response = SendCmdToLm -Command "addresponsebodyrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-AdcVirtualServiceResponseBodyRule + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-AdcVirtualServiceResponseBodyRule +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int32]$VSIndex, + + [Parameter(Mandatory=$true)] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ($VSIndex -le 0) { + Throw "ERROR: VSIndex must be greater than 0." + return + } + + if ([String]::IsNullOrEmpty($RuleName)) { + Throw "ERROR: Rule name is a mandatory parameter. Please check your input" + return + } + + if (($Force) -or ($PsCmdlet.ShouldProcess($RuleName, "Remove Response Body Rule"))) { + try { + $response = SendCmdToLm -Command "delresponsebodyrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } +} +Export-ModuleMember -function Remove-AdcVirtualServiceResponseBodyRule + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-AdcRealServerRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [Int32]$RSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + checkAdcRSInputParams $RealServer $RSPort $RSIndex | Out-Null + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "addrsrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-AdcRealServerRule, New-RealServerRule + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-AdcRealServerRule +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [Int32]$RSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $cmdCase = checkAdcVSInputParams $VirtualService $VSPort $VSProtocol $VSIndex 1 + checkAdcRSInputParams $RealServer $RSPort $RSIndex | Out-Null + + $params = ConvertBoundParameters -hashtable $psboundparameters + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (($Force) -or ($PsCmdlet.ShouldProcess($RuleName, "Remove Real Server Rule"))) { + try { + $response = SendCmdToLm -Command "delrsrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } +} +Export-ModuleMember -function Remove-AdcRealServerRule, Remove-RealServerRule + +Function New-AdcContentRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [string]$RuleName, + + [ValidateSet("regex", "prefix", "postfix")] + [string]$MatchType = "regex", + + [bool]$IncHost = $false, + + [bool]$NoCase = $false, + + [bool]$Negate = $false, + + [bool]$IncQuery = $false, + + [string]$Header, + + [string]$Pattern, + + [string]$Replacement, + + [ValidateRange(0, 5)] + [Int32]$Type, # TODO: to change Type to RuleType. Pay attention to the mapping + # to add values range + # EVEN BETTER: set the RuleType to string as in Get-AdcContentRule with the + # same values and maps the string type to the corrispondent integer value. + + [ValidateRange(0, 1)] + [int]$MustFail, + + [ValidateRange(0, 9)] + [int]$OnlyOnFlag, + + [ValidateRange(0, 9)] + [int]$SetFlagOnMatch, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($params.ContainsKey("rule")) { + $params.Remove("rule") + $params.Add("Name", $RuleName) + } + elseif ($params.ContainsKey("RuleName")) { + $params.Remove("RuleName") + $params.Add("Name", $RuleName) + } + else { + Throw "[New-AdcContentRule] ERROR: The parameter RuleName is mandatory." + } + + if ($params.ContainsKey("MustFail")) { + $params.Remove("MustFail") + $params.Add("mustfail", $MustFail) + } + if ($params.ContainsKey("OnlyOnFlag")) { + $params.Remove("OnlyOnFlag") + $params.Add("onlyonflag", $OnlyOnFlag) + } + if ($params.ContainsKey("SetFlagOnMatch")) { + $params.Remove("SetFlagOnMatch") + $params.Add("setonmatch", $SetFlagOnMatch) + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "addrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "AddAdcContentRule" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-AdcContentRule, New-Rule + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-AdcContentRule +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true, ValueFromPipeline=$true)] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (($Force) -or ($PsCmdlet.ShouldProcess($Name, "Remove Content Rule"))) { + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "delrule" -ParameterValuePair @{name=$RuleName} -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } +} +Export-ModuleMember -function Remove-AdcContentRule, Remove-Rule + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-AdcContentRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [string]$RuleName, + + [ValidateSet("regex", "prefix", "postfix")] + [string]$MatchType = "regex", + + [bool]$IncHost, + + [bool]$NoCase, + + [bool]$Negate, + + [bool]$IncQuery, + + [string]$Header, + + [string]$Pattern, + + [string]$Replacement, + + [ValidateRange(0, 5)] + [Int32]$Type, # TODO: to change Type to RuleType. Pay attention to the mapping + # to add values range + # EVEN BETTER: set the RuleType to string as in Get-AdcContentRule with the + # same values and maps the string type to the corrispondent integer value. + + [ValidateRange(0, 1)] + [int]$MustFail, + + [ValidateRange(0, 9)] + [int]$OnlyOnFlag, + + [ValidateRange(0, 9)] + [int]$SetFlagOnMatch, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($params.ContainsKey("rule")) { + $params.Remove("rule") + $params.Add("Name", $RuleName) + } + elseif ($params.ContainsKey("RuleName")) { + $params.Remove("RuleName") + $params.Add("Name", $RuleName) + } + else { + Throw "[Set-AdcContentRule] ERROR: The parameter RuleName is mandatory." + } + + if ($params.ContainsKey("MustFail")) { + $params.Remove("MustFail") + $params.Add("mustfail", $MustFail) + } + if ($params.ContainsKey("OnlyOnFlag")) { + $params.Remove("OnlyOnFlag") + $params.Add("onlyonflag", $OnlyOnFlag) + } + if ($params.ContainsKey("SetFlagOnMatch")) { + $params.Remove("SetFlagOnMatch") + $params.Add("setonmatch", $SetFlagOnMatch) + } + + # + # TODO: Investigate if it should be better to retrieve the rule type + # to check the rule type against the pattern parameter. + # From the Official REST-apis documentation: + # Unless modifying/adding an AddHeaderRule, the pattern parameter must be supplied. + # + # PRO + # 1) checking if the rule exists before performing the set + # 2) checking if the pattern parameter is required or not. + # + # CON + # 1) the command requires 2 REST api calls on success. + # + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "modrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "SetAdcContentRule" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-AdcContentRule, Set-Rule + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-AdcContentRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$RuleName, + + [ValidateSet("MatchContentRule", "AddHeaderRule", "DeleteHeaderRule", "ReplaceHeaderRule", "ModifyUrlRule", "ReplaceBodyRule")] + [string]$RuleType, + + [switch]$All, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = @{} + if ($All) { + if (([String]::IsNullOrEmpty($RuleName)) -and ([String]::IsNullOrEmpty($RuleType))) { + Write-Verbose "ALL case" + } + else { + Throw "[Get-AdcContentRule] ERROR: only one option can be set." + } + } + else { + if (-not ([String]::IsNullOrEmpty($RuleName)) -and ([String]::IsNullOrEmpty($RuleType))) { + Write-Verbose "Name case" + $params.Add("name", $RuleName) + } + elseif (-not ([String]::IsNullOrEmpty($RuleType)) -and ([String]::IsNullOrEmpty($RuleName))) { + Write-Verbose "Type case" + $TypeNumber = $SystemRuleType[$RuleType] + $params.Add("type", $TypeNumber) + } + else { + Throw "[Get-AdcContentRule] ERROR: only one option can be set." + } + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "showrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetAdcContentRule" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-AdcContentRule, Get-Rule + +# Internal use only +Function mapInternalL7NamesToExt($L7ConfHt, $paramName, $paramValue) +{ + $alwaysCheckPersistHtValues = [ordered]@{"0" = "No"; "1" = "Yes"; "2" = "Yes - Accept Changes"} + $additionalL7HeaderHtValues = [ordered]@{"0" = "X-ClientSide"; "1" = "X-Forwarded-For"; "2" = "None"} + $100ContinueHandlingHtValues = [ordered]@{"0" = "RFC-2616 Compliant"; "1" = "Require 100-Continue"; "2" = "RFC-7231 Compliant"} + + switch ($paramName) + { + "localbind" { $L7ConfHt.Add("ScalingOver64KConnections", $paramValue); break } + + "alwayspersist" { + $persistValue = $alwaysCheckPersistHtValues[$paramValue] + $L7ConfHt.Add("AlwaysCheckPersist", $persistValue) + break + } + + "addcookieport" { $L7ConfHt.Add("AddPortToActiveCookie", $paramValue); break } + + "rfcconform" { $L7ConfHt.Add("RFCConform", $paramValue); break } + + "closeonerror" { $L7ConfHt.Add("CloseOnError", $paramValue); break } + + "addvia" { $L7ConfHt.Add("AddViaHeaderInCacheResponses", $paramValue); break } + + "rsarelocal" { $L7ConfHt.Add("RSAreLocal", $paramValue); break } + + "droponfail" { $L7ConfHt.Add("DropOnRSFail", $paramValue); break } + + "dropatdrainend" { $L7ConfHt.Add("DropAtDrainEnd", $paramValue); break } + + "transparent" { $L7ConfHt.Add("Transparent", $paramValue); break } + + "authtimeout" { $L7ConfHt.Add("L7AuthTimeoutSecs", $paramValue); break } + + "clienttokentimeout" { $L7ConfHt.Add("L7ClientTokenTimeoutSecs", $paramValue); break } + + "finalpersist" { $L7ConfHt.Add("L7ConnectionDrainTimeoutSecs", $paramValue); break } + + "addforwardheader" { + $addForwardHeaderValue = $additionalL7HeaderHtValues[$paramValue] + $L7ConfHt.Add("AdditionalL7Header", $addForwardHeaderValue); + break + } + + "expect100" { + $Expect100Value = $100ContinueHandlingHtValues[$paramValue] + $L7ConfHt.Add("OneHundredContinueHandling", $Expect100Value); + break + } + + "allowemptyposts" { $L7ConfHt.Add("AllowEmptyPosts", $paramValue); break } + + "AllowEmptyHttpHeaders" { $L7ConfHt.Add("AllowEmptyHttpHeaders", $paramValue); break } + + "ForceFullRSMatch" { $L7ConfHt.Add("ForceCompleteRSMatch", $paramValue); break } + + "slowstart" { $L7ConfHt.Add("SlowStart", $paramValue); break } + + "ShareSubVSPersist" { $L7ConfHt.Add("ShareSubVSPersistance", $paramValue); break } + } +} + +# Internal use only +Function mapL7ConfigName($paramsHT, $psName, $psValue) +{ + $alwaysCheckPersistHtValues = [ordered]@{"No" = 0; "Yes" = 1; "Yes - Accept Changes" = 2} + $additionalL7HeaderHtValues = [ordered]@{"X-ClientSide" = 0; "X-Forwarded-For" = 1; "None" = 2} + $100ContinueHandlingHtValues = [ordered]@{"RFC-2616 Compliant" = 0; "Require 100-Continue" = 1; "RFC-7231 Compliant" = 2} + + switch ($psName) + { + "AlwaysCheckPersist" { + $persistValue = $alwaysCheckPersistHtValues[$psValue] + $paramsHT.Remove("AlwaysCheckPersist") + $paramsHT.Add("alwayspersist", $persistValue) + break + } + + "AdditionalL7Header" { + $addForwardHeaderValue = $additionalL7HeaderHtValues[$psValue] + $paramsHT.Remove("AdditionalL7Header") + $paramsHT.Add("addforwardheader", $addForwardHeaderValue) + break + } + + "OneHundredContinueHandling" { + $Expect100Value = $100ContinueHandlingHtValues[$psValue] + $paramsHT.Remove("OneHundredContinueHandling") + $paramsHT.Add("expect100", $Expect100Value) + break + } + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-AdcL7Configuration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + # NOTE: add new parameters in the WUI same order + $l7ConfParameters = @("localbind", "alwayspersist", "addcookieport", "rfcconform", + "closeonerror", "addvia", "rsarelocal", "droponfail", + "dropatdrainend", "transparent", "authtimeout", "clienttokentimeout", "finalpersist", + "addforwardheader", "expect100", "allowemptyposts", "AllowEmptyHttpHeaders", + "ForceFullRSMatch", "slowstart", "ShareSubVSPersist") + + $l7ConfSettings = [ordered]@{} + $l7ConfSettings.PSTypeName = "AdcL7Settings" + foreach ($param in $l7ConfParameters) { + $lma = GetLmParameter "$param" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + $paramValue = $lma.Data.$param + mapInternalL7NamesToExt $l7ConfSettings $param $paramValue + + Start-Sleep -m 150 + } + $data = New-Object -TypeName PSObject -Property $l7ConfSettings + + $l7ConfConf = [ordered]@{} + $l7ConfConf.PSTypeName = "AdcL7Configuration" + $l7ConfConf.add("AdcL7Configuration", $data) + $l7ConfObject = New-Object -TypeName PSObject -Property $l7ConfConf + + setKempAPIReturnObject 200 "Command successfully executed" $l7ConfObject +} +Export-ModuleMember -function Get-AdcL7Configuration, Get-L7Configuration + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-AdcL7Configuration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$ScalingOver64KConnections, + + [ValidateSet("No", "Yes", "Yes - Accept Changes")] + [string]$AlwaysCheckPersist, + + [bool]$AddPortToActiveCookie, + + [bool]$RFCConform, + + [bool]$CloseOnError, + + [bool]$AddViaHeaderInCacheResponses, + + [bool]$RSAreLocal, + + [bool]$DropOnRSFail, + + [bool]$DropAtDrainEnd, + + [bool]$Transparent, + + [ValidateRange(30, 300)] + [Int16]$L7AuthTimeoutSecs, + + [ValidateRange(60, 300)] + [Int16]$L7ClientTokenTimeoutSecs, + + [int]$L7ConnectionDrainTimeoutSecs, + + [ValidateSet("X-ClientSide", "X-Forwarded-For", "None")] + [string]$AdditionalL7Header, + + [ValidateSet("RFC-2616 Compliant", "Require 100-Continue", "RFC-7231 Compliant")] + [string]$OneHundredContinueHandling, + + [bool]$AllowEmptyPosts, + + [bool]$AllowEmptyHttpHeaders, + + [bool]$ForceCompleteRSMatch, + + [ValidateRange(0, 600)] + [Int16]$SlowStart, + + [bool]$ShareSubVSPersistance, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + if ($AlwaysCheckPersist) { + mapL7ConfigName $params "AlwaysCheckPersist" $AlwaysCheckPersist + } + + if ($AdditionalL7Header) { + mapL7ConfigName $params "AdditionalL7Header" $AdditionalL7Header + } + + if ($OneHundredContinueHandling) { + mapL7ConfigName $params "OneHundredContinueHandling" $OneHundredContinueHandling + } + + foreach ($entry in $params.Keys) { + $lma = SetLmParameter $entry $params[$entry] $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + Start-Sleep -m 150 + } + + $getParams = [ordered]@{LoadBalancer=$LoadBalancer; LBPort=$LBPort} + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + $getParams.Add("SubjectCN", $SubjectCN) + if (-not ([String]::IsNullOrEmpty($CertificateStoreLocation))) { + $getParams.Add("CertificateStoreLocation", $CertificateStoreLocation) + } + } + else { + $getParams.Add("Credential", $Credential) + } + Get-AdcL7Configuration @getParams +} +Export-ModuleMember -function Set-AdcL7Configuration, Set-L7Configuration + +Function Get-AdcL7LogInsightSplitConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + param( + [validatenotnullorempty()] + [string]$LoadBalancer = $loadbalanceraddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $paramName = "logsplitinterval" + $lma = GetLmParameter "$paramName" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + $rc = $lma.ReturnCode + $rs = $lma.Response + setKempAPIReturnObject $rc $rs $null + return + } + + $AdcL7LogInsightSplitSettings = [ordered]@{} + $AdcL7LogInsightSplitSettings.PSTypeName = "Adc L7 LogInsightSplit Configuration" + + $paramValue = $lma.Data.$paramName + $AdcL7LogInsightSplitSettings.add($paramName, $paramValue) + + $data = New-Object -TypeName PSObject -Property $AdcL7LogInsightSplitSettings + setKempAPIReturnObject 200 "Command successfully executed" $data +} +Export-ModuleMember -function Get-AdcL7LogInsightSplitConfiguration, Get-LogSplitInterval + +Function Set-AdcL7LogInsightSplitConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$logsplitinterval, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + + foreach ($entry in $params.Keys) { + $lma = SetLmParameter $entry $params[$entry] $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + $rc = $lma.ReturnCode + $rs = $lma.Response + setKempAPIReturnObject $rc $rs $null + return + } + Start-Sleep -m 150 + } + + $getParams = [ordered]@{LoadBalancer=$LoadBalancer; LBPort=$LBPort} + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + $getParams.Add("SubjectCN", $SubjectCN) + if (-not ([String]::IsNullOrEmpty($CertificateStoreLocation))) { + $getParams.Add("CertificateStoreLocation", $CertificateStoreLocation) + } + } + else { + $getParams.Add("Credential", $Credential) + } + Get-AdcL7LogInsightSplitConfiguration @getParams +} +Export-ModuleMember -function Set-AdcL7LogInsightSplitConfiguration, Set-LogSplitInterval + +Function Get-AdcServiceHealth +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "showhealth" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetAdcServiceHealth" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-AdcServiceHealth, Get-ServiceHealth + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-AdcServiceHealth +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateRange(9, 120)] + [Int16]$CheckInterval, + + [ValidateRange(4, 60)] + [Int16]$ConnectTimeout, + + [ValidateRange(2, 15)] + [Int16]$RetryCount, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($CheckInterval) { + # not possible use the ParamReplacement array to replace CheckInterval with + # RetryInterval because CheckInterval is used also by Misc (see GEO). + $params.Remove("CheckInterval") + $params.Add("RetryInterval", $CheckInterval) + } + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + try { + $response = SendCmdToLm -Command "modhealth" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetAdcServiceHealth" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-AdcServiceHealth, Set-ServiceHealth + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-AdcHttpCompressionException +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,ValueFromPipeline=$true)] + [ValidatePattern({^\.})] + [String[]]$Extension, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + AddRemoveAdcHttpCacheCompressionException $Extension "addnocompress" $ConnParams + } +} +Export-ModuleMember -function New-AdcHttpCompressionException, Add-NoCompressExtension + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-AdcHttpCompressionException +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,ValueFromPipeline=$true)] + [ValidatePattern({^\.})] + [String[]]$Extension, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + AddRemoveAdcHttpCacheCompressionException $Extension "delnocompress" $ConnParams + } +} +Export-ModuleMember -function Remove-AdcHttpCompressionException, Remove-NoCompressExtension + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-AdcHttpCacheException +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true, ValueFromPipeline=$true)] + [ValidatePattern({^\.})] + [String[]]$Extension, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + AddRemoveAdcHttpCacheCompressionException $Extension "addnocache" $ConnParams + } +} +Export-ModuleMember -function New-AdcHttpCacheException, Add-NoCacheExtension + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-AdcHttpCacheException +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true, ValueFromPipeline=$true)] + [ValidatePattern({^\.})] + [String[]]$Extension, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + AddRemoveAdcHttpCacheCompressionException $Extension "delnocache" $ConnParams + } +} +Export-ModuleMember -function Remove-AdcHttpCacheException, Remove-NoCacheExtension + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-AdcAdaptiveHealthCheck +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "showadaptive" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "AdcAdaptiveHealthCheck" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-AdcAdaptiveHealthCheck, Get-AdaptiveCheck + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-AdcAdaptiveHealthCheck +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$AdaptiveURL, + [Int32]$AdaptivePort, + [ValidateRange(10, 60)] + [Int32]$AdaptiveInterval, + [Int16]$MinPercent, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "modadaptive" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "AdcAdaptiveHealthCheck" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-AdcAdaptiveHealthCheck, Set-AdaptiveCheck + +Function New-AdcVsWafRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VS, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(Mandatory=$true)] + [string]$Rule, + + [ValidateNotNullOrEmpty()] + [string]$Enablerules, + + [ValidateNotNullOrEmpty()] + [string]$Disablerules, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "vsaddwafrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-AdcVsWafRule, VSAddWafRule + +Function Remove-AdcVsWafRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VS, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Rule, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "vsremovewafrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-AdcVsWafRule, VSRemoveWafRule + +Function Get-AdcVsWafRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VS, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Rule, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + # NOTE: The Rule parameter string should have the following syntax: + # C/string for Custom rule + # Z/string for Application Generic rule + # A/string for Application Specific rule + # G/string for Generic rule + # + # Example: G/ip_reputation + # + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "vslistwafruleids" -ParameterValuePair $params -ConnParams $ConnParams + $ruleName = $Rule.Split("/")[1] + HandleLmAnswer -Command2ExecClass "AdcWafVSRules" -LMResponse $response -AdditionalData $ruleName + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-AdcVsWafRule, VSListWafRuleIds + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-AdcTotalVirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "vstotals" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetVSTotals" -LMResponse $response -AdditionalData $true + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-AdcTotalVirtualService + +# ================================================== +# endregion ADC +# ================================================== + + +# ================================================== +# region SECURITY +# ================================================== + +Function Enable-SecAPIAccess +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65535)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params.Add("param", "enableapi") + $params.Add("value", "yes") + + $response = Set-LmParameter @params + + if ($response.ReturnCode -eq 200) { + setKempAPIReturnObject 200 "The API is enabled" $null + } + else { + $errCode = $response.ReturnCode + $errMsg = $response.Response + setKempAPIReturnObject $errCode "$errMsg" $null + } +} +Export-ModuleMember -function Enable-SecAPIAccess + +Function Disable-SecAPIAccess +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65535)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params.Add("param", "enableapi") + $params.Add("value", "no") + + $response = Set-LmParameter @params + + if ($response.ReturnCode -eq 200) { + setKempAPIReturnObject 200 "The API is disabled" $null + } + else { + if ($response.Response.Contains("(404) Not Found.")) { + setKempAPIReturnObject 400 "The API is already disabled" $null + } + else { + return $response + } + } +} +Export-ModuleMember -function Disable-SecAPIAccess + +Function Test-SecAPIAccess +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65535)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params.Add("param", "version") + + $response = Get-LmParameter @params + if ($response.ReturnCode -eq 200) { + setKempAPIReturnObject 200 "The API is enabled" $response.Data + } + else { + if ($response.Response.Contains("(404) Not Found.")) { + setKempAPIReturnObject 400 "The API is NOT enabled" $null + } + else { + return $response + } + } +} +Export-ModuleMember -function Test-SecAPIAccess + +Function New-SecUser +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$User, + + [String]$Password, + + [bool]$Radius, + + [switch]$NoPassword, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ($Password -and ($NoPassword -eq $true) ) { + Throw "ERROR: Password and No Password are mutually exclusive" + return + } + + if ($NoPassword -eq $false -and ([String]::IsNullOrEmpty($Password)) ) { + Throw "ERROR: Password can't be null" + return + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($NoPassword -eq $true) { + $params.Remove("NoPassword") + $params.Add("nopass", "yes") + } + + try { + $response = SendCmdToLm -Command "useraddlocal" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-SecUser + +Function Remove-SecUser +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$User, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + if (($Force) -or ($PsCmdlet.ShouldProcess($Name, "Remove the user $User?"))) { + try { + $response = SendCmdToLm -Command "userdellocal" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } +} +Export-ModuleMember -function Remove-SecUser + +Function Get-SecUser +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$User, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + try { + if ( ([String]::IsNullOrEmpty($User)) ) { + $response = SendCmdToLm -Command "userlist" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetAllSecUser" -LMResponse $response + } + else { + $response = SendCmdToLm -Command "usershow" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetSingleSecUser" -LMResponse $response + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-SecUser + +# Internal use only +Function mapSecRemoteAccessParamsName($params) +{ + foreach ($key in Get-Member -InputObject $params -MemberType NoteProperty) { + switch ($key.Name) + { + "SSHPreAuth" { + renameCustomObjectProperty $params "SSHPreAuth" "SSHPreAuthBanner" + break + } + + "multihomedwui" { + renameCustomObjectProperty $params "multihomedwui" "MultiHomedWui" + break + } + + "tethering" { + renameCustomObjectProperty $params "tethering" "AllowUpdateChecks" + break + } + + <# + "geo_ssh_iface" { + renameCustomObjectProperty $params "geo_ssh_iface" "GeoInterfaceId" + break + } + #> + } + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-SecRemoteAccess +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $parameters = @("sshaccess", "sshiface", "sshport", "sshpreauth" + "wuiaccess", "multihomedwui", "enableapi", + "tethering", "geoclients", "geopartners", "geosshport", "geo_ssh_iface") + + $lma = GetLmParameterSet $parameters "SecRemoteAccessSettings" $params + + if ($lma.Data.SecRemoteAccessSettings) { + mapSecRemoteAccessParamsName $lma.Data.SecRemoteAccessSettings + } + + $lma +} +Export-ModuleMember -function Get-SecRemoteAccess + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-SecRemoteAccess +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$SSHAccess, + + [string]$SSHIface, + + [ValidateRange(3, 65530)] + [Int]$SSHPort, + + [string]$SSHPreAuthBanner, + + [bool]$WUIAccess, + + [bool]$MultiHomedWui, + + [bool]$EnableAPI, + + [bool]$AllowUpdateChecks, + + [String]$GeoClients, + + [String]$GeoPartners, + + [ValidateRange(3, 65530)] + [Int]$GeoSSHPort, + + #[int32]$GeoInterfaceId, + [int32]$geo_ssh_iface, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + + if ($parameters2set.ContainsKey("EnableAPI")) { + $errMsg = "EnableAPI parameter is deprecated. Please use Enable/Disable-SecAPIAccess cmdlets" + setKempAPIReturnObject 400 $errMsg $null + return + } + + if ($parameters2set.ContainsKey("GeoClients")) { + $parameters2set["GeoClients"] = $GeoClients.replace(" ", "") + } + + if ($parameters2set.ContainsKey("GeoPartners")) { + $parameters2set["GeoPartners"] = $GeoPartners.replace(" ", "") + } + + $params2Get = @() + foreach ($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + + Start-Sleep -m 200 + } + $lma = GetLmParameterSet $params2Get "Parameters" $params + + if ($lma.Data.Parameters) { + mapSecRemoteAccessParamsName $lma.Data.Parameters + } + + $lma +} +Export-ModuleMember -function Set-SecRemoteAccess + +# Internal use only +Function mapSecAdminAccessParamsName($params) +{ + foreach ($key in Get-Member -InputObject $params -MemberType NoteProperty) { + switch ($key.Name) + { + "wuiiface" { + renameCustomObjectProperty $params "wuiiface" "WuiNetworkInterfaceId" + break + } + + "wuiport" { + renameCustomObjectProperty $params "wuiport" "WuiPort" + break + } + + "admingw" { + renameCustomObjectProperty $params "admingw" "WuiDefaultGateway" + break + } + } + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-SecAdminAccess +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $secRemAccParams = @("wuiiface", "wuiport", "admingw") + $lma = GetLmParameterSet $secRemAccParams "SecAdminAccessConfiguration" $params + if ($lma.Data.SecAdminAccessConfiguration) { + mapSecAdminAccessParamsName $lma.Data.SecAdminAccessConfiguration + } + $lma +} +Export-ModuleMember -function Get-SecAdminAccess + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-SecAdminAccess +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateRange(0, 99)] + [Int32]$WuiNetworkInterfaceId = -1, + + [Parameter(Mandatory=$true)] + [ValidateRange(3, 65530)] + [int32]$WuiPort = -1, + + [string]$WuiDefaultGateway, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ($WuiNetworkInterfaceId -lt 0) { + Throw "ERROR: the WuiNetworkInterfaceId parameter is mandatory" + return + } + + if ($WuiPort -lt 0) { + Throw "ERROR: the WuiPort parameter is mandatory" + return + } + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $response = Get-NetworkInterface @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $interfaceDetails = $response.Data.Interface + $intfCheck = checkInterface $interfaceDetails $WuiNetworkInterfaceId + if ($intfCheck -eq $false) { + setKempAPIReturnObject 401 "The interface id [$WuiNetworkInterfaceId] is out of range." $null + return + } + Write-Verbose "(new) interface id [$WuiNetworkInterfaceId]" + $currIntfId = getCurrentIntfId $interfaceDetails $LoadBalancer + Write-Verbose "current interface id [$currIntfId]" + + try { + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $CmdParams = [ordered]@{ + wuiiface = $WuiNetworkInterfaceId + wuiport = $WuiPort + } + + if ($WuiDefaultGateway) { + $CmdParams.Add("wuidefaultgateway", $WuiDefaultGateway) + } + + $response = SendCmdToLm -Command "setadminaccess" -ParameterValuePair $CmdParams -ConnParams $ConnParams + $tmp = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($tmp.ReturnCode -ne 200) { + return $tmp + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + + if ($currIntfId -eq $WuiNetworkInterfaceId) { + $reconnectIP = $LoadBalancer + $newIntfIdx = $currIntfId + Write-Verbose "Interface id has not changed: connect with the same IP [$reconnectIP]" + } + else { + $reconnectIP = getIpFromCidrNotation $interfaceDetails[$WuiNetworkInterfaceId].IPAddress + $newIntfIdx = $WuiNetworkInterfaceId + $params.Remove("LoadBalancer") + $params.Add("LoadBalancer", $reconnectIP) + Write-Verbose "Interface id has changed: connect with the new IP [$reconnectIP]" + } + + if ($LBPort -eq $WuiPort) { + $reconnectPort = $LBPort + Write-Verbose "The LM https port has not changed: [$reconnectPort]" + } + else { + $reconnectPort = $WuiPort + $params.Remove("LBPort") + $params.Add("LBPort", $reconnectPort) + Write-Verbose "The LM https port has changed: [$reconnectPort]" + } + + $wait = $true + $counter = 1 + $maxStep = 10 + $sleepTime = 10 + while ($wait -eq $true) { + Write-Verbose "reconnecting to the LM . . . (step $counter, max step $maxStep)" + if (-not (Test-LmServerConnection -ComputerName $reconnectIP -Port $reconnectPort)) { + $counter += 1 + if ($counter -eq $maxStep) { + setKempAPIReturnObject 401 "ERROR: Unable to re-connect to the LM. Reboot the LM." $null + return + } + Start-Sleep -s $sleepTime + } + else { + $wait = $false + } + } + + $secRemAccParams = @("wuiiface", "wuiport", "admingw") + $lma = GetLmParameterSet $secRemAccParams "SecAdminAccessConfiguration" $params + if ($lma.Data.SecAdminAccessConfiguration) { + mapSecAdminAccessParamsName $lma.Data.SecAdminAccessConfiguration + } + $lma +} +Export-ModuleMember -function Set-SecAdminAccess, Set-AdminAccess + +# Internal use only +Function mapOutLoginMethodName($loginMethodData) +{ + if ($loginMethodData) { + renameCustomObjectProperty $loginMethodData "adminclientaccess" "LoginMethod" + $numericLoginMethodValue = $loginMethodData.LoginMethod + + $item = $loginMethodHT.GetEnumerator() | ? {$_.Value -eq $numericLoginMethodValue} + $loginMethodName = $item.Name + + $loginMethodData.LoginMethod = $loginMethodName + } +} + +Function Get-SecRemoteAccessLoginMethod +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $lma = GetLmParameter "adminclientaccess" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + mapOutLoginMethodName $lma.Data + $lma +} +Export-ModuleMember -function Get-SecRemoteAccessLoginMethod + +Function Set-SecRemoteAccessLoginMethod +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("PasswordOnly", "PasswordorClientCertificate", "ClientCertificateRequired", "ClientCertificateRequiredOCSP")] + [string]$LoginMethod, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + SetLmParameter "adminclientaccess" $loginMethodHT[$loginMethod] $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation +} +Export-ModuleMember -function Set-SecRemoteAccessLoginMethod + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-SecWuiAuthentication +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $parameters = @("radiusserver", "radiusport", "radiussecret", "radiusrevalidateinterval", + "radiusbackupserver", "radiusbackupport", "radiusbackupsecret", + "wuildapep", "sessionlocalauth", "sessionauthmode") + + GetLmParameterSet $parameters "SecWuiAuthenticationConfiguration" $params +} +Export-ModuleMember -function Get-SecWuiAuthentication, Get-WUIAuth + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-SecWuiAuthentication +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$RADIUSServer, + + [ValidateRange(3, 65530)] + [Int64]$RADIUSPort, + + [string]$RADIUSSecret, + + [string]$RADIUSBackupServer, + + [ValidateRange(3, 65530)] + [Int64]$RADIUSBackupPort, + + [string]$RADIUSBackupSecret, + + [int]$RADIUSRevalidateInterval, + + [string]$WuiLdapEp, + + [bool]$SessionLocalAuth, + + [ValidateSet(7, 22, 23, 262, 263, 278, 279, 772, 773, 774, 775, 788, 789, 790, 791)] + [Int16]$SessionAuthMode, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + + $params2Get = @() + foreach ($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + + Start-Sleep -m 200 + } + GetLmParameterSet $params2Get "Parameters" $params +} +Export-ModuleMember -function Set-SecWuiAuthentication, Set-WUIAuth + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-SecAdminWuiConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $parameters = @("WUITLSProtocols", "WUICipherset", + "sessioncontrol", "sessionbasicauth", "sessionmaxfailattempts", + "sessionidletime", "sessionconcurrent", "wuipreauth") + + GetLmParameterSet $parameters "SecAdminWuiConfiguration" $params +} +Export-ModuleMember -function Get-SecAdminWuiConfiguration, Get-WUISetting + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-SecAdminWuiConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateRange(0, 14)] + [int]$WUITLSProtocols, + + [ValidateSet("Default", "Default_NoRc4", "BestPractices", "Intermediate_compatibility", "Backward_compatibility", "WUI", "FIPS", "Legacy")] + [string]$WUICipherset, + + [bool]$sessioncontrol, + + [bool]$sessionbasicauth, + + [ValidateRange(1, 999)] + [Int16]$sessionmaxfailattempts, + + [ValidateRange(60, 86400)] + [Int32]$sessionidletime, + + [ValidateRange(0, 9)] + [Int16]$sessionconcurrent, + + [string]$wuipreauth, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + + $params2Get = @() + foreach ($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + + Start-Sleep -m 200 + } + GetLmParameterSet $params2Get "Parameters" $params +} +Export-ModuleMember -function Set-SecAdminWuiConfiguration, Set-WUISetting + +Function New-SecUserCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$User, + + [ValidateNotNullOrEmpty()] + [String]$Passphrase, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = [ordered]@{ + user = $User + } + + if ($Passphrase) { + $params.Add("passphrase", [System.Web.HttpUtility]::UrlEncode($Passphrase)) + } + + try { + $response = SendCmdToLm -Command "usernewcert" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-SecUserCertificate + +Function Export-SecUserCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$User, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Path, + [switch]$Force, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "userdownloadcert" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Export-SecUserCertificate + +Function Remove-SecUserCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$User, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "userdelcert" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-SecUserCertificate + +Function Set-SecSystemUserPassword +{ + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true)] + [String]$CurrentPassword, + + [Parameter(Mandatory=$true)] + [String]$NewPassword, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "usersetsyspassword" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-SecSystemUserPassword, UserSetSystemPassword + +Function Set-SecUserPermission +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$User, + + [Parameter(Mandatory=$true)] + [String]$Permissions, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "usersetperms" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-SecUserPermission, UserSetPermissions + +Function Set-SecUserPassword +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$User, + + [Parameter(Mandatory=$true)] + [String]$Password, + + [Parameter(Mandatory=$true)] + [ValidateRange(0, 1)] + [int]$Radius, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "userchangelocpass" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-SecUserPassword, UserChangeLocalPassword + +# ================================================== +# endregion SECURITY +# ================================================== + + +# ================================================== +# region SYSTEM +# ================================================== + +# Internal use only +Function SetScriptConnectionParams($Address, $LBPort) +{ + $cString = "Unless overridden using a local" + $lmIpString = "$cString -LoadBalancer parameter, all commands will now be directed to" + $lmPortString = "$cString -HTTPS Port parameter, all commands will now use HTTPS Port" + + $lmCurrentIp = "" + if ($script:LoadBalancerAddress) { + $lmCurrentIp = $script:LoadBalancerAddress + $script:LoadBalancerAddress = $null + } + + $lmCurrentHttpsPort = $null + if ($script:LBAccessPort) { + $lmCurrentHttpsPort = $script:LBAccessPort + $script:LBAccessPort = $null + } + + $connCheck = Test-LmServerConnection -ComputerName $Address -Port $LBPort + if ($connCheck -eq $true) { + $script:LoadBalancerAddress = $Address + $script:LBAccessPort = $LBPort + } + else { + if (-not ([String]::IsNullOrEmpty($lmCurrentIp))) { + $script:LoadBalancerAddress = $lmCurrentIp + } + if ($lmCurrentHttpsPort) { + $script:LBAccessPort = $lmCurrentHttpsPort + } + Throw "ERROR: Unable to resolve or connect to $Address`:$LBPort" + return + } + Write-Verbose "$lmIpString $($script:LoadBalancerAddress)" + Write-Verbose "$lmPortString $($script:LBAccessPort)." +} + +# Internal use only +Function SetScriptLoginCertParams($SubjectCN, $CertificateStoreLocation, $currentCertStoreLoc, $cString) +{ + $lmLoginCertString = "$cString -SubjectCN parameter, all commands will now use" + $lmLoginCertLocString = "$cString -CertificateStoreLocation parameter, all commands will now use" + + $temp_SubjectCN = $SubjectCN + + if (-not ([String]::IsNullOrEmpty($CertificateStoreLocation))) { + $temp_CertificateStoreLocation = $CertificateStoreLocation + } + else { + if (-not ([String]::IsNullOrEmpty($currentCertStoreLoc))) { + $temp_CertificateStoreLocation = $currentCertStoreLoc + } + else { + $temp_CertificateStoreLocation = "Cert:\CurrentUser\My" + } + } + + # test if the login certificate exists + $LCert = Get-LoginCertificate $temp_CertificateStoreLocation $temp_SubjectCN + if ($LCert -ne $null) { + $script:SubjectCN = $temp_SubjectCN + $script:CertificateStoreLocation = $temp_CertificateStoreLocation + + $script:cred = $null + } + else { + Throw "ERROR: Can't find certificate `"$temp_SubjectCN`" in the `"$temp_CertificateStoreLocation`" store." + return + } + Write-Verbose "$lmLoginCertString `"$($script:SubjectCN)`" as login certificate." + Write-Verbose "$lmLoginCertLocString `"$($script:CertificateStoreLocation)`" as certificate location." + Write-Verbose "Previous credential settings has been removed." +} + +# Internal use only +Function SetScriptLoginCredParams($Credential, $cString) +{ + $lmCredString = "$cString -Credential parameter, all commands will now use" + + $script:SubjectCN = $null + $script:CertificateStoreLocation = $null + $script:cred = $Credential + + Write-Verbose "$lmCredString `"$($script:cred.Username)`" as user." + Write-Verbose "Previous certificate settings have been removed." +} + +# Internal use only +Function SetBackScriptLoginMethod($currentSubjectCN, $currentCertStoreLoc, $currentCred) +{ + if ($currentSubjectCN) { + $script:SubjectCN = $currentSubjectCN + + if ($currentCertStoreLoc) { + $script:CertStoreLoc = $currentCertStoreLoc + } + $loginMethod = "certificate" + } + + if ($currentCred) { + $script:cred = $currentCred + $loginMethod = "credential" + } + return $loginMethod +} + +# Internal use only +Function SetScriptLoginMethod($SubjectCN, $CertificateStoreLocation, $Credential) +{ + $cString = "Unless overridden using a local" + + $currentSubjectCN = "" + if ($script:SubjectCN) { + $currentSubjectCN = $script:SubjectCN + $script:SubjectCN = $null + } + + $currentCertStoreLoc = "" + if ($script:CertStoreLoc) { + $currentCertStoreLoc = $script:CertStoreLoc + $script:CertStoreLoc = $null + } + + $currentCred = "" + if ($script:cred) { + $currentCred = $script:cred + $script:cred = $null + } + + if (-not ([String]::IsNullOrEmpty($SubjectCN))) { + SetScriptLoginCertParams $SubjectCN $CertificateStoreLocation $currentCertStoreLoc $cString + return "certificate" + } + elseif ($Credential -ne [System.Management.Automation.PSCredential]::Empty) { + SetScriptLoginCredParams $Credential $cString + return "credential" + } + else { + $loginMethod = SetBackScriptLoginMethod $currentSubjectCN $currentCertStoreLoc $currentCred + return $loginMethod + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Initialize-LmConnectionParameters +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Address, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = 443, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $null, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $null + ) + + if ( ([String]::IsNullOrEmpty($Address)) ) { + Throw "ERROR: The parameter `"Address`" is mandatory" + return + } + + $netAssembly = [Reflection.Assembly]::GetAssembly([System.Net.Configuration.SettingsSection]) + if ($netAssembly) { + $bindingFlags = [Reflection.BindingFlags] "Static,GetProperty,NonPublic" + $settingsType = $netAssembly.GetType("System.Net.Configuration.SettingsSectionInternal") + + $instance = $settingsType.InvokeMember("Section", $bindingFlags, $null, $null, @()) + if ($instance) { + $bindingFlags = "NonPublic","Instance" + $useUnsafeHeaderParsingField = $settingsType.GetField("useUnsafeHeaderParsing", $bindingFlags) + if ($useUnsafeHeaderParsingField) { + $useUnsafeHeaderParsingField.SetValue($instance, $true) + } + } + } + + $connectionData = [ordered]@{} + $connectionData.PSTypeName = "ConnectionData" + + SetScriptConnectionParams $Address $LBPort + + $connectionData.Add("LoadBalancer", $script:LoadBalancerAddress) + $connectionData.Add("HttpsPort", $script:LBAccessPort) + $connectionDataObject = New-Object -TypeName PSObject -Property $connectionData + + $loginData = [ordered]@{} + $loginData.PSTypeName = "LoginData" + + $response = SetScriptLoginMethod $SubjectCN $CertificateStoreLocation $Credential + if ($response -eq "certificate") { + $loginData.Add("SubjectCN", $script:SubjectCN) + $loginData.Add("CertificateStoreLocation", $script:CertificateStoreLocation) + } + elseif ($response -eq "credential") { + $loginData.Add("Credential", $script:cred) + } + else { + Write-Verbose "Login method not set or un-changed" + } + $loginDataObject = New-Object -TypeName PSObject -Property $loginData + + $connLoginData = [ordered]@{} + $connLoginData.PSTypeName = "ConnectionLoginData" + $connLoginData.Add("Connection", $connectionDataObject) + $connLoginData.Add("Login", $loginDataObject) + $connLoginDataObject = New-Object -TypeName PSObject -Property $connLoginData + + setKempAPIReturnObject 200 "Command successfully executed." $connLoginDataObject +} +Export-ModuleMember -function Initialize-LmConnectionParameters, Initialize-LoadBalancer + +Function Test-LmServerConnection +{ + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$ComputerName, + + [ValidateRange(3, 65530)] + [Int32]$Port + ) + + $params = [ordered]@{ + param = "version" + LoadBalancer = $ComputerName + LBPort = $Port + } + + if (-not ([String]::IsNullOrEmpty($script:SubjectCN))) { + $params["SubjectCN"] = $script:SubjectCN + if (-not ([String]::IsNullOrEmpty($script:CertificateStoreLocationn))) { + $params["CertificateStoreLocation"] = $script:CertificateStoreLocationn + } + } + elseif ($script:cred -ne $null) { + $params["Credential"] = $script:cred + } + else { + $fpasswd = ConvertTo-SecureString "invalidpassword" -AsPlainText -Force + $fcreds = New-Object System.Management.Automation.PSCredential("bal", $fpasswd) + $params["Credential"] = $fcreds + } + + try { + $LmTestServerConnectionFlag = $true + Write-Verbose -Message "Connecting to $ComputerName on $Port . . ." + $LmResponse = Get-LmParameter @params + $rc = $LmResponse.ReturnCode + $rs = $LmResponse.Response + Write-Verbose "ret code [$rc]" + Write-Verbose "ret resp [$rs]" + if ( ($rc -eq 200) -or + ($rc -eq 401 -and $rs.Contains("(401) Unauthorized")) -or + ($rc -eq 401 -and $rs.Contains("(401)")) -or + ($rc -eq 400 -and $rs.Contains("(401) Unauthorized")) -or + ($rc -eq 400 -and $rs.Contains("(401)")) -or + ($rc -eq 405 -and $rs.Contains("Unknown command")) -or + ($rc -eq 405) ) { + # the LM is up and running + $LmTestServerConnectionFlag = $false + Write-Verbose -Message "OK, the LM Server is up and running" + return $true + } + } + catch { + $errMsg = $_.Exception.Message + $LmTestServerConnectionFlag = $false + Write-Verbose -Message "ERROR: Exception caught [$errMsg]" + } + return $false +} +Export-ModuleMember -function Test-LmServerConnection, Test-ServerConnection + +# ================================================== +# endregion SYSTEM +# ================================================== + + +# ================================================== +# region GET-SET +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LmAllParameters +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = @{} + + try { + $response = SendCmdToLm -Command "getall" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetAllParameters" -LMResponse $response -AdditionalData "AllParameters" + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmAllParameters, Get-AllParameters + +Function Get-LmParameter +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Param, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "get" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetAllParameters" -LMResponse $response -AdditionalData "Parameter" + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmParameter, Get-Parameter + +Function Set-LmParameter +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Param, + + [Parameter(Mandatory=$true)] + [AllowEmptyString()] + [String]$Value = "", + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "set" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmParameter, Set-Parameter + +# ================================================== +# endregion GET-SET +# ================================================== + + +# ================================================== +# region TLS +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-TlsCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Name, + + [string]$Password, + + [switch]$Replace, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = [ordered]@{cert=$name; replace="0"} + if ($Replace) { + $params["replace"]="1" + } + + if ($Password) { + $params.Add("password",[System.Web.HttpUtility]::UrlEncode($Password)) + } + + try { + $response = SendCmdToLm -Command "addcert" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-TlsCertificate, New-Certificate + +Function Get-TlsCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$CertName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + if (([String]::IsNullOrEmpty($CertName))) { + $response = SendCmdToLm -Command "listcert" -ParameterValuePair $params -ConnParams $ConnParams + } + else { + $params.Remove("CertName") + $params.Add("cert", $CertName) + $response = SendCmdToLm -Command "readcert" -ParameterValuePair $params -ConnParams $ConnParams + } + HandleLmAnswer -Command2ExecClass "GetTlsCertificate" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-TlsCertificate, ListCert + +Function Remove-TlsCertificate +{ + [cmdletbinding(SupportsShouldProcess=$true,ConfirmImpact="High",DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (($Force) -or ($PsCmdlet.ShouldProcess($Name, "Remove Certificate"))) + { + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = @{cert=$Name} + + try { + $response = SendCmdToLm -Command "delcert" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } +} +Export-ModuleMember -function Remove-TlsCertificate, Remove-Certificate + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +# +# NOTE: If the input parameter Path is not set, +# the default location where the cmdlet +# tries to save the TlsCertificate is: +# +# $($Env:SystemRoot)\Temp +# +# If the above folder does not exist or it is not +# accessible (permissions) the cmdlet will fail. +# +Function Backup-TlsCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateLength(6, 64)] + [string]$Password, + + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{} + $params.Add("password", [System.Web.HttpUtility]::UrlEncode($Password)) + + if (-not ($Path)) { + $Path = "$($Env:SystemRoot)\Temp\CertificateBackup_$(Get-Date -format yyyy-MM-dd_HH-mm-ss)" + } + Write-Verbose "Path = $Path" + + try { + $response = SendCmdToLm -Command "backupcert" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Backup-TlsCertificate, Backup-Certificate + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Restore-TlsCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateLength(6, 64)] + [string]$Password, + + [ValidateScript({Test-Path $_})] + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateSet("Full", "VS", "Third")] + [string]$Type, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{} + $params.Add("password", [System.Web.HttpUtility]::UrlEncode($Password)) + $params.Add("Type", $Type.ToLower()) + + try { + $response = SendCmdToLm -Command "restorecert" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Restore-TlsCertificate, Restore-Certificate + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-TlsIntermediateCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Name, + + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + # + # TODO: the structure of this command is the same of addcert (New-TlsCertificate). + # To avoid code duplication, set a common function accepting among the input + # parameters, the command to execute (addcert/addintermediate). + # + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = [ordered]@{cert=$name; replace="0"} + if ($Replace) { + $params["replace"]="1" + } + + if ($Password) { + $params.Add("password",[System.Web.HttpUtility]::UrlEncode($Password)) + } + + try { + $response = SendCmdToLm -Command "addintermediate" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-TlsIntermediateCertificate, New-IntermediateCertificate + +Function Get-TlsIntermediateCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$CertName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + if (([String]::IsNullOrEmpty($CertName))) { + $response = SendCmdToLm -Command "listintermediate" -ParameterValuePair $params -ConnParams $ConnParams + } + else { + $params.Remove("CertName") + $params.Add("cert", $CertName) + $response = SendCmdToLm -Command "readintermediate" -ParameterValuePair $params -ConnParams $ConnParams + } + HandleLmAnswer -Command2ExecClass "GetTlsCertificate" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-TlsIntermediateCertificate + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-TlsIntermediateCertificate +{ + [cmdletbinding(SupportsShouldProcess=$true,ConfirmImpact="High",DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (($Force) -or ($PsCmdlet.ShouldProcess($Name, "Remove Certificate"))) + { + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = @{cert=$Name} + + try { + $response = SendCmdToLm -Command "delintermediate" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } +} +Export-ModuleMember -function Remove-TlsIntermediateCertificate, Remove-IntermediateCertificate + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-TlsCipherSet +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "getcipherset" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetTlsCipherSet" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-TlsCipherSet, GetCipherset + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-TlsCipherSet +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Value, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "modifycipherset" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-TlsCipherSet, ModifyCipherset + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-TlsCipherSet +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "delcipherset" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-TlsCipherSet, DelCipherset + +Function Get-TlsHSM +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "showhsm" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "TlsHSM" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-TlsHSM, HSMShow + +Function Set-TlsHSM +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [String]$Sethsm, + [String]$Safeaddr, + [String]$Clpass, + [bool]$Enable, + [String]$Cavhsmaddr, + [String]$Cavhsmpasswd, + [String]$Cavhsmuser, + [bool]$Cavhsmenable, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "hsmconfig" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "TlsHSM" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-TlsHSM, HSMConfigure + +Function New-TlsHSMClientCert +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Clcertname, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (-not ($Path)) { + $Path = "$($Env:SystemRoot)\Temp\LMBackup_$(Get-Date -format yyyy-MM-dd_HH-mm-ss)" + } + else { + if ($Path.EndsWith("\\") -or $Path.EndsWith("/")) { + $Path = $Path + $Clcertname + ".pem" + } + else { + $Path = $Path + "\\" + $Clcertname + ".pem" + } + } + Write-Verbose "Path = $Path" + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "hsmgenclientcert" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-TlsHSMClientCert, HSMGenerateClientCert + +Function Import-TlsHSMCACert +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "hsmuploadca" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Import-TlsHSMCACert, HSMUploadCACert + +# ================================================== +# endregion TLS +# ================================================== + + +# ================================================== +# region WAF +# ================================================== + +# Internal use only +Function validatePath($Path, $FileName) +{ + if ( ([String]::IsNullOrEmpty($Path)) ) { + Throw "ERROR: Path is NULL" + return + } + + if ($Path -and ( ($Path[-1] -eq "/") -or ($Path[-1] -eq "\") ) ) { + # Path is a folder + if ($FileName) { + $Path += $FileName + } + else { + Throw "ERROR: $Path is not a valid path." + return + } + } + + $folder = Split-Path -Path $Path + if ($folder -and (-not (Test-Path $folder))) { + Throw "ERROR: $folder is not a valid path." + return + } + + if ((Test-Path $Path) -and (Test-Path $Path -PathType Container)) { + Throw "ERROR: $Path is a folder." + return + } + + Write-Verbose "Path = $Path" + return $Path +} + +Function Get-WafRules +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "listwafrules" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetWafRules" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-WafRules, ListWafRules + +Function New-WafCustomRuleData +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($Path) { + $params.Remove("Path") + $Filename = Split-Path $Path -leaf + if ($Filename) { + $params.Add("filename", $Filename) + } + else { + Throw "ERROR: Malformed file name" + return + } + } + else { + Throw "ERROR: Path is a mandatory parameter" + return + } + + try { + $response = SendCmdToLm -Command "addwafcustomdata" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-WafCustomRuleData, AddWafCustomData + +Function Export-WafCustomRuleData +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RuleDataName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (-not ($Path)) { + $Path = "$($Env:SystemRoot)\Temp\WafCustomRuleData_$(Get-Date -format yyyy-MM-dd_HH-mm-ss)" + } + $Path = validatePath $Path $RuleDataName + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + $params.Remove("Path") + $params.Remove("RuleDataName") + $params.Add("filename", $RuleDataName) + + try { + $response = SendCmdToLm -Command "downloadwafcustomdata" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Export-WafCustomRuleData, DownloadWafCustomData + +Function Uninstall-WafCustomRuleData +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Filename, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "delwafcustomdata" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Uninstall-WafCustomRuleData, DelWafCustomData + +Function New-WafCustomRuleSet +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($Path) { + $params.Remove("Path") + $Filename = Split-Path $Path -leaf + if ($Filename) { + $params.Add("filename", $Filename) + } + else { + Throw "ERROR: Malformed file name" + return + } + } + else { + Throw "ERROR: Path is a mandatory parameter" + return + } + + try { + $response = SendCmdToLm -Command "addwafcustomrule" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-WafCustomRuleSet, AddWafCustomRule + +Function Uninstall-WafCustomRuleSet +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Filename, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "delwafcustomrule" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Uninstall-WafCustomRuleSet, DelWafCustomRule + +Function Export-WafCustomRuleSet +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RuleSetName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (-not ($Path)) { + $Path = "$($Env:SystemRoot)\Temp\WafCustomRuleSet_$(Get-Date -format yyyy-MM-dd_HH-mm-ss)" + } + $Path = validatePath $Path $RuleSetName + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + $params.Remove("Path") + $params.Remove("RuleSetName") + $params.Add("filename", $RuleSetName) + + try { + $response = SendCmdToLm -Command "downloadwafcustomrule" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Export-WafCustomRuleSet, DownloadWafCustomRule + +Function Enable-WafRemoteLogging +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RemoteURI, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Username, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Passwd, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "enablewafremotelogging" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Enable-WafRemoteLogging, EnableWafRemoteLogging + +Function Disable-WafRemoteLogging +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "disablewafremotelogging" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Disable-WafRemoteLogging, DisableWafRemoteLogging + +Function Set-WafLogFormat +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateSet("native", "json")] + [string]$LogFormat, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "setwaflogformat" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-WafLogFormat + +Function Get-WafAuditFiles +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "listwafauditfiles" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetWafAuditFiles" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-WafAuditFiles, ListWafAuditFiles + +Function Export-WafAuditLog +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$AuditFile, + + [string]$Filter, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($Path) { + $params.Remove("Path") + } + $params.Remove("AuditFile") + $params.Add("File", $AuditFile) + + if (-not ($Path)) { + $Path = "$($Env:SystemRoot)\Temp\wafaudit_$(Get-Date -format yyyy-MM-dd_HH-mm-ss).log" + } + $Path = validatePath $Path $AuditFile + + try { + $response = SendCmdToLm -Command "downloadwafauditlog" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Export-WafAuditLog, DownloadWafAuditLog + +Function Export-WafChangeLog +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($Path) { + $params.Remove("Path") + } + + if (-not ($Path)) { + $Path = "$($Env:SystemRoot)\Temp\WAF_changes_$(Get-Date -format yyyy-MM-dd_HH-mm-ss).log" + } + $Path = validatePath $Path + + try { + $response = SendCmdToLm -Command "getwafchangelog" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Export-WafChangeLog, GetWafChangeLog + +Function Install-WafRulesDatabase +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "maninstallwafrules" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Install-WafRulesDatabase, ManInstallWafRules + +Function Update-WafRulesDatabase +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "downloadwafrules" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Update-WafRulesDatabase, DownloadWafRules + +Function Get-WafRulesAutoUpdateConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "getwafsettings" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetWafRulesAutoUpdateConfiguration" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-WafRulesAutoUpdateConfiguration, GetWafSettings + +Function Set-WafRulesAutoUpdateConfiguration +{ + Param( + [Parameter(ParameterSetName="AutoUpdate", Mandatory=$True)] + [switch]$DatabaseAutoUpdate, + + [Parameter(ParameterSetName="AutoInstall")] + [switch]$DatabaseAutoInstall, + + [Parameter(ParameterSetName="AutoInstall")] + [ValidateRange(0, 23)] + [ValidateNotNullOrEmpty()] + [Int32]$DatabaseInstallTimeHour, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $tempPT = ConvertBoundParameters -hashtable $psboundparameters + $params = $tempPT.GetEnumerator() | sort-object -Property Name + + try { + ForEach ($h in $params) { + switch($($h.Name)) + { + "DatabaseAutoUpdate" { + $cmd2do = "setwafautoupdate" + if ($($h.Value) -eq $true) { + $dbUpdateParam = @{"Enable" = 1} + } + else { + $dbUpdateParam = @{"Enable" = 0} + } + break + } + "DatabaseAutoInstall" { + $cmd2do = "enablewafautoinstall" + if ($($h.Value) -eq $true) { + $dbUpdateParam = @{"Enable" = 1} + } + else { + $dbUpdateParam = @{"Enable" = 0} + } + break + } + "DatabaseInstallTimeHour" { + $cmd2do = "setwafinstalltime" + $dbUpdateParam = @{"Hour" = $($h.Value)} + break + } + } + + if ($cmd2do -eq $null) { + continue + } + + $xmlAnswer = SendCmdToLm -Command $cmd2do -ParameterValuePair $dbUpdateParam -ConnParams $ConnParams + $response = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $xmlAnswer + if ($response.ReturnCode -ne 200) { + return $response + } + $cmd2do = $null + } + setKempAPIReturnObject 200 "Command successfully executed" $null + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-WafRulesAutoUpdateConfiguration + +# ================================================== +# endregion WAF +# ================================================== + + +# ================================================== +# region GEO +# ================================================== + +# Internal use only +Function SetSelectionCriteria($params, $SelectionCriteria) +{ + switch ($SelectionCriteria) + { + "RoundRobin" {$ss = "rr"} + "WeightedRoundRobin" {$ss = "wrr"} + "FixedWeighting" {$ss = "fw"} + "RealServerLoad" {$ss = "rsr"} + "Proximity" {$ss = "prx"} + "LocationBased" {$ss = "lb"} + "AllAvailable" {$ss = "all"} + } + $params.Remove("SelectionCriteria") + $params.Add("SelectionCriteria", $ss) +} + +# Internal use only +Function getPublicPrivateRequestIdFromString($case, $ppReqString) +{ + $id = -1 + if ($case -eq "Public") { + switch ($ppReqString) + { + "PublicSitesOnly" {$id = 0} + "PreferPublicSites" {$id = 1} + "PreferPrivateSites" {$id = 2} + "AllSites" {$id = 3} + } + } + elseif ($case -eq "Private") { + switch ($ppReqString) + { + "PrivateSitesOnly" {$id = 0} + "PreferPrivateSites" {$id = 1} + "PreferPublicSites" {$id = 2} + "AllSites" {$id = 3} + } + } + else { + Throw "ERROR: unknow request string" + return + } + return $id +} + +# Internal use only +Function getCheckerValueFromString($checkerString) +{ + switch ($checkerString) + { + "None" { + $checker = "none" + break + } + "Icmp Ping" { + $checker = "icmp" + break + } + "Tcp Connect" { + $checker = "tcp" + break + } + "Cluster Checks" { + $checker = "clust" + break + } + } + return $checker +} + +Function New-GeoFQDN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "addfqdn" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Added FQDN $FQDN" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-GeoFQDN, Add-GeoFQDN, AddFQDN + +Function Remove-GeoFQDN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + try { + $response = SendCmdToLm -Command "delfqdn" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoFQDN, DeleteFQDN + +Function Get-GeoFQDN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + if ($FQDN -eq "") { + $cmd2exec = "listfqdns" + } + else { + $cmd2exec = "showfqdn" + } + $response = SendCmdToLm -Command $cmd2exec -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoFQDN" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoFQDN, ListFQDNs + +Function Set-GeoFQDN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [ValidateSet("RoundRobin", "WeightedRoundRobin", "FixedWeighting", "RealServerLoad", "Proximity", "LocationBased", "AllAvailable")] + [String]$SelectionCriteria, + + [ValidateRange(0, 1440)] + [Int32]$SiteFailureDelay = -1, + + [ValidateSet("auto", "manual")] + [String]$SiteRecoveryMode, + + [ValidateSet("PublicSitesOnly", "PreferPublicSites", "PreferPrivateSites", "AllSites")] + [string]$PublicRequest, + + [ValidateSet("PrivateSitesOnly", "PreferPrivateSites", "PreferPublicSites", "AllSites")] + [string]$PrivateRequest, + + [bool]$Failover, + + [bool]$LocalSettings, + + [ValidateRange(1, 86400)] + [Int32]$localttl, + + [ValidateRange(0, 86400)] + [Int32]$localsticky, + + [bool]$UnanimousChecks, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + if ($PublicRequest) { + $PublicRequestValue = getPublicPrivateRequestIdFromString "Public" $PublicRequest + $params.Remove("PublicRequest") + $params.Add("PublicRequestValue", $PublicRequestValue) + } + + if ($PrivateRequest) { + $PrivateRequestValue = getPublicPrivateRequestIdFromString "Private" $PrivateRequest + $params.Remove("PrivateRequest") + $params.Add("PrivateRequestValue", $PrivateRequestValue) + } + + if ($SiteFailureDelay -ge 0) { + $params.Remove("SiteFailureDelay") + $params.Add("FailTime", $SiteFailureDelay) + } + + if ($SelectionCriteria) { + SetSelectionCriteria $params $SelectionCriteria + } + + try { + $response = SendCmdToLm -Command "modfqdn" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoFQDN" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoFQDN, ModifyFQDN + +Function New-GeoCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addcluster" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response -AdditionalData $ClusterName + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-GeoCluster, AddCluster + +Function Remove-GeoCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "delcluster" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoCluster, DeleteCluster + +Function Get-GeoCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + if ($ClusterIp) { + $cmd2exec = "showcluster" + } + else { + $cmd2exec = "listclusters" + } + $response = SendCmdToLm -Command $cmd2exec -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoCluster" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoCluster, ShowCluster, ListClusters + +Function Set-GeoCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [String]$ClusterName, + + [ValidateSet("default", "remoteLM", "localLM")] + [String]$Type, + + [ValidateSet("none", "tcp", "icmp")] + [String]$Checker, + + [ValidateRange(3, 65530)] + [Int32]$CheckerPort, + + [String]$Enable, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + if ($Type -eq "remoteLM" -or $Type -eq "localLM") { + $params.Remove("Checker") + } + + try { + $response = SendCmdToLm -Command "modcluster" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "SetGeoCluster" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoCluster, ModifyCluster + +Function Set-GeoClusterCoordinates +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [Parameter(Mandatory=$true)] + [Int32]$LatSecs, + + [Parameter(Mandatory=$true)] + [Int32]$LongSecs, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "clustchangeloc" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Cluster location updated" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoClusterCoordinates, ClusterChangeLocation + +Function New-GeoFQDNSiteAddress +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [string]$Cluster, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addmap" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Added site $SiteAddress to FQDN $FQDN" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-GeoFQDNSiteAddress, AddMap + +Function Remove-GeoFQDNSiteAddress +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "delmap" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Deleted site $SiteAddress from FQDN $FQDN" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoFQDNSiteAddress, DeleteMap + +Function Set-GeoFQDNSiteAddress +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [ValidateSet("None", "Icmp Ping", "Tcp Connect", "Cluster Checks")] + [String]$Checker, + + [Int32]$Weight, + + [String]$Enable, + + [String]$Cluster, + + [String]$Mapaddress, + + [String]$Mapport, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($checker) { + $siteChecker = getCheckerValueFromString $Checker + $params.Remove("Checker") + $params.Add("Checker", $siteChecker) + } + if ($Cluster) { + $params.Remove("clust") + $params.Add("Cluster", $Cluster) + } + + try { + $response = SendCmdToLm -Command "modmap" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "SetGeoFQDNSiteAddress" -LMResponse $response -AdditionalData $SiteAddress + if ($lma.ReturnCode -eq 200) { + if ($lma.Data.GeoFqdnMap.Checker) { + $lma.Data.GeoFqdnMap.Checker = $Checker + } + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoFQDNSiteAddress, ModifyMap + +Function Set-GeoFQDNSiteCheckerAddress +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$CheckerIP, + + [Parameter(Mandatory=$true,Position=3)] + [ValidateNotNullOrEmpty()] + [String]$CheckerPort, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + # get fqdn to verify + $getParams = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $getParams.Add("FQDN", $FQDN) + $lma = Get-GeoFQDN @getParams + if ($lma.ReturnCode -ne 200) { + return $lma + } + + if ($lma.Data.GeoFqdn.Map) { + # OK: at least one mapping has been defined + $foundMapping = $null + if ($lma.Data.GeoFqdn.Map -is [array]) { + foreach($map in $lma.Data.GeoFqdn.Map) { + if ($map.IPAddress -eq $SiteAddress) { + $foundMapping = $map + break + } + } + } + else { + if ($lma.Data.GeoFqdn.Map.IPAddress -eq $SiteAddress) { + $foundMapping = $lma.Data.GeoFqdn.Map + } + } + + if ($foundMapping) { + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + switch ($foundMapping.Checker) + { + "none" { + $errMsg = "ERROR: checker type is set to None" + setKempAPIReturnObject 400 "$errMsg" $null + return + } + "icmp" { + if ($CheckerPort) { + $params.Remove("CheckerPort") + } + $params.Add("port", "") #TODO: to investigate + break + } + "tcp" { + if ($CheckerPort) { + $params.Remove("CheckerPort") + $params.Add("port", $CheckerPort) + } + break + } + "clust" { + $errMsg = "ERROR: checker type is set to `'Cluster Checks`'" + setKempAPIReturnObject 400 "$errMsg" $null + return + } + } + try { + $response = SendCmdToLm -Command "changecheckeraddr" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + Get-GeoFQDN @getParams + return + } + return $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + } + else { + $errMsg = "ERROR: the site `'$siteAddress`' does not exist" + setKempAPIReturnObject 400 "$errMsg" $null + return + } + } + $errMsg = "ERROR: no mapping found" + setKempAPIReturnObject 400 "$errMsg" $null + return +} +Export-ModuleMember -function Set-GeoFQDNSiteCheckerAddress, ChangeCheckerAddr + +# Internal use only +Function checkGeoFqdnCountryInput($CountryCode, $CustomLocation, $IsContinent) +{ + if (!$CountryCode -and !$CustomLocation) { + Throw "A country code or custom location must be provided." + } + + if ($CountryCode -and !$IsContinent) { + Throw "Please indicate if country code refers to a continent." + } + + if (!$CountryCode -and $IsContinent) { + Throw "IsContinent parameter requires a country code." + } +} + +Function Set-GeoFQDNSiteCountry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, # was IP + + [ValidateNotNullOrEmpty()] + [String]$CountryCode, + + [ValidateNotNullOrEmpty()] + [String]$IsContinent, + + [ValidateNotNullOrEmpty()] + [String]$CustomLocation, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + checkGeoFqdnCountryInput $CountryCode $CustomLocation $IsContinent + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addcountry" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Country/Continent updated." + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoFQDNSiteCountry, AddCountry + +Function Remove-GeoFQDNSiteCountry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [ValidateNotNullOrEmpty()] + [String]$CountryCode, + + [ValidateNotNullOrEmpty()] + [String]$IsContinent, + + [ValidateNotNullOrEmpty()] + [String]$CustomLocation, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + checkGeoFqdnCountryInput $CountryCode $CustomLocation $IsContinent + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "removecountry" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Country/Continent updated." + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoFQDNSiteCountry, RemoveCountry + +Function Set-GeoFQDNSiteCoordinates +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [Parameter(Mandatory=$true)] + [Int32]$Lat, + + [Parameter(Mandatory=$true)] + [Int32]$Long, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "changemaploc" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Map location updated." + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoFQDNSiteCoordinates, ChangeMapLocation + +Function New-GeoCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Location, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addcustomlocation" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-GeoCustomLocation, AddCustomLocation + +Function Remove-GeoCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Location, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + $params.Remove("location") + $params.Add("clName", $Location) + + try { + $response = SendCmdToLm -Command "deletecustomlocation" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoCustomLocation, DeleteCustomLocation + +Function Get-GeoCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "listcustomlocation" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoCustomLocation" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoCustomLocation, ListCustomLocation + +Function Set-GeoCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$clOldName, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$clNewName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ( ([String]::IsNullOrEmpty($clOldName)) -or ([String]::IsNullOrEmpty($clNewName)) ) { + Throw "ERROR: clOlName and clNewName are both mandatory" + return + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "editcustomlocation" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoCustomLocation, EditCustomLocation + +Function New-GeoIpRange +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addip" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " IP range added" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-GeoIpRange, AddIP + +Function Remove-GeoIpRange +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "delip" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " IP range deleted" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoIpRange, DeleteIP + +Function Get-GeoIpRange +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + if ($IP) { + $cmd = "showip" + } + else { + $cmd = "listips" + } + $response = SendCmdToLm -Command $cmd -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoIpRange" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoIpRange, ListIPs, ShowIP + +Function Set-GeoIPRangeCoordinates +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [Parameter(Mandatory=$true)] + [Int32]$Lat, + + [Parameter(Mandatory=$true)] + [Int32]$Long, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "modiploc" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " IP range location updated" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoIPRangeCoordinates, ModifyIPLocation + +Function Remove-GeoIPRangeCoordinates +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "deliploc" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " IP range location updated" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoIPRangeCoordinates, DeleteIPLocation + +Function Set-GeoIPRangeCountry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [Parameter(Mandatory=$true)] + [String]$CountryCode, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addipcountry" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " IP range country updated" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoIPRangeCountry, AddIPCountry + +Function Remove-GeoIPRangeCountry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,Position=0)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "removeipcountry" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " IP range country updated" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoIPRangeCountry, RemoveIPCountry, RemoveIPCountryCustom, Remove-GeoIPRangeCustomLocation + +Function Set-GeoIPRangeCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [Parameter(Mandatory=$true)] + [String]$CustomLoc, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addipcountry" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " IP range country updated" + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoIPRangeCustomLocation, AddIPCountryCustom + +Function Get-GeoPartnerStatus +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "getgeopartnerstatus" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoPartnerStatus" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoPartnerStatus + +Function Get-GeoIPBlacklistDatabaseConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + <# + $ErrorActionPreference = "Stop" + #> + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoacl/getsettings" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoIPBlacklistDatabaseConfiguration" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoIPBlacklistDatabaseConfiguration + +Function Set-GeoIPBlacklistDatabaseConfiguration +{ + Param( + [Parameter(ParameterSetName="Update", Mandatory=$True)] + [switch]$DatabaseAutoUpdate, + + [Parameter(ParameterSetName="Install")] + [switch]$DatabaseAutoInstall, + + [Parameter(ParameterSetName="Install")] + [ValidateRange(0, 23)] + [ValidateNotNullOrEmpty()] + [Int32]$DatabaseInstallTimeHour, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + <# + $ErrorActionPreference = "Stop" + #> + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $tempParamsHt = ConvertBoundParameters -hashtable $psboundparameters + $paramsHt = $tempParamsHt.GetEnumerator() | sort-object -Property Name + foreach ($param in $paramsHt) + { + switch ($($param.Name)) + { + "DatabaseAutoUpdate" { + $cmd2do = "geoacl/setautoupdate" + if($($param.Value) -eq $true) { + $dbUpdateParam = @{"enable" = 1} + } + else { + $dbUpdateParam = @{"enable" = 0} + } + break + } + + "DatabaseAutoInstall" { + $cmd2do = "geoacl/setautoinstall" + if($($param.Value) -eq $true) { + $dbUpdateParam = @{"enable" = 1} + } + else { + $dbUpdateParam = @{"enable" = 0} + } + break + } + + "DatabaseInstallTimeHour" { + $cmd2do = "geoacl/setinstalltime" + $dbUpdateParam = @{"hour" = $($param.Value)} + break + } + } + + if ($cmd2do -eq $null) { + continue + } + + try { + $response = SendCmdToLm -Command $cmd2do -ParameterValuePair $dbUpdateParam -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -ne 200) { + return $lma + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + + $cmd2do = $null + } + setKempAPIReturnObject 200 "Command successfully executed." $null +} +Export-ModuleMember -function Set-GeoIPBlacklistDatabaseConfiguration + +Function Update-GeoIPBlacklistDatabase +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + <# + $ErrorActionPreference = "Stop" + #> + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoacl/updatenow" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " Download of new GEO IP Blacklist data successfully completed." + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Update-GeoIPBlacklistDatabase + +Function Install-GeoIPBlacklistDatabase +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + <# + $ErrorActionPreference = "Stop" + #> + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoacl/installnow" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Install-GeoIPBlacklistDatabase + +Function Export-GeoIPBlacklistDatabase +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$filename, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + <# + $ErrorActionPreference = "Stop" + #> + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $filename = validatePath $filename + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoacl/downloadlist" -ParameterValuePair $params -File $filename -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Export-GeoIPBlacklistDatabase + +Function Export-GeoIPBlacklistDatabaseChanges +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$filename, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + <# + $ErrorActionPreference = "Stop" + #> + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $filename = validatePath $filename + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoacl/downloadchanges" -ParameterValuePair $params -File $filename -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Export-GeoIPBlacklistDatabaseChanges + +Function New-GeoIPWhitelist +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Addr, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + <# + $ErrorActionPreference = "Stop" + #> + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoacl/addcustom" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " $Addr was successfully added to GEO ACL white list." + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-GeoIPWhitelist + +Function Get-GeoIPWhitelist +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoacl/listcustom" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoIPWhitelist" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoIPWhitelist + +Function Remove-GeoIPWhitelist +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Addr, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + <# + $ErrorActionPreference = "Stop" + #> + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoacl/removecustom" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + $lma.Response += " $Addr was successfully removed from GEO ACL white list." + } + $lma + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoIPWhitelist + +Function Export-GeoIPWhitelistDatabase +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$filename, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + <# + $ErrorActionPreference = "Stop" + #> + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $filename = validatePath $filename + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoacl/listcustom" -ParameterValuePair $params -ConnParams $ConnParams + $addDataHt = [ordered]@{"filename" = $filename; "force" = $Force} + HandleLmAnswer -Command2ExecClass "ExportGeoIPWhitelistDatabase" -LMResponse $response -AdditionalData $addDataHt + } + catch { + $errMsg = $_.Exception.Message + if ($errMsg.Contains(" already exists.")) { + $errMsg = "ERROR: The specified file already exists. To use the same filename, either delete the file or use the -Force switch" + } + Write-Verbose "errMsg: $errMsg" + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Export-GeoIPWhitelistDatabase + +Function Set-GeoDNSSECStatus +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("enabled", "disabled")] + [string]$status, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{} + if ($status -eq "enabled") { + $params.Add("Enable", 1) + } + elseif ($status -eq "disabled") { + $params.Add("Enable", 0) + } + else { + Throw "ERROR: not allowed value for parameter status" + } + + try { + $response = SendCmdToLm -Command "geosetdnssec" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoDNSSECStatus + +Function New-GeoDNSSECKeySigningKey +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateSet("RSASHA256", "RSASHA512", "NSEC3RSASHA1")] + [String]$SigningAlgorithm, + + [ValidateSet("1024", "2048", "4096")] + [int]$SigningKeySize, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{} + + if ($SigningAlgorithm) { + $params.Remove("SigningAlgorithm") + $params.Add("algorithm", $SigningAlgorithm) + } + + if ($SigningKeySize) { + $params.Remove("SigningKeySize") + $params.Add("keysize", $SigningKeySize) + } + + try { + $response = SendCmdToLm -Command "geogenerateksk" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-GeoDNSSECKeySigningKey + +Function Import-GeoDNSSECKeySigningKey +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$privateKeyFile, + + [Parameter(Mandatory=$true)] + [string]$publicKeyFile, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + validateFile2Upload $privateKeyFile $null + validateFile2Upload $publicKeyFile $null + + try { + if ( ([String]::IsNullOrEmpty($LBPort)) ) { + $LBPort = 443 + } + $url = "https://$LoadBalancer`:$LBPort/access/geoimportksk" + Write-Verbose "url: $url" + $response = uploadGeoDnssecKeyFiles $url $privateKeyFile $publicKeyFile $Credential $SubjectCN $CertificateStoreLocation + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $rc = 400 + $errMsg = $_.Exception.Message + if ($errMsg -and $errMsg.Contains("Unauthorized")) { + $rc = 401 + } + setKempAPIReturnObject $rc "$errMsg" $null + } +} +Export-ModuleMember -function Import-GeoDNSSECKeySigningKey + +Function Remove-GeoDNSSECKeySigningKey +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geodeleteksk" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GeoDNSSECKeySigningKey + +Function Get-GeoDNSSECConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geoshowdnssec" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoDNSSECConfiguration" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoDNSSECConfiguration + +Function Get-GeoMiscParameter +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "listparams" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoLmMiscParameter" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoMiscParameter, ListMiscParameters + +Function Set-GeoMiscParameter +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [String]$SourceOfAuthority, + + [String]$NameSrv, + + [String]$SOAEmail, + + [ValidateRange(1, 86400)] + [int]$TTL, + + [ValidateRange(0, 86400)] + [int]$Persist, + + [ValidateRange(9, 3600)] + [int]$CheckInterval, + + [ValidateRange(4, 60)] + [int]$ConnTimeout, + + [ValidateRange(2, 10)] + [int]$RetryAttempts, + + [String]$Zone, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "modparams" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoLmMiscParameter" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-GeoMiscParameter, ModifyMiscParameters + +Function Update-GeoDatabase +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "locdataupdate" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Update-GeoDatabase, LocationDataUpdate + +Function Enable-LmGeoPack +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "enablegeo" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Enable-LmGeoPack, EnableGEO + +Function Disable-LmGeoPack +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "disablegeo" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Disable-LmGeoPack, DisableGEO + +Function Test-LmGeoEnabled +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "isgeoenabled" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "TestLmGeoEnabled" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Test-LmGeoEnabled, IsGEOEnabled + +<# +Function Get-GeoStatistics +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "geostats" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGeoStats" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GeoStatistics +#> + +# ================================================== +# endregion GEO +# ================================================== + + +# ================================================== +# region LDAP +# ================================================== + +Function Get-LdapEndpoint +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + if ($Name) { + $cmd = "showldapendpoint" + $list = $false + } + else { + $cmd = "showldaplist" + $list = $true + } + $response = SendCmdToLm -Command $cmd -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLdapEndpoint" -LMResponse $response -AdditionalData $list + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LdapEndpoint + +# Internal use only +Function mapLdapProtocol($ldapParams, $LdapProtocol) +{ + if ($LdapProtocol) { + if ($ldapParams.ContainsKey("LdapProtocol")) { + $ldapParams.Remove("LdapProtocol") + } + $value = 0 + switch ($LdapProtocol) + { + "Unencrypted" { + $value = 0 + break + } + "StartTLS" { + $value = 1 + break + } + "LDAPS" { + $value = 2 + break + } + } + $ldapParams.Add("ldaptype", $value) + } +} + +Function New-LdapEndpoint +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [String]$Server, + + [ValidateSet("Unencrypted", "StartTLS", "LDAPS")] + [string]$LdapProtocol, + + [ValidateRange(10, 86400)] + [Int16]$VInterval = 60, + + [ValidateRange(0, 10)] + [Int16]$ReferralCount = 0, + + [String]$AdminUser, + + [String]$AdminPass, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + mapLdapProtocol $params $LdapProtocol + + try { + $response = SendCmdToLm -Command "addldapendpoint" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-LdapEndpoint + +Function Set-LdapEndpoint +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [String]$Server, + + [ValidateSet("Unencrypted", "StartTLS", "LDAPS")] + [string]$LdapProtocol, + + [ValidateRange(10, 86400)] + [Int16]$VInterval = 60, + + [ValidateRange(0, 10)] + [Int16]$ReferralCount = 0, + + [String]$AdminUser, + + [String]$AdminPass, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + mapLdapProtocol $params $LdapProtocol + + try { + $response = SendCmdToLm -Command "modifyldapendpoint" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LdapEndpoint + +Function Remove-LdapEndpoint +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "deleteldapendpoint" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-LdapEndpoint + +# ================================================== +# endregion LDAP +# ================================================== + + +# ================================================== +# region BACKUP +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Backup-LmConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + [switch]$Force, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (-not ($Path)) { + $Path = "$($Env:SystemRoot)\Temp\LMBackup_$(Get-Date -format yyyy-MM-dd_HH-mm-ss)" + } + Write-Verbose "Path = $Path" + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "backup" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Backup-LmConfiguration, Backup-LoadBalancer + +# Internal use only +Function getRestoreBackupTypeInt($BackupStringType) +{ + switch ($BackupStringType) { + "Base" { $type = 1 } + "Base + VS" { $type = 3 } + "Base + Geo" { $type = 5 } + "VS" { $type = 2 } + "VS + Geo" { $type = 6 } + "Geo" { $type = 4 } + "SSO/LDAP" { $type = 8 } + "All" { $type = 7 } + } + return $type +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Restore-LmConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateSet("Base", "Base + VS", "Base + Geo", "VS", "VS + Geo", "Geo", "SSO/LDAP", "All")] + [string]$Type, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{} + + $TypeInt = getRestoreBackupTypeInt $Type + + $params.Add("Type", $TypeInt) + + try { + $response = SendCmdToLm -Command "restore" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Restore-LmConfiguration, Restore-LoadBalancer + +# Internal use only +Function mapBackupSecureInt($paramsHt, $backupsecure) +{ + if ($paramsHt) { + + if ($backupsecure -eq "no") { + $paramsHt.Add("BackupMethod", "Ftp") + } + else { + $paramsHt.Add("BackupMethod", "SCP") + } + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LmBackupConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $bckParams = @("backupenable", "backuphour", "backupminute", "backupday", "backupsecure", + "backupuser", "backuppassword", "backuphost", "backuppath") + + $bckSettings = [ordered]@{} + $bckSettings.PSTypeName = "BackupConfiguration" + foreach ($param in $bckParams) { + $lma = GetLmParameter "$param" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + $paramValue = $lma.Data.$param + if ($param -eq "backupsecure") { + mapBackupSecureInt $bckSettings $paramValue + } + else { + $bckSettings.Add($param, $paramValue) + } + + Start-Sleep -m 200 + } + $data = New-Object -TypeName PSObject -Property $bckSettings + + $bckConfiguration = [ordered]@{} + $bckConfiguration.PSTypeName = "BackupConfiguration" + $bckConfiguration.add("BackupConfiguration", $data) + $bckObject = New-Object -TypeName PSObject -Property $bckConfiguration + + setKempAPIReturnObject 200 "Command successfully executed" $bckObject +} +Export-ModuleMember -function Get-LmBackupConfiguration, Get-BackupOption + +# Internal use only +Function mapBackupSecureString($paramsHt, $BackupMethod) +{ + if ($paramsHt -and $paramsHt.ContainsKey("BackupMethod")) { + $paramsHt.Remove("BackupMethod") + + if ($BackupMethod -eq "Ftp") { + $paramsHt.Add("backupsecure", 0) + } + else { + $paramsHt.Add("backupsecure", 1) + } + } +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-LmBackupConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateSet("yes", "no")] + [string]$BackupEnable, + + [ValidateRange(0, 23)] + [Int16]$BackupHour, + + [ValidateRange(0, 59)] + [Int16]$BackupMinute, + + [ValidateRange(0, 7)] + [Int16]$BackupDay, + + [ValidateSet("Ftp", "SCP")] + [string]$BackupMethod, + + [string]$BackupUser, + + [string]$BackupPassword, + + [string]$BackupHost, + + [string]$BackupPath, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params.Add("param", "backupenable") + $response = Get-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + $params.Remove("param") + + $params2Get = @("backupenable") + if ($response.Data.backupenable -eq "yes") { + if ($BackupEnable -and $BackupEnable -eq "no") { + # OK: set only the backupenable + $params.Add("param", "backupenable") + $params.Add("value", $BackupEnable) + $lma = Set-LmParameter @params + if ($lma.ReturnCode -ne 200) { + return $lma + } + $params.Remove("param") + $params.Remove("value") + } + else { + # OK: set all the parametes + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + $parameters2set.Remove("backupenable") + mapBackupSecureString $parameters2set $BackupMethod + $lma = SetParameterSet $parameters2set $params ([ref]$params2Get) + if ($lma.ReturnCode -ne 200) { + return $lma + } + } + } + else { + if ($BackupEnable -and $BackupEnable -eq "yes") { + # OK: set all the parametes + $params.Add("param", "backupenable") + $params.Add("value", $BackupEnable) + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + $params.Remove("param") + $params.Remove("value") + + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + $parameters2set.Remove("backupenable") + mapBackupSecureString $parameters2set $BackupMethod + $lma = SetParameterSet $parameters2set $params ([ref]$params2Get) + if ($lma.ReturnCode -ne 200) { + return $lma + } + } + else { + # ERROR: cannot set the parametes + setKempAPIReturnObject 400 "ERROR: cannot set backup parameter(s) when backup is disabled" $null + return + } + } + $response = GetLmParameterSet $params2Get "Parameters" $params + if ($response.ReturnCode -eq 200) { + if ($response.Data.Parameters.backupsecure) { + if ($response.Data.Parameters.backupsecure -eq "no") { + $response.Data.Parameters.backupsecure = "Ftp" + } + else { + $response.Data.Parameters.backupsecure = "SCP" + } + } + } + $response +} +Export-ModuleMember -function Set-LmBackupConfiguration, Set-BackupOption + +Function Set-LmBackupSecureIdentity +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = @{} + + $currFolder = Split-Path -Path $Path + if (-not (Test-Path -Path $currFolder)) { + Throw "ERROR: the folder $currFolder does not exist" + } + $currFolder = Convert-Path $currFolder + + $fileToUpload = $currFolder + "\IdentityFile.txt" + $tmpFile = $currFolder + "\IdentityFile_temp.txt" + + if (Test-Path -Path $fileToUpload) { + Remove-Item $fileToUpload + } + + if (Test-Path -Path $tmpFile) { + Remove-Item $tmpFile + } + + try { + $privKeyFileContent = Get-Content -Raw $Path + $privKeyFileContentBytes = [System.Text.Encoding]::UTF8.GetBytes($privKeyFileContent) + $privKeyFileContentEncoded = [System.Convert]::ToBase64String($privKeyFileContentBytes) + $secureString = "param=backupident&value=" + $privKeyFileContentEncoded + Set-Content -Value $secureString -Path $tmpFile + $txt = (Get-Content -Raw $tmpFile) -replace "`r`n","" + [io.file]::WriteAllText($fileToUpload, $txt) + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + + try { + $response = SendCmdToLm -Command "set" -ParameterValuePair $params -File $fileToUpload -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + + if (-not ($PSBoundParameters['Debug'])) { + Remove-Item $tmpFile + Remove-Item $fileToUpload + } + + $lma +} +Export-ModuleMember -function Set-LmBackupSecureIdentity + +# ================================================== +# endregion BACKUP +# ================================================== + + +# ================================================== +# region VPN +# ================================================== + +Function New-LmVpnConnection +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams2 = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "createvpncon" -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "NewLmVpnConnection" -LMResponse $response + if ($lma.ReturnCode -ne 200) { + return $lma + } + $ConnParams2.Add("Name", $Name) + Get-LmVpnConnection @ConnParams2 + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-LmVpnConnection, CreateVpnConnection + +Function Remove-LmVpnConnection +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "deletevpncon" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-LmVpnConnection, DeleteVpnConnection + +Function Get-LmVpnConnection +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + if ($Name) { + $cmd = "getvpnstatus" + } + else { + $cmd = "listvpns" + } + $response = SendCmdToLm -Command "$cmd" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetVpnConnection" -LMResponse $response -AdditionalData $Name + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmVpnConnection, ListVpns + +Function Set-LmVpnAddrs +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalIp, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalSubnets, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteIp, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteSubnets, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "setvpnaddr" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetVpnConnection" -LMResponse $response -AdditionalData $Name + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmVpnAddrs, SetVpnAddrs + +Function Set-LmVpnLocalIp +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalIp, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "setvpnlocalip" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmVpnLocalIp, SetVpnLocalIp + +Function Set-LmVpnLocalSubnet +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalSubnets, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "setvpnlocalsubnets" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmVpnLocalSubnet, SetVpnLocalSubnets + +Function Set-LmVpnRemoteIp +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteIp, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "setvpnremoteip" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmVpnRemoteIp, SetVpnRemoteIp + +Function Set-LmVpnRemoteSubnet +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteSubnets, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "setvpnremotesubnets" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmVpnRemoteSubnet, SetVpnRemoteSubnets + +Function Set-LmVpnSecret +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalId, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteId, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Key, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "setvpnsecret" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmVpnSecret, SetVpnSecret + +Function Start-LmVpnConnection +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "startvpncon" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Start-LmVpnConnection, StartVpnConnection + +Function Stop-LmVpnConnection +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "stopvpncon" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Stop-LmVpnConnection, StopVpnConnection + +Function Start-LmVpnIkeDaemon +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "startikedaemon" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Start-LmVpnIkeDaemon, StartIkeDaemon + +Function Stop-LmVpnIkeDaemon +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "stopikedaemon" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Stop-LmVpnIkeDaemon, StopIkeDaemon + +Function Get-LmVpnIkeDaemonStatus +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "statusikedaemon" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLmVpnIkeDaemonStatus" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmVpnIkeDaemonStatus, StatusIkeDaemon + +Function Set-LmVpnPfsEnable +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "setvpnpfsenable" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmVpnPfsEnable, SetVpnPfsEnable + +Function Set-LmVpnPfsDisable +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "setvpnpfsdisable" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmVpnPfsDisable, SetVpnPfsDisable + +# ================================================== +# endregion VPN +# ================================================== + + +# ================================================== +# region SAML +# ================================================== + +# Internal use only +Function checkOutputFile($strFileName = "strFileName is mandatory, please provide a value.") +{ + if (([String]::IsNullOrEmpty($strFileName))) { + return $false + } + + if ($strFileName -eq "strFileName is mandatory, please provide a value.") { + return $false + } + + $parent = Split-Path -Path $strFileName -Parent + if (([String]::IsNullOrEmpty($parent))) { + return $false + } + + if (Test-Path $parent) { + # File exists + return $true + } + else { + # File does not exist + return $false + } +} + +# Internal use only +Function SetSAMLSPEntityParameter($params, $IdpEntityId, $IdpSsoUrl, $IdpLogoffUrl, $IdpCert, $SpEntityId, $SpCert) +{ + $count = 0 + if (-not ([String]::IsNullOrEmpty($IdpEntityId))) { + $params.Add("idp_entity_id", $IdpEntityId) + $count += 1 + } + if (-not ([String]::IsNullOrEmpty($IdpSsoUrl))) { + $params.Add("idp_sso_url", $IdpSsoUrl) + $count += 1 + } + if (-not ([String]::IsNullOrEmpty($IdpLogoffUrl))) { + $params.Add("idp_logoff_url", $IdpLogoffUrl) + $count += 1 + } + if (-not ([String]::IsNullOrEmpty($IdpCert))) { + $params.Add("idp_cert", $IdpCert) + $count += 1 + } + if (-not ([String]::IsNullOrEmpty($SpEntityId))) { + $params.Add("sp_entity_id", $SpEntityId) + $count += 1 + } + if (-not ([String]::IsNullOrEmpty($SpCert))) { + $params.Add("sp_cert", $SpCert) + $count += 1 + } + return $count +} + +Function Install-SAMLIdpMetafile +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Domain, + + [Parameter(Mandatory=$true)] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation $Path + + $getParams = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $getParams.Add("domain", $Domain) + $lma = Get-SSODomain @getParams + if ($lma.ReturnCode -ne 200) { + return $lma + } + + if ($lma.Data.Domain.auth_type -ne "SAML") { + $errMsg = "The supplied Domain `"$Domain`" authentication protocol is not SAML: auth_type: $($lma.Data.Domain.auth_type)" + setKempAPIReturnObject 400 "$errMsg" $null + return + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "uploadsamlidpmd" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -eq 200) { + # Get SAML domain + Get-SSODomain @getParams + } + else { + return $lma + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Install-SAMLIdpMetafile + +Function Set-SAMLSPEntity +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Domain, + + [ValidateNotNullOrEmpty()] + [string]$IdpEntityId, + + [ValidateNotNullOrEmpty()] + [string]$IdpSsoUrl, + + [ValidateNotNullOrEmpty()] + [string]$IdpLogoffUrl, + + [ValidateNotNullOrEmpty()] + [string]$IdpCert, + + [ValidateNotNullOrEmpty()] + [string]$SpEntityId, + + [ValidateNotNullOrEmpty()] + [string]$SpCert, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $getParams = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $getParams.Add("domain", $Domain) + $lma = Get-SSODomain @getParams + if ($lma.ReturnCode -ne 200) { + return $lma + } + + if ($lma.Data.Domain.auth_type -ne "SAML") { + $errMsg = "The supplied Domain `"$Domain`" authentication protocol is not SAML: auth_type: $($lma.Data.Domain.auth_type)" + setKempAPIReturnObject 400 "$errMsg" $null + return + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + $count = SetSAMLSPEntityParameter $params $IdpEntityId $IdpSsoUrl $IdpLogoffUrl $IdpCert $SpEntityId $SpCert + if ($count -eq 0) { + setKempAPIReturnObject 401 "ERROR: you need to set at least one parameter other than Domain" $null + } + + try { + $response = SendCmdToLm -Command "moddomain" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetSSOSamlDomain" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-SAMLSPEntity + +Function Get-SAMLDomain +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Domain, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "showdomain" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + if ($Domain) { + $lma = HandleLmAnswer -Command2ExecClass "GetSSOSamlDomain" -LMResponse $response + + if ($lma.ReturnCode -ne 200) { + return $lma + } + + if ($lma.Data.Domain.auth_type -ne "SAML") { + $errMsg = "The supplied Domain `"$Domain`" authentication protocol is not SAML: auth_type: $($lma.Data.SamlDomain.auth_type)" + setKempAPIReturnObject 400 $errMsg $null + return + } + return $lma + } + else { + $lma = HandleLmAnswer -Command2ExecClass "GetSSODomain" -LMResponse $response + $domains = $lma.Data.Domain + if ($domains) { + $samlDomains = @() + foreach ($singleDomain in $domains) { + if ($singleDomain.auth_type -eq "SAML") { + $samlDomains += $singleDomain + } + } + $ht = [ordered]@{} + $ht.PSTypeName = "SSODomain" + $ht.add("Domain", $samlDomains) + $samlDomainsObject = New-Object -TypeName PSObject -Property $ht + setKempAPIReturnObject 200 "Command successfully executed." $samlDomainsObject + } + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-SAMLDomain + +Function Export-SAMLSPCert +{ + [cmdletbinding(SupportsShouldProcess=$true, DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Domain, + + [Parameter(Mandatory=$true)] + [string]$CertificateFilePath, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $getParams = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $getParams.Add("domain", $Domain) + $lma = Get-SSODomain @getParams + if ($lma.ReturnCode -ne 200) { + return $lma + } + + if ($lma.Data.Domain.auth_type -ne "SAML") { + $errMsg = "The supplied Domain `"$Domain`" authentication protocol is not SAML: auth_type: $($lma.Data.Domain.auth_type)" + setKempAPIReturnObject 400 "$errMsg" $null + return + } + + $fileCheck = checkOutputFile $CertificateFilePath + if ($fileCheck -eq $false) { + setKempAPIReturnObject 401 "The destination folder does not exist." $null + return + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + if (($Force) -or $PsCmdlet.ShouldProcess($CertificateFilePath, "Overwrite")) { + + try { + $response = SendCmdToLm -Command "downloadsamlspcert" -ParameterValuePair $params -File $CertificateFilePath -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + + } + } +} +Export-ModuleMember -function Export-SAMLSPCert + +# ================================================== +# endregion SAML +# ================================================== + + +# ================================================== +# region ADDON +# ================================================== + +Function Install-LmAddon +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation $Path + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addaddon" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "InstallLmAddon" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Install-LmAddon, UploadAddon + +Function Remove-LmAddon +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "deladdon" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-LmAddon, DeleteAddon + +Function Get-LmAddOn +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "listaddon" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLmAddOn" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmAddOn, ListAddons + +# ================================================== +# endregion ADDON +# ================================================== + + +# ================================================== +# region PATCH +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Install-LmPatch +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation $Path + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "installpatch" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "InstallLmPatch" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Install-LmPatch, Install-Patch + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Uninstall-LmPatch +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "restorepatch" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "UninstallLmPatch" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Uninstall-LmPatch, Restore-Patch + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Restart-Lm +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Shutdown, + [switch]$Force, + [int]$SleepTime, + [int]$Cycles + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + $cmd = $null + if ($Shutdown) { + $cmd = "shutdown" + } + else { + $cmd = "reboot" + } + + if (($Force) -or ($PsCmdlet.ShouldProcess($cmd, "$cmd on $LoadBalancer"))) { + + try { + $response = SendCmdToLm -Command $cmd -ParameterValuePair $params -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + if ($lma.ReturnCode -ne 200) { + return $lma + } + if ($cmd -eq "reboot") { + if ( ([String]::IsNullOrEmpty($SleepTime)) ) { + $SleepTime = 12 + } + if ( ([String]::IsNullOrEmpty($Cycles)) ) { + $Cycles = 8 + } + Start-Sleep -s 10 + $check = reconnectToLm $LoadBalancer $LBPort $Cycles $SleepTime + if ($check) { + # the LM is back + return $lma + } + else { + # the LM is not back in time + setKempAPIReturnObject 400 "the LM is not back yet" $null + return + } + } + else { + # SHUTDOWN case + return $lma + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } + } +} +Export-ModuleMember -function Restart-Lm, Restart-LoadBalancer + +Function Get-LmPreviousFirmwareVersion +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "getpreviousversion" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLmPreviousFirmwareVersion" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmPreviousFirmwareVersion + +# ================================================== +# endregion PATCH +# ================================================== + + +# ================================================== +# region DATE-TIME +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LmDateTimeConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + # Don't get NTPKeySecret - no valid data is returned + $params2get = @("NTPHost", "NTPKeyType", "NTPKeyId", "Time", "ActiveTime", "BootTime", "TimeZone") + + $ht = [ordered]@{} + $ht.PSTypeName = "DateTimeConfiguration" + foreach($param in $params2get) { + $params.Add("param", $param) + + $lma = Get-LmParameter @params + if ($lma.ReturnCode -eq 200) { + $paramValue = $lma.Data.$param + if ($param -eq "NTPKeyType" -and $paramValue -eq "M") { + $paramValue = "MD5" + } + if ($param -eq "NTPKeyType" -and $paramValue -eq "SHA") { + $paramValue = "SHA-1" + } + $ht.Add($param, $paramValue) + } + else { + return $lma + } + $params.Remove("param") + Start-Sleep -m 200 + } + $tmpObj = New-Object -TypeName PSObject -Property $ht + + $emConf = [ordered]@{} + $emConf.PSTypeName = "DateTimeConfiguration" + $emConf.Add("DateTimeConfiguration", $tmpObj) + $emConfObject = New-Object -TypeName PSObject -Property $emConf + + setKempAPIReturnObject 200 "Command successfully executed" $emConfObject +} +Export-ModuleMember -function Get-LmDateTimeConfiguration, Get-DateTimeOption + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-LmDateTimeConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$NTPHost, + + [string]$TimeZone, + + [ValidateRange(1, 100)] + [int]$NTPKeyId, + + [string]$NTPKeySecret, + + [ValidateSet("SHA-1", "MD5")] + [string]$NTPKeyType, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + + if ($NTPKeyType -and $NTPKeyType -eq "MD5") { + $parameters2set["NTPKeyType"] = "M" + } + + if ($NTPKeyType -and $NTPKeyType -eq "SHA-1") { + $parameters2set["NTPKeyType"] = "SHA" + } + + $params2Get = @() + foreach ($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + + Start-Sleep -m 200 + } + $lma = GetLmParameterSet $params2Get "Parameters" $params + if ($lma.ReturnCode -eq 200) { + if ($lma.Data.Parameters.NTPKeyType) { + if ($lma.Data.Parameters.NTPKeyType -eq "M") { + $lma.Data.Parameters.NTPKeyType = "MD5" + } + else { + $lma.Data.Parameters.NTPKeyType = "SHA-1" + } + } + } + $lma +} +Export-ModuleMember -function Set-LmDateTimeConfiguration, Set-DateTimeOption + +Function Get-LmWuiSetting +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $parameters = @("hoverhelp", "motd", "wuidisplaylines") + <# + NOTE: missing parameters + - eula + - EnableHistoricalGraphs + - Collect All Statistics + #> + + GetLmParameterSet $parameters "WuiSetting" $params +} +Export-ModuleMember -function Get-LmWuiSetting + +Function Set-LmWuiSetting +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$hoverhelp, + + [string]$motd, + + [ValidateRange(10, 100)] + [int]$wuidisplaylines, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + + $params2Get = @() + foreach ($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + + Start-Sleep -m 200 + } + GetLmParameterSet $params2Get "Parameters" $params +} +Export-ModuleMember -function Set-LmWuiSetting + +# ================================================== +# endregion DATE-TIME +# ================================================== + + +# ================================================== +# region SDN +# ================================================== + +Function New-SdnController +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IPV4, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$Port, + + [Int32]$Clid, + + [Boolean]$Https, + + [String]$User, + + [String]$Password, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "addsdncontroller" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "AddSdnController" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-SdnController, AddSDNController + +Function Remove-SdnController +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Int32]$Clid, + + [Int32]$Cid, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "delsdncontroller" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "RemoveSdnController" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-SdnController, DeleteSDNController + +Function Set-SdnController +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$Cid, + + [Int32]$Clid, + + [String]$IPV4, + + [Int32]$Port, + + [Boolean]$Https, + + [String]$User, + + [String]$Password, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "modsdncontroller" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "SetSdnController" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-SdnController, ModifySDNController + +Function Get-SdnController +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "getsdncontroller" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetSdnController" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-SdnController, GetSDNController + +# ================================================== +# endregion SDN +# ================================================== + + +# ================================================== +# region FILTER +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-VSPacketFilterACL +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$VirtualService, + + [Parameter(Mandatory=$true)] + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(Mandatory=$true)] + [ValidateSet("black", "white")] + [String]$Type, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{ + "listvs" = $Type + "vsip" = $VirtualService + "vsport" = $VSPort + "vsprot" = $VSProtocol + } + + try { + $response = SendCmdToLm -Command "aclcontrol" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetVSPacketFilterACL" -LMResponse $response -AdditionalData $Type + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-VSPacketFilterACL + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-VSPacketFilterACL +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$VirtualService, + + [Parameter(Mandatory=$true)] + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(Mandatory=$true)] + [ValidateSet("black", "white")] + [String]$Type, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$AclAddress, + + [String]$AclComment, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{ + "addvs" = $Type + "vsip" = $VirtualService + "vsport" = $VSPort + "vsprot" = $VSProtocol + "addr" = $AclAddress + } + if ($AclComment) { + $params.Add("comment", [System.Uri]::EscapeDataString($AclComment)) + } + + try { + $response = SendCmdToLm -Command "aclcontrol" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "NewVSPacketFilterACL" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-VSPacketFilterACL + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-VSPacketFilterACL +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$VirtualService, + + [Parameter(Mandatory=$true)] + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(Mandatory=$true)] + [ValidateSet("black", "white")] + [String]$Type, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$AclAddress, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{ + "delvs" = $Type + "vsip" = $VirtualService + "vsport" = $VSPort + "vsprot" = $VSProtocol + "addr" = $AclAddress + } + + try { + $response = SendCmdToLm -Command "aclcontrol" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "RemoveVSPacketFilterACL" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-VSPacketFilterACL + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-PacketFilterOptionACL +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + <# + [Parameter(Mandatory=$true)] + [ValidateSet("enable", "drop", "ifblock")] + [String]$Option, + #> + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $parameters = @("isenabled", "isdrop", "isifblock") + + $ht = [ordered]@{} + $ht.PSTypeName = "PacketFilterOption" + foreach ($param in $parameters) + { + try { + $response = SendCmdToLm -Command "aclcontrol/$param" -ParameterName $null -ConnParams $ConnParams + $lma = HandleLmAnswer -Command2ExecClass "GetPacketFilterOption" -LMResponse $response -AdditionalData $param + if ($lma.ReturnCode -eq 200) { + $ht.add($lma.Data.PSObject.Properties.Name, $lma.Data.PSObject.Properties.Value) + } + else { + return $lma + } + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + return + } + } + $pfoObject = New-Object -TypeName PSObject -Property $ht + + $pfHt = [ordered]@{} + $pfHt.PSTypeName = "PacketFilterConfiguration" + $pfHt.Add("PacketFilterConfiguration", $pfoObject) + $pfcObject = New-Object -TypeName PSObject -Property $pfHt + + setKempAPIReturnObject $lma.ReturnCode $lma.Response $pfcObject +} +Export-ModuleMember -function Get-PacketFilterOptionACL + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-PacketFilterOptionACL +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("enable", "drop", "ifblock")] + [String]$Option, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [bool]$Value, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $param = [ordered]@{} + $param.Add($Option, $Value -as [int]) + + try { + $response = SendCmdToLm -Command "aclcontrol" -ParameterValuePair $param -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-PacketFilterOptionACL + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-GlobalPacketFilterACL +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("black", "white")] + [String]$Type, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $param = [ordered]@{"list" = $Type} + + try { + $response = SendCmdToLm -Command "aclcontrol" -ParameterValuePair $param -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetGlobalPacketFilterACL" -LMResponse $response -AdditionalData $Type + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-GlobalPacketFilterACL + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-GlobalPacketFilterACL +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("black", "white")] + [String]$Type, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Address, + + [String]$Comment, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{ + "add" = $Type + "addr" = $Address + } + if ($Comment) { + $params.Add("comment", [System.Uri]::EscapeDataString($Comment)) + } + + try { + $response = SendCmdToLm -Command "aclcontrol" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "NewGlobalPacketFilterACL" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-GlobalPacketFilterACL + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-GlobalPacketFilterACL +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("black", "white")] + [String]$Type, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Address, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = [ordered]@{ + "del" = $Type + "addr" = $Address + } + + try { + $response = SendCmdToLm -Command "aclcontrol" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-GlobalPacketFilterACL + +# ================================================== +# endregion FILTER +# ================================================== + + +# ================================================== +# region AFE +# ================================================== + +# Internal use only +Function getIntrusionDetectionLevelString($paranoiaLevel) +{ + switch ($paranoiaLevel) + { + 0 { + $plString = "Low" + break + } + + 1 { + $plString = "Default" + break + } + + 2 { + $plString = "High" + break + } + + 3 { + $plString = "Paranoid" + break + } + } + return $plString +} + +# Internal use only +Function getIntrusionDetectionLevel($IDLString) +{ + switch ($IDLString) + { + "Low" { + $level = 0 + break + } + + "Default" { + $level = 1 + break + } + + "High" { + $level = 2 + break + } + + "Paranoid" { + $level = 3 + break + } + } + return $level +} + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LmAFEConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + # NOTE Missing params: + # extensions not cached + # extensions not compressed + $parameters = @("Cachesize", "HostCache", "Paranoia", "LimitInput") + + $lma = GetLmParameterSet $parameters "LmAFEConfiguration" $params + if ($lma.ReturnCode -ne 200) { + return $lma + } + $lma.Data.LmAFEConfiguration.Paranoia = getIntrusionDetectionLevelString $lma.Data.LmAFEConfiguration.Paranoia + renameCustomObjectProperty $lma.Data.LmAFEConfiguration "Paranoia" "DetectionLevel" + $lma +} +Export-ModuleMember -function Get-LmAFEConfiguration, Get-AFEConfiguration + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-LmAFEConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateRange(1, 409)] + [Int]$CacheSize, + + [bool]$HostCache, + + [ValidateSet("Low", "Default", "High", "Paranoid")] + [string]$DetectionLevel, + + [ValidateRange(0, 100000)] + [Int64]$LimitInput, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + if ($DetectionLevel) { + $paranoiaLevel = getIntrusionDetectionLevel $DetectionLevel + $parameters2set.Remove("DetectionLevel") + $parameters2set.Add("paranoia", $paranoiaLevel) + } + + if ($parameters2set.Count -eq 0) { + setKempAPIReturnObject 200 "Command successfully executed." $null + return + } + + $params2Get = @() + foreach ($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + + Start-Sleep -m 200 + } + $lma = GetLmParameterSet $params2Get "Parameters" $params + if ($lma.Data.Parameters.Paranoia) { + $lma.Data.Parameters.Paranoia = getIntrusionDetectionLevelString $lma.Data.Parameters.Paranoia + renameCustomObjectProperty $lma.Data.Parameters "Paranoia" "DetectionLevel" + } + $lma +} +Export-ModuleMember -function Set-LmAFEConfiguration, Set-AFEConfiguration + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Update-AFEIDSRules +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateScript({Test-Path -Path $_})] + [ValidateNotNullOrEmpty()] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "updatedetect" -ParameterValuePair $params -File $Path -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Update-AFEIDSRules, Update-IDSRules + +# ================================================== +# endregion AFE +# ================================================== + + +# ================================================== +# region CONNLIMIT +# ================================================== + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LmIPConnectionLimit +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "afeclientlimitlist" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLmIPConnectionLimit" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmIPConnectionLimit, AfeClientLimitList + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function New-LmIPConnectionLimit +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$L7addr, + + [Parameter(Mandatory=$true)] + [int32]$L7limit, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "afeclientlimitadd" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-LmIPConnectionLimit, AfeClientLimitAdd + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Remove-LmIPConnectionLimit +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$L7addr, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "afeclientlimitdel" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-LmIPConnectionLimit, AfeClientLimitDelete + +# ================================================== +# endregion CONNLIMIT +# ================================================== + + +# ================================================== +# region HA +# ================================================== + +# Internal use only +Function GetHaModeString($HaMode) +{ + switch ($HaMode) + { + 0 { $HaModeStringValue = "No HA mode" } + 1 { $HaModeStringValue = "HA First" } + 2 { $HaModeStringValue = "HA Second" } + 3 { $HaModeStringValue = "Cloud HA" } + 4 { $HaModeStringValue = "N+M Cluster" } + + default { $HaModeStringValue = "HA mode UNKNOWN" } + } + return $HaModeStringValue +} + +# Internal use only +Function ConvertHaModeStringToInt($HaMode) +{ + switch ($HaMode) + { + "SingleMode" { + $HaModeIntValue = 0 + break + } + + "HA First" { + $HaModeIntValue = 1 + break + } + + "HA Second" { + $HaModeIntValue = 2 + break + } + + default { + $HaModeIntValue = -1 + break + } + } + return $HaModeIntValue +} + +# Internal use only +Function GetPreferredServerString($prefServer) +{ + switch ($prefServer) + { + 0 { $prefServerString = "No Preferred Host" } + 1 { $prefServerString = "Prefer First HA" } + 2 { $prefServerString = "Prefer Second HA" } + + default { $prefServerString = "Prefer UNKNOWN" } + } + return $prefServerString +} + +Function Get-LmHAMode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $lma = GetLmParameter "Hamode" $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + if ($lma.ReturnCode -ne 200) { + return $lma + } + + $HaModeValue = $lma.Data.hamode + if ($HaModeValue -ge 0 -and $HaModeValue -le 4) { + $HaModeDescription = GetHaModeString $HaModeValue + $tmp = [ordered]@{} + $tmp.Add("HaMode", $HaModeValue) + $tmp.Add("HaDescription", $HaModeDescription) + $dataObj = New-Object -TypeName PSObject -Prop $tmp + + $haConf = [ordered]@{} + $haConf.Add("HAConf", $dataObj) + $haObj = New-Object -TypeName PSObject -Prop $haConf + + setKempAPIReturnObject 200 "Command successfully executed" $haObj + } + else { + Write-Verbose "ERROR: invalid HA mode value [$HaModeValue]" + setKempAPIReturnObject 401 "ERROR: invalid HA mode value" $null + } +} +Export-ModuleMember -function Get-LmHAMode + +Function Set-LmHAMode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("SingleMode", "HA First", "HA Second")] + [string]$HaMode, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $intHaMode = ConvertHaModeStringToInt $HaMode + if ($intHaMode -lt 0) { + setKempAPIReturnObject 401 "System error: not allowed HA mode value [$intHaMode]" $null + return + } + + SetLmParameter "hamode" $intHaMode $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation +} +Export-ModuleMember -function Set-LmHAMode + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LmHAConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $lma = Get-LmHAMode @params + if ($lma.ReturnCode -ne 200) { + return $lma + } + + if ($lma.Data.HAConf.HaMode -le 0 -or $lma.Data.HAConf.HaMode -ge 3) { + setKempAPIReturnObject 401 "ERROR: The LoadMaster is not in HA mode." $null + return + } + + $params2get = @("hamode", "hatimeout", "hawait", "havhid", "haprefered", "haif", "hal4update", "hal7update", "MCast", "Vmac") + + $ht = [ordered]@{} + $ht.PSTypeName = "HAConfiguration" + foreach($param in $params2get) { + $params.Add("param", $param) + + $lma = Get-LmParameter @params + if ($lma.ReturnCode -eq 200) { + $paramValue = $lma.Data.$param + if ($param -eq "hamode") { + $ht.Add($param, (GetHaModeString $paramValue)) + } + elseif ($param -eq "haprefered") { + $ht.Add($param, (GetPreferredServerString $paramValue)) + } + elseif ($param -eq "hatimeout") { + $ht.Add($param, (($paramValue -as [int])*3)) + } + else { + $ht.Add($param, $paramValue) + } + } + else { + return $lma + } + $params.Remove("param") + Start-Sleep -m 200 + } + $tmpObj = New-Object -TypeName PSObject -Property $ht + + $haConf = [ordered]@{} + $haConf.PSTypeName = "HAConfiguration" + $haConf.Add("HAConfiguration", $tmpObj) + $emConfObject = New-Object -TypeName PSObject -Property $haConf + + setKempAPIReturnObject 200 "Command successfully executed" $emConfObject +} +Export-ModuleMember -function Get-LmHAConfiguration, Get-HAOption + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Set-LmHAConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateSet(3, 6, 9, 12, 15)] + [Int16]$hatimeout, + + [ValidateRange(0, 180)] + [Int16]$hawait, + + [ValidateRange(1, 255)] + [Int16]$havhid, + + [ValidateSet("No Preferred Host", "Prefer First HA", "Prefer Second HA")] + [string]$haprefered, + + [Int16]$haif, + + [bool]$hal4update, + + [bool]$hal7update, + + [Int16]$MCast, + + [bool]$Vmac, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + + if ($hatimeout) { + $parameters2set["hatimeout"] = $hatimeout/3 + } + if ($haprefered) { + $parameters2set["haprefered"] = $preferredServerHT[$haprefered] + } + + $params2Get = @() + foreach ($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + + Start-Sleep -m 200 + } + $lma = GetLmParameterSet $params2Get "Parameters" $params + if ($lma.ReturnCode -eq 200) { + if ($lma.Data.Parameters.hatimeout) { + $lma.Data.Parameters.hatimeout = ($lma.Data.Parameters.hatimeout -as [int])*3 + } + if ($lma.Data.Parameters.haprefered -ge 0) { + $lma.Data.Parameters.haprefered = GetPreferredServerString $lma.Data.Parameters.haprefered + } + } + $lma +} +Export-ModuleMember -function Set-LmHAConfiguration, Set-HAOption + +Function Set-LmAzureHAMode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("master", "slave", "single")] + [string]$HAMode, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "azurehamode" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmAzureHAMode, Set-AzureHAMode + +Function Get-LmAzureHAConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "getazurehaparams" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetAzureHAConfiguration" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmAzureHAConfiguration, Get-AzureHAOption + +Function Set-LmAzureHAConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$Partner, + + [ValidateNotNullOrEmpty()] + [string]$HealthCheckPort, + + [ValidateNotNullOrEmpty()] + [ValidateRange(0, 1)] + [int]$Hapreferred, + + [ValidateNotNullOrEmpty()] + [ValidateSet("no", "yes")] + [string]$HealthCheckAllInterfaces = "no", + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (!$Partner -and !$HealthCheckPort) { + Throw "ERROR: Partner and/or Hcp must be provided." + } + + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($HealthCheckPort) { + $params.Remove("HealthCheckPort") + $params.Add("Hcp", $HealthCheckPort) + } + if ($Hapreferred -eq 0 -or $Hapreferred -eq 1) { + $params.Remove("Hapreferred") + $params.Add("Haprefered", $Hapreferred) + } + else { + Throw "ERROR: Value for Hapreferred ($Hapreferred) out of range." + return + } + if ($HealthCheckAllInterfaces) { + $params.Remove("HealthCheckAllInterfaces") + if ($HealthCheckAllInterfaces -eq "yes") { + $params.Add("hcai", 1) + } + else { + $params.Add("hcai", 0) + } + } + + try { + $response = SendCmdToLm -Command "azurehaparam" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmAzureHAConfiguration, Set-AzureHAOption + +Function Set-LmAwsHAMode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("master", "slave", "single")] + [string]$HAMode, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "awshamode" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmAwsHAMode, Set-AwsHAMode + +Function Get-LmAwsHAConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "getawshaparams" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetAwsHaConfiguration" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmAwsHAConfiguration, Get-AwsHAOption + +Function Set-LmAwsHAConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$Partner, + + [ValidateNotNullOrEmpty()] + [string]$HealthCheckPort, + + [ValidateNotNullOrEmpty()] + [ValidateRange(0, 1)] + [int]$haprefered, + + [ValidateNotNullOrEmpty()] + [ValidateSet("no", "yes")] + [string]$HealthCheckAllInterfaces = "no", + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if (!$Partner -and !$HealthCheckPort) { + Throw "ERROR: Partner and/or HealthCheckPort must be provided." + } + + $params = ConvertBoundParameters -hashtable $psboundparameters + if ($HealthCheckPort) { + $params.Remove("HealthCheckPort") + $params.Add("Hcp", $HealthCheckPort) + } + + if ($HealthCheckAllInterfaces) { + $params.Remove("HealthCheckAllInterfaces") + if ($HealthCheckAllInterfaces -eq "yes") { + $params.Add("hcai", 1) + } + else { + $params.Add("hcai", 0) + } + } + + try { + $response = SendCmdToLm -Command "awshaparam" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Set-LmAwsHAConfiguration, Set-AwsHAOption + +Function Get-LmCloudHaConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "getCloudHaParams" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLmCloudHaConfiguration" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmCloudHaConfiguration + +# ================================================== +# endregion HA +# ================================================== + + +# ================================================== +# region DIAGNOSTIC +# ================================================== + +Function Get-LmDebugInformation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateSet("ps", "meminfo", "ifconfig", "netstat", "interrupts", "partitions", "cpuinfo", "df", "lspci", "lsmod", "slabinfo")] + [string]$Param, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + $cmd = "logging/$Param" + + try { + $response = SendCmdToLm -Command $cmd -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetLmDebugInformation" -LMResponse $response -AdditionalData $Param + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-LmDebugInformation + +#.ExternalHelp Kemp.LoadBalancer.Powershell-Help.xml +Function Get-LmDebugConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + # NOTE: to verify + # - Enable L7 Debug Traces + # - Perform an l7adm + # - Enable WAF Debug Logging + # - Enable TSO + # - Enable Bind Debug Traces + # - Include Netstat in Backups + # - Reset Statistic Counters + # - Flush OCSPD Cache + # - SSO LDAP server timeout + # - Stop IPsec IKE Daemon + # - Perform an IPsec Status + # - Enable IKE Debug Level Logs + $parameters = @("irqbalance", "linearesplogs", "netconsole", "netconsoleinterface") + + GetLmParameterSet $parameters "LmDebugConfiguration" $params +} +Export-ModuleMember -function Get-LmDebugConfiguration, Get-DebugOption + +Function Set-LmDebugConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$irqbalance, + + [bool]$linearesplogs, + + [string]$netconsole, + + [Int16]$netconsoleinterface, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $parameters2set = ConvertBoundParameters -hashtable $psboundparameters -SkipEncoding + + $params2Get = @() + foreach ($param in $parameters2set.Keys) { + + $params.Add("param", $param) + $params.Add("value", $parameters2set[$param]) + $params2Get += $param + + $response = Set-LmParameter @params + if ($response.ReturnCode -ne 200) { + return $response + } + + $params.Remove("param") + $params.Remove("value") + + Start-Sleep -m 200 + } + GetLmParameterSet $params2Get "Parameters" $params +} +Export-ModuleMember -function Set-LmDebugConfiguration, Set-DebugOption + +# Internal use only +Function CheckPingInputParameters($Address2Ping, $PingClass, $Interface, $params) +{ + if (([String]::IsNullOrEmpty($Address2Ping))) { + Throw "ERROR: Address to ping is NULL" + } + $params.Remove("Address") + $params.Add("addr", $Address) + + if (([String]::IsNullOrEmpty($PingClass))) { + Throw "ERROR: Ping class is NULL" + } + + if ($PingClass -ne "ping" -and $PingClass -ne "ping6") { + Throw "ERROR: Not allowed Ping Class ($PingClass)" + } + if ($PingClass -ne "") { + $params.Remove("PingClass") + } + + if ($Interface) { + $params.Remove("Interface") + $params.Add("intf", $Interface) + } +} + +Function Ping-Host +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Address, + + [ValidateSet("ping", "ping6")] + [string]$PingClass = "ping", + + [string]$Interface = $null, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + if ($Interface) { + $ConnParams2 = getConnParameters_2 $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $lma = Get-LmNetworkInterface @ConnParams2 + if ($lma.ReturnCode -ne 200) { + return $lma + } + $check = $false + $intfs = $lma.Data.Interface.name + foreach($item in $intfs) { + if ($item -eq $Interface) { + $check = $true + break + } + } + if ($check -eq $false) { + setKempAPIReturnObject 400 "Invalid interface ($Interface)" $null + return + } + } + + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $params = ConvertBoundParameters -hashtable $psboundparameters + CheckPingInputParameters $Address $PingClass $Interface $params + + $cmd = "logging/$PingClass" + try { + $response = SendCmdToLm -Command $cmd -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "PingHost" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Ping-Host + +Function Trace-TcpTraffic +{ + [cmdletbinding(SupportsShouldProcess=$true, DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [ValidateRange(1, 200000)] + [int]$MaxPackets, + + [ValidateNotNullOrEmpty()] + [ValidateRange(1, 600)] + [int]$MaxTime, + + [ValidateNotNullOrEmpty()] + [string]$Interface, + + [ValidateNotNullOrEmpty()] + [string]$Port, + + [ValidateNotNullOrEmpty()] + [string]$Address, + + [ValidateNotNullOrEmpty()] + [string]$TcpOptions, + + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + + PROCESS + { + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = [ordered]@{} + if($MaxPackets){ + $params.Add("maxpackets", $MaxPackets) + } + if($MaxTime){ + $params.Add("maxtime", $MaxTime) + } + if($Interface){ + $params.Add("interface", $Interface) + } + if($Port){ + $params.Add("port", $Port) + } + if($Address){ + $params.Add("address", $Address) + } + if($TcpOptions){ + $params.Add("tcpoptions", $TcpOptions) + } + + if (-not ($Path)) + { + $defaultFolder = "$($Env:SystemRoot)\Temp" + if (Test-Path -Path $defaultFolder) { + $Path = "$defaultFolder\tcpdump_$(Get-Date -format yyyy-MM-dd_HH-mm-ss).pcap" + } + else { + Throw "ERROR: the default folder $($Env:SystemRoot)\Temp does not exist" + } + } + else { + $folder = Split-Path -Path $path + if (-not (Test-Path -Path $folder)) { + Throw "ERROR: the folder $folder does not exist" + } + } + Write-Verbose "output file: $Path" + + if (($Force) -or ($PsCmdlet.ShouldProcess($Path, "Output File Overwrite"))) { + + try { + $response = SendCmdToLm -Command "tcpdump" -ParameterValuePair $params -File $Path -Output -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } + } + } +} +Export-ModuleMember -function Trace-TcpTraffic, DoTcpDump + +# ================================================== +# endregion DIAGNOSTIC +# ================================================== + + +# ================================================== +# region N+M +# ================================================== + +Function Get-ClusterStatus +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "cluster/status" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GetClusterStatus" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Get-ClusterStatus, NMClusterStatus + +Function New-Cluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SharedAddress, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "cluster/create" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "NewCluster" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-Cluster, NMClusterCreate + +Function New-ClusterNode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Address, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "cluster/addnode" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function New-ClusterNode, NMAddNode + +Function Join-Cluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "cluster/joincluster" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Join-Cluster, NMJoinCluster + +Function Enable-ClusterNode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$NodeId, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "cluster/enablenode" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Enable-ClusterNode, NMEnableNode + +Function Disable-ClusterNode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$NodeId, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "cluster/disablenode" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Disable-ClusterNode, NMDisableNode + +Function Remove-ClusterNode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$NodeId, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + validateCommonInputParams $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + $ConnParams = getConnParameters $LoadBalancer $LBPort $Credential $SubjectCN $CertificateStoreLocation + + $params = ConvertBoundParameters -hashtable $psboundparameters + + try { + $response = SendCmdToLm -Command "cluster/deletenode" -ParameterValuePair $params -ConnParams $ConnParams + HandleLmAnswer -Command2ExecClass "GeneralCase" -LMResponse $response + } + catch { + $errMsg = $_.Exception.Message + setKempAPIReturnObject 400 "$errMsg" $null + } +} +Export-ModuleMember -function Remove-ClusterNode, NMDeleteNode + +# ================================================== +# endregion N+M +# ================================================== + +# SIG # Begin signature block +# MIIcBQYJKoZIhvcNAQcCoIIb9jCCG/ICAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDxEUOyu6sFPsEg +# ZCXvb1aCktk70TRZoG1OX0Aerr8s7aCCCtswggVWMIIEPqADAgECAhAZGjLLdZyX +# uM+sEY3VEn9JMA0GCSqGSIb3DQEBCwUAMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UE +# ChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +# cmsxOjA4BgNVBAsTMShjKSAyMDA2IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +# cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGlj +# IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHNTAeFw0xNDAzMDQw +# MDAwMDBaFw0yNDAzMDMyMzU5NTlaMIGRMQswCQYDVQQGEwJVUzEdMBsGA1UEChMU +# U3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5l +# dHdvcmsxQjBABgNVBAMTOVN5bWFudGVjIENsYXNzIDMgRXh0ZW5kZWQgVmFsaWRh +# dGlvbiBDb2RlIFNpZ25pbmcgQ0EgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEP +# ADCCAQoCggEBANAYAu7too0IWGMPJtfdInuI9uTH7DsmGHjTx6QgU42DfKU/fqXI +# K0ffDfWm2cMdJZNgz3zc6gMsvnh/XEhtpwLZSfih6+uaYXyfwCbW3BXYuBB8ILpe +# 9Cj2qOqnXHzGnJCQNDy2Iqz+ugw6HtZehLZb8KOBcHiKjUZSe/zbSfMpExF0T40W +# s8LjoC3HAwSdzMNy4Q4M+wKO8SYXe26u+Lczi6ZhS0Xf8iVEx/ewmCM23Ch5Cuib +# coio2Oiue38KZEWl8FeSmncGRR7rn+hm83p9koFfAC0euPZWE1piDbdHoY9y74Ne +# guCUmOGspa2GN+Cn07qxPnrrRajxwUR94gMCAwEAAaOCAW0wggFpMBIGA1UdEwEB +# /wQIMAYBAf8CAQAwLwYDVR0fBCgwJjAkoCKgIIYeaHR0cDovL3Muc3ltY2IuY29t +# L3BjYTMtZzUuY3JsMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMA4GA1UdDwEB/wQE +# AwIBBjAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUHMAGGEmh0dHA6Ly9zLnN5bWNk +# LmNvbTBfBgNVHSAEWDBWMFQGBFUdIAAwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9k +# LnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNv +# bS9ycGEwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNjI5 +# MB0GA1UdDgQWBBQWZt5KNONQpxGGA7FsqcaszVlumzAfBgNVHSMEGDAWgBR/02Wn +# wt3su/AwCfNDOfoCrzMxMzANBgkqhkiG9w0BAQsFAAOCAQEAP1sZ8/oT1XU4Klru +# n1qgTKkdxcyU7t4V/vUQbqQbpWSDVBhYxAsooYXDTnTl/4l8/tXtPLpxn1YCJo8W +# Koj+sKMnIs5L4jiOAKY6hl+d5T6o3mRJQXRBIf0HyIQX2h1lMILLJk851gQnpIGx +# S0nDI4t+AjIYJ7erC/MYcrak7mcGbzimWI3g8X5dpGDGqOVQX+DouuKPmVi2taCo +# dvGi8RyIQXJ+UpebCjaZjVD3Aes85/AiauU1jGM2ihqx2WdmX5ca76ggnfAvumzO +# 2ZSFAPFY8X3JfCK1B10CxuYLv6uTk/8nGI4zNn5XNPHDrwTBhPFWs+iHgzb40wox +# 3G4sbTCCBX0wggRloAMCAQICEAnjhjYs/6dOuAUymxv+wPcwDQYJKoZIhvcNAQEL +# BQAwgZExCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlv +# bjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazFCMEAGA1UEAxM5U3lt +# YW50ZWMgQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIENvZGUgU2lnbmluZyBD +# QSAtIEcyMB4XDTE3MTAxOTAwMDAwMFoXDTE5MTAxOTIzNTk1OVowgf4xEzARBgsr +# BgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAgwIRGVsYXdhcmUxGTAXBgsr +# BgEEAYI3PAIBAQwITmV3IFlvcmsxHTAbBgNVBA8TFFByaXZhdGUgT3JnYW5pemF0 +# aW9uMRAwDgYDVQQFEwc1MDg0MDMyMQswCQYDVQQGEwJVUzERMA8GA1UECAwITmV3 +# IFlvcmsxETAPBgNVBAcMCE5ldyBZb3JrMR8wHQYDVQQKDBZLRU1QIFRlY2hub2xv +# Z2llcyBJbmMuMQswCQYDVQQLDAJRQTEfMB0GA1UEAwwWS0VNUCBUZWNobm9sb2dp +# ZXMgSW5jLjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPaExXaYUBkx +# Rx66WM67RJs7wYzxOrp45d15G1+/YKR++bLt3lq4a2GyAMeAQ64ORVAh7A/6mvGM +# vmI0EnvDHIEd01DkuvPuTLWYm8qlQ9YEIDr9yGx91m3KTfXv9rI2yomdEYRogn/k +# Hccj6aHw8zqfmW58raX1L8BpJZCm/POfXF2zdbQoLdwV1GBC1On/lrdgmrdy8yhU +# Q1BayPtJyFcr+6PEXdAK6wUkMRr3VMBCxuisYDmpQkCuMJLKx/p6a0SueJ6WMbsW +# 4FgOPrsEa568KIDzfrBo8PyLVz9GhK/CNCitSkcNjnRv7rjxDBY+UVskcrHR9FkZ +# zvj89+xJe4cCAwEAAaOCAWAwggFcMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeA +# MCsGA1UdHwQkMCIwIKAeoByGGmh0dHA6Ly9zdy5zeW1jYi5jb20vc3cuY3JsMGAG +# A1UdIARZMFcwVQYFZ4EMAQMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9kLnN5bWNi +# LmNvbS9jcHMwJQYIKwYBBQUHAgIwGQwXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEw +# FgYDVR0lAQH/BAwwCgYIKwYBBQUHAwMwHwYDVR0jBBgwFoAUFmbeSjTjUKcRhgOx +# bKnGrM1ZbpswHQYDVR0OBBYEFHbptFBo4Z3aXxd30+dWUKYVSK7VMFgGCCsGAQUF +# BwEBBEwwSjAfBggrBgEFBQcwAYYTaHR0cDovL3N3LnN5bWNkLmNvbTAnBggrBgEF +# BQcwAoYbaHR0cDovL3N3MS5zeW1jYi5jb20vc3cuY3J0MA0GCSqGSIb3DQEBCwUA +# A4IBAQCs9haqQM48HDVuu/2TI5HzuzHuX4hoQamrXtEK/bT36U2wEUr08q9nDCgE +# a4a9zfrLvnmtt+Qo9Eow7Qe46SkGSLOu/CHUdC1tZFSaqBFdZfPJO5UuYQ5wiJbQ +# Jp3dsVn1GyzmdrnYLlvyQ/b2/qDWmf8GA8gcnhtJQkGU0hPV8OUCaEnt3ia5ZHSp +# BF0lxbXTRQBb7qLIsz+OyJdOBVa5T3UN7Ghga2LMMUCoZg6xTNtTPuQBOAx7QnEL +# m0jvnkSdedx/JvxkIO+BKocCaWc/KBnNNRmVqkN6esIHzu1Q+yeYZZNEUVQaNfPa +# TlDzUq3bSqBaYy8bbNjUn8eW2C+kMYIQgDCCEHwCAQEwgaYwgZExCzAJBgNVBAYT +# AlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3lt +# YW50ZWMgVHJ1c3QgTmV0d29yazFCMEAGA1UEAxM5U3ltYW50ZWMgQ2xhc3MgMyBF +# eHRlbmRlZCBWYWxpZGF0aW9uIENvZGUgU2lnbmluZyBDQSAtIEcyAhAJ44Y2LP+n +# TrgFMpsb/sD3MA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJ +# KoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQB +# gjcCARUwLwYJKoZIhvcNAQkEMSIEIH3OOR0Nq3FXwsiHufkZVcu8TDURdzHPk1ED +# taxvfRo7MA0GCSqGSIb3DQEBAQUABIIBADM15FKWDZ9CYkgMznW0p5hrBn+Ocska +# Vkb7YXWsuLkiUv//4qvgMXyRPP8bD61um5WLHdw7p9X9G9oYNblkT4BI0O12otav +# c//JEYunImdAuPPT+++f52LHIf9pyU+atTdwnWa5q/lUp5T9CHwJm8GMrysgqGxy +# yD79tbiKxnX96z+dNp5Q0Yc4M2F5zT6ReS5vcrSMpmBIRvjnvWyI4IkZfVtX0oTv +# j8F4MzKgvXSFOb8B0Thkp4QUVe820w96XYt87K7/NYifiKvxNDVtVZJaastm2+a3 +# aYx4tf4m5vegsoD36uyswKFep65gvxRkX7Vhj95o/XWIfeKIfIeWVHOhgg4sMIIO +# KAYKKwYBBAGCNwMDATGCDhgwgg4UBgkqhkiG9w0BBwKggg4FMIIOAQIBAzENMAsG +# CWCGSAFlAwQCATCB/wYLKoZIhvcNAQkQAQSgge8EgewwgekCAQEGC2CGSAGG+EUB +# BxcDMCEwCQYFKw4DAhoFAAQUO9p03sbKyVMx22hRaDY5e7E9uqkCFQDIrHRpliZw +# 3yq805DfTOdZpaAdgBgPMjAxNzExMzAxODIwMzVaMAMCAR6ggYakgYMwgYAxCzAJ +# BgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UE +# CxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazExMC8GA1UEAxMoU3ltYW50ZWMgU0hB +# MjU2IFRpbWVTdGFtcGluZyBTaWduZXIgLSBHMqCCCoswggU4MIIEIKADAgECAhB7 +# BbHUSWhRRPfJidKcGZ0SMA0GCSqGSIb3DQEBCwUAMIG9MQswCQYDVQQGEwJVUzEX +# MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +# IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +# IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +# bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE2MDExMjAwMDAwMFoX +# DTMxMDExMTIzNTk1OVowdzELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVj +# IENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMSgw +# JgYDVQQDEx9TeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIENBMIIBIjANBgkq +# hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1mdWVVPnYxyXRqBoutV87ABrTxxrDKP +# BWuGmicAMpdqTclkFEspu8LZKbku7GOz4c8/C1aQ+GIbfuumB+Lef15tQDjUkQbn +# QXx5HMvLrRu/2JWR8/DubPitljkuf8EnuHg5xYSl7e2vh47Ojcdt6tKYtTofHjmd +# w/SaqPSE4cTRfHHGBim0P+SDDSbDewg+TfkKtzNJ/8o71PWym0vhiJka9cDpMxTW +# 38eA25Hu/rySV3J39M2ozP4J9ZM3vpWIasXc9LFL1M7oCZFftYR5NYp4rBkyjyPB +# MkEbWQ6pPrHM+dYr77fY5NUdbRE6kvaTyZzjSO67Uw7UNpeGeMWhNwIDAQABo4IB +# dzCCAXMwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwZgYDVR0g +# BF8wXTBbBgtghkgBhvhFAQcXAzBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3lt +# Y2IuY29tL2NwczAlBggrBgEFBQcCAjAZGhdodHRwczovL2Quc3ltY2IuY29tL3Jw +# YTAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUHMAGGEmh0dHA6Ly9zLnN5bWNkLmNv +# bTA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vcy5zeW1jYi5jb20vdW5pdmVyc2Fs +# LXJvb3QuY3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMIMCgGA1UdEQQhMB+kHTAbMRkw +# FwYDVQQDExBUaW1lU3RhbXAtMjA0OC0zMB0GA1UdDgQWBBSvY9bKo06FcuCnvEHz +# KaI4f4B1YjAfBgNVHSMEGDAWgBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG +# 9w0BAQsFAAOCAQEAdeqwLdU0GVwyRf4O4dRPpnjBb9fq3dxP86HIgYj3p48V5kAp +# reZd9KLZVmSEcTAq3R5hF2YgVgaYGY1dcfL4l7wJ/RyRR8ni6I0D+8yQL9YKbE4z +# 7Na0k8hMkGNIOUAhxN3WbomYPLWYl+ipBrcJyY9TV0GQL+EeTU7cyhB4bEJu8LbF +# +GFcUvVO9muN90p6vvPN/QPX2fYDqA/jU/cKdezGdS6qZoUEmbf4Blfhxg726K/a +# 7JsYH6q54zoAv86KlMsB257HOLsPUqvR45QDYApNoP4nbRQy/D+XQOG/mYnb5DkU +# vdrk08PqK1qzlVhVBH3HmuwjA42FKtL/rqlhgTCCBUswggQzoAMCAQICEFRY8qrX +# QdZEvISpe6CWUuYwDQYJKoZIhvcNAQELBQAwdzELMAkGA1UEBhMCVVMxHTAbBgNV +# BAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVz +# dCBOZXR3b3JrMSgwJgYDVQQDEx9TeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5n +# IENBMB4XDTE3MDEwMjAwMDAwMFoXDTI4MDQwMTIzNTk1OVowgYAxCzAJBgNVBAYT +# AlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3lt +# YW50ZWMgVHJ1c3QgTmV0d29yazExMC8GA1UEAxMoU3ltYW50ZWMgU0hBMjU2IFRp +# bWVTdGFtcGluZyBTaWduZXIgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +# AQoCggEBAJnz/NgECQOG+ddcppPAQnzqfGPPXQDijvPAkN+PKfUY6pS3kuXXsKBz +# gejpCptKfAH/nY+kOacO6kX0Igw6cO05RYvkxRtc8EVoRiQFY3abHPyebCqxVuWK +# f1JxrvI11UYjBhzPSC0dtM242XYjjhz/Pr+7BlxpB6ZlDvhern0u7U2uNe/J1wBC +# /SiVDp9dckIJvMPaRNLtzEeE5PzKLaxYvq73rtlEDQi3wnfWGkNw0W4D3lKSxBAI +# cdm6IlXyH7ztm5074l4dTIP/lw97C+dVg07SDeu+1+yubke5n9+l1lG8BFXt/ydw +# TMntKksT4bG5TA/JAe5VZV9pAnhmyz8CAwEAAaOCAccwggHDMAwGA1UdEwEB/wQC +# MAAwZgYDVR0gBF8wXTBbBgtghkgBhvhFAQcXAzBMMCMGCCsGAQUFBwIBFhdodHRw +# czovL2Quc3ltY2IuY29tL2NwczAlBggrBgEFBQcCAjAZGhdodHRwczovL2Quc3lt +# Y2IuY29tL3JwYTBABgNVHR8EOTA3MDWgM6Axhi9odHRwOi8vdHMtY3JsLndzLnN5 +# bWFudGVjLmNvbS9zaGEyNTYtdHNzLWNhLmNybDAWBgNVHSUBAf8EDDAKBggrBgEF +# BQcDCDAOBgNVHQ8BAf8EBAMCB4AwdwYIKwYBBQUHAQEEazBpMCoGCCsGAQUFBzAB +# hh5odHRwOi8vdHMtb2NzcC53cy5zeW1hbnRlYy5jb20wOwYIKwYBBQUHMAKGL2h0 +# dHA6Ly90cy1haWEud3Muc3ltYW50ZWMuY29tL3NoYTI1Ni10c3MtY2EuY2VyMCgG +# A1UdEQQhMB+kHTAbMRkwFwYDVQQDExBUaW1lU3RhbXAtMjA0OC01MB0GA1UdDgQW +# BBQJtcH+lnKXKUOayeACuq74/S+69jAfBgNVHSMEGDAWgBSvY9bKo06FcuCnvEHz +# KaI4f4B1YjANBgkqhkiG9w0BAQsFAAOCAQEAF7MKiOlcWl4gazsKFbJsxamKMofT +# sfQcU66Fvj+b/9e8t5SFtMdSfpTove1hstSnmeTDyZPBNT0L6GgKXVaYvbEiO9FE +# ete/8G1RMorVI984ATf24lMreisRj7dNbHozAxt8awmUF7vk21jUIRNl5+zRJcos +# dZqcf/zJuypoq8R9tM+jyWyn2cQAnIkKd5H0TaL7MTuGbvbmH1ADhpu/y0Kr5nab +# cloRAYrG76VvlefdrrrmImXwGFkbEcnNgLfYl0cfQgj4rHEfsEZTs9Sy1aOrUHVI +# EheCrc/gQU8yfs2VHL+Rigg9pKdnApbfJEyl0EHAgmCjihcyS9O8z6S0jDGCAlow +# ggJWAgEBMIGLMHcxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jw +# b3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazEoMCYGA1UE +# AxMfU3ltYW50ZWMgU0hBMjU2IFRpbWVTdGFtcGluZyBDQQIQVFjyqtdB1kS8hKl7 +# oJZS5jALBglghkgBZQMEAgGggaQwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEE +# MBwGCSqGSIb3DQEJBTEPFw0xNzExMzAxODIwMzVaMC8GCSqGSIb3DQEJBDEiBCDe +# QyWQBG7AmTZlssJvGcCR03/RUwUt34BxII2lDbpOtTA3BgsqhkiG9w0BCRACLzEo +# MCYwJDAiBCDPesF60Efs1f3DaCIDGxLU7weLbytMXmukH4/yz0utZzALBgkqhkiG +# 9w0BAQEEggEAIy6SGuj7sDp/l0nxKSv1xDCrXuy/1AyPTlDsbor23A5G+i4sqS8x +# Lowa13v4A4yxUjcj+O3JuOVfori5x3ODgc3/M3TKMsZ6pvrcQqnnQedH/fAJLXJO +# ZPYKBaXLtq/KEk38Kzjr/Pag2urBGsmBf2pJeqje0zY6TTBZFsXYFQWi3UGaAbe8 +# 2W3yhutMy6KIcRuUpLx03PEUNSUoByWloqZRpYATQUKPZ0mTIvlJhPIaRXV3m81Y +# do0ps5FHOrqGV049YCSZ3B/zSWSH/LLgx8zk4ZwSsW8waIiZ4KvGDV8hRSHIBDaC +# 4/SSwYW8kVlf9JwBrhDhOvBB0yYvIzd06Q== +# SIG # End signature block diff --git a/Kemp/modules/Kemp.LoadBalancer.Powershell/deprecated.psm1 b/Kemp/modules/Kemp.LoadBalancer.Powershell/deprecated.psm1 new file mode 100644 index 0000000..9db3ff5 --- /dev/null +++ b/Kemp/modules/Kemp.LoadBalancer.Powershell/deprecated.psm1 @@ -0,0 +1,7771 @@ +# +# $Id: fcarpin $ Fabrizio Carpin +# + +$warning = "WARNING: This function is deprecated. Please use" + +# ================================================== +# region TEMPLATES +# ================================================== +Function ExportVSTemplate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$Port, + + [ValidateSet("tcp", "udp")] + [string]$Protocol, + + [Int32]$VSIndex, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Path, + [switch]$Force, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Export-VSTemplate" +} +Export-ModuleMember -function ExportVSTemplate + +Function UploadTemplate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Install-Template" +} +Export-ModuleMember -function UploadTemplate + +Function DeleteTemplate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-Template" +} +Export-ModuleMember -function DeleteTemplate + +Function ListTemplates +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-Template" +} +Export-ModuleMember -function ListTemplates +# ================================================== +# endregion TEMPLATES +# ================================================== + + +# ================================================== +# region LOGGING +# ================================================== +Function Get-EmailOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LogEmailConfiguration" +} +Export-ModuleMember -function Get-EmailOption + +Function Set-EmailOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$EmailEnable, + + [string]$EmailServer, + + [ValidateRange(3, 65530)] + [int]$EmailPort, + + [string]$EmailUser, + + [string]$EmailPassword, + + [string]$EmailDomain, + + [ValidateSet(0, 1, 2, 3)] + [Int16]$EmailSSLMode, + + [string]$EmailEmergency, + + [string]$EmailCritical, + + [string]$EmailError, + + [string]$EmailWarn, + + [string]$EmailNotice, + + [string]$EmailInfo, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LogEmailConfiguration" +} +Export-ModuleMember -function Set-EmailOption + +Function Get-SyslogOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LogSyslogConfiguration" +} +Export-ModuleMember -function Get-SyslogOption + +Function Set-SyslogOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$SyslogCritical, + [string]$SyslogEmergency, + [string]$SyslogError, + [string]$SyslogInfo, + [string]$SyslogNotice, + [string]$SyslogWarn, + + [UInt16]$SyslogPort, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LogSyslogConfiguration" +} +Export-ModuleMember -function Set-SyslogOption + +Function Get-Statistics +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [switch]$VirtualService, + [switch]$RealServer, + [switch]$Totals, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LogStatistics" +} +Export-ModuleMember -function Get-Statistics +# ================================================== +# endregion LOGGING +# ================================================== + + +# ================================================== +# region SSO +# ================================================== +Function UploadRSAConfigurationFile +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Install-SSORSAConfigurationFile" +} +Export-ModuleMember -function UploadRSAConfigurationFile + +Function UploadRSANodeSecretAndPassword +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Password, + + [Parameter(Mandatory=$true)] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Install-SSORSANodeSecretAndPassword" +} +Export-ModuleMember -function UploadRSANodeSecretAndPassword + +Function FlushSsoCache +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Clear-SSOCache" +} +Export-ModuleMember -function FlushSsoCache +# ================================================== +# endregion SSO +# ================================================== + + +# ================================================== +# region NETWORKING +# ================================================== +Function ListIfconfig +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmNetworkInterface" +} +Export-ModuleMember -function ListIfconfig + +Function Get-NetworkOptions +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-NetworkConfiguration" +} +Export-ModuleMember -function Get-NetworkOptions + +Function Set-NetworkOptions +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$SNAT, + + [bool]$AllowUpload, + + [ValidateRange(0, 86400)] + [Int64]$ConnTimeout, + + [bool]$KeepAlive, + + [bool]$MultiGW, + + [bool]$NonLocalRS, + + [bool]$OnlyDefaultRoutes, + + [bool]$ResetClose, + + [bool]$SubnetOrigin, + + [bool]$SubnetOriginating, + + [bool]$TCPTimeStamp, + + [bool]$RouteFilter, + + [ValidateRange(512, 4096)] + [Int32]$DHKeySize, + + [string]$Http_Proxy, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-NetworkConfiguration" +} +Export-ModuleMember -function Set-NetworkOptions + +Function Get-DNSConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-NetworkDNSConfiguration" +} +Export-ModuleMember -function Get-DNSConfiguration + +Function Set-DNSConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Hostname, + + [string]$HA1Hostname, + + [string]$HA2Hostname, + + [string]$NameServer, + + [string]$Searchlist, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-NetworkDNSConfiguration" +} +Export-ModuleMember -function Set-DNSConfiguration + +Function Update-LmDNSCache +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Update-NetworkDNSCache" +} +Export-ModuleMember -function Update-LmDNSCache + +Function Get-SNMPOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-NetworkSNMPConfiguration" +} +Export-ModuleMember -function Get-SNMPOption + +Function Set-SNMPOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$SNMPEnable, + [bool]$SNMPv3enable, + [string]$SNMPv3user, + [string]$SNMPv3userpasswd, + + [ValidateSet("SHA", "MD5")] + [string]$snmpAuthProt, + + [ValidateSet("AES", "DES")] + [string]$snmpPrivProt, + + [string]$SNMPClient, + [string]$SNMPCommunity, + [string]$SNMPContact, + [string]$SNMPLocation, + [bool]$SNMPTrapEnable, + [bool]$SNMPHaTrap, + [string]$SNMPv1Sink, + [string]$SNMPv2Sink, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-NetworkSNMPConfiguration" +} +Export-ModuleMember -function Set-SNMPOption + +Function Get-Interface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Int16]$InterfaceID = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-NetworkInterface" +} +Export-ModuleMember -function Get-Interface + +Function Set-Interface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Int16]$InterfaceID = 0, + + [string]$IPAddress, + + [Int32]$MTU, + + [bool]$HACheck, + + [bool]$GWIface, + + [bool]$clupdate, + + [bool]$GeoTraffic, + + [ValidateSet("802.3ad", "Active-backup")] + [string]$BondMode, + + [string]$Partner, + + [string]$Shared, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-NetworkInterface" +} +Export-ModuleMember -function Set-Interface + +Function Add-InterfaceAddress +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Int16]$InterfaceID, + [string]$Address, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-NetworkInterfaceAdditionalAddress" +} +Export-ModuleMember -function Add-InterfaceAddress + +Function Remove-InterfaceAddress +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [Int16]$InterfaceID, + [string]$Address, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Remove-NetworkInterfaceAdditionalAddress" +} +Export-ModuleMember -function Remove-InterfaceAddress + +Function Get-Route +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-NetworkRoute" +} +Export-ModuleMember -function Get-Route + +Function New-Route +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Destination, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Alias("Mask", "SubnetMask")] + [Int16]$CIDR, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Gateway, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-NetworkRoute" +} +Export-ModuleMember -function New-Route + +Function Remove-Route +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Destination, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-NetworkRoute" +} +Export-ModuleMember -function Remove-Route + +Function Register-BondedInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Register-NetworkBondedInterface" +} +Export-ModuleMember -function Register-BondedInterface + +Function Unregister-BondedInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Unregister-NetworkBondedInterface" +} +Export-ModuleMember -function Unregister-BondedInterface + +Function Add-BondedInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [Parameter(Mandatory=$true)] + [Int16]$BondID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-NetworkBondedInterface" +} +Export-ModuleMember -function Add-BondedInterface + +Function Remove-BondedInterface +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [Parameter(Mandatory=$true)] + [Int16]$BondID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-NetworkBondedInterface" +} +Export-ModuleMember -function Remove-BondedInterface + +Function Add-VLan +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [Parameter(Mandatory=$true)] + [ValidateRange(1, 4095)] + [Int16]$VLanId, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-NetworkVLAN" +} +Export-ModuleMember -function Add-VLan + +Function Remove-VLan +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-NetworkVLAN" +} +Export-ModuleMember -function Remove-VLan + +Function Add-VxLan +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [Parameter(Mandatory=$true)] + [ValidateRange(1, 16777214)] + [Int32]$VNI, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Addr, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-NetworkVxLAN" +} +Export-ModuleMember -function Add-VxLan + +Function Remove-VxLan +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [Int16]$InterfaceID, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-NetworkVxLAN" +} +Export-ModuleMember -function Remove-VxLan +# ================================================== +# endregion NETWORKING +# ================================================== + + +# ================================================== +# region ADC +# ================================================== +Function New-VirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$VirtualService, + + [Parameter(Mandatory=$true)] + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [ValidateRange(0, 6)] + [Int16]$AddVia, + + [string]$Template, + + [bool]$Cache = $false, + + [string]$CertFile, + + [ValidateSet("tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", "ldap", "none")] + [string]$CheckType = "tcp", + + [string]$CheckHost, + + [string]$CheckPattern, + + [string]$CheckUrl, + + [string]$CheckHeaders, + + [string]$LdapEndpoint, + + [string]$MatchLen, + + [ValidateRange(0, 1)] + [int]$CheckUse1_1 = -1, + + [Int32]$CheckPort, + + [bool]$EnhancedHealthChecks, + + [Int32]$RsMinimum, + + [ValidateRange(0, 2)] + [Int16]$ClientCert = 0, + + [bool]$Compress = $false, + + [string]$Cookie, + + [ValidateRange(0, 100)] + [Int16]$CachePercent = 0, + + [string]$DefaultGW, + + [bool]$Enable = $true, + + [string]$ErrorCode = 0, + + [string]$ErrorUrl, + + [ValidateRange(3, 65530)] + [Int32]$PortFollow, + + [bool]$ForceL7 = $true, + + [ValidateRange(0, 86400)] + [Int32]$Idletime, + + [String[]]$LocalBindAddresses, + + [ValidateSet("gen", "http", "tls", "ts")] + [string]$VSType, + + [string]$Nickname, + + [ValidateSet("ssl", "cookie", "active-cookie", "cookie-src", "active-cook-src", "cookie-hash", + "url", "query-hash", "host", "header", "super", "super-src", "src", "rdp", "rdp-src", + "rdp-sb", "udpsip", "none")] + [string]$Persist, + + [ValidateRange(0, 604800)] + [Int32]$PersistTimeout, + + [string]$QueryTag, + + [string]$CipherSet, + + [bool]$SSLReencrypt, + + [bool]$SSLReverse, + + [ValidateSet("", "http", "https")] + [string]$SSLRewrite, + + [string]$ReverseSNIHostname, + + [ValidateSet("rr", "wrr", "lc", "wlc", "fixed", "adaptive", "sh")] + [string]$Schedule, + + [ValidateRange(0, 5)] + [Int16]$ServerInit, + + [bool]$SSLAcceleration, + + [string]$StandByAddr, + + [string]$StandByPort, + + [Int32]$TransactionLimit, + + [bool]$Transparent, + + [bool]$SubnetOriginating, + + [bool]$UseforSnat, + + [ValidateSet("0", "1", "2", "4", "8")] + [string]$QoS, + + [int32]$CheckUseGet, + + [ValidateRange(0, 7)] + [Int16]$Verify, + + [string]$ExtraHdrKey, + + [string]$ExtraHdrValue, + + [string]$AllowedHosts, + + [string]$AllowedDirectories, + + [string]$AllowedGroups, + + [string]$GroupSIDs, + + [bool]$IncludeNestedGroups, + + [bool]$DisplayPubPriv, + + [bool]$DisablePasswordForm, + + [string]$Domain, + + [string]$AltDomains, + + [string]$Logoff, + + [ValidateRange(0, 7)] + [Int16]$ESPLogs, + + [string]$SMTPAllowedDomains, + + [bool]$ESPEnabled, + + [string]$UserPwdChangeUrl, + + [string]$UserPwdChangeMsg, + + [ValidateRange(0, 5)] + [Int16]$InputAuthMode, + + [ValidateRange(0, 2)] + [Int16]$OutputAuthMode, + + [ValidateRange(0, 1)] + [Int16]$StartTLSMode, + + [string]$ExtraPorts, + + [string]$AltAddress, + + [bool]$MultiConnect, + + [string]$SingleSignOnDir, + + [string]$OCSPVerify, + + [Int32]$FollowVSID, + + [bool]$TlsType = $false, + + [string]$CheckPostData, + + [string]$CheckCodes, + + [string]$PreProcPrecedence, + + [Int16]$PreProcPrecedencePos, + + [string]$RequestPrecedence, + + [Int16]$RequestPrecedencePos, + + [string]$ResponsePrecedence, + + [Int16]$ResponsePrecedencePos, + + [string]$RsRulePrecedence, + + [Int16]$RsRulePrecedencePos, + + [bool]$NeedHostName, + + [string]$CopyHdrFrom = "", + + [string]$CopyHdrTo = "", + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-AdcVirtualService" +} +Export-ModuleMember -function New-VirtualService + +Function Get-VirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [String]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-AdcVirtualService" +} +Export-ModuleMember -function Get-VirtualService + +Function Set-VirtualService +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [Int16]$AddVia, + + [bool]$Cache, + + [string]$CertFile, + + [ValidateSet("tcp", "icmp", "https", "http", "smtp", "nntp", "ftp", "telnet", "pop3", "imap", "rdp", "ldap", "none")] + [string]$CheckType, + + [string]$CheckHost, + + [string]$CheckPattern, + + [string]$CheckUrl, + + [string]$CheckHeaders, + + [string]$LdapEndpoint, + + [string]$MatchLen, + + [ValidateRange(0, 1)] + [int]$CheckUse1_1 = -1, + + [Int32]$CheckPort, + + [bool]$EnhancedHealthChecks, + + [Int32]$RsMinimum, + + [ValidateRange(0, 2)] + [Int16]$ClientCert, + + [bool]$Compress, + + [string]$Cookie, + + [ValidateRange(0, 100)] + [Int16]$CachePercent, + + [string]$DefaultGW, + + [bool]$Enable, + + [string]$ErrorCode, + + [string]$ErrorUrl, + + [ValidateRange(3, 65530)] + [Int32]$PortFollow, + + [bool]$ForceL7, + + [ValidateRange(0, 86400)] + [Int32]$Idletime, + + [String[]]$LocalBindAddresses, + + [ValidateSet("gen", "http", "tls", "ts")] + [string]$VSType, + + [string]$Nickname, + + [ValidateSet("none", "ssl", "cookie", "active-cookie", "cookie-src", "active-cook-src", "cookie-hash", "url", + "query-hash", "host", "header", "super", "super-src", "src", "rdp", "rdp-src", "rdp-sb", "udpsip")] + [string]$Persist, + + [ValidateRange(0, 604800)] + [Int32]$PersistTimeout, + + [string]$QueryTag, + + [string]$CipherSet, + + [bool]$SSLReencrypt, + + [bool]$SSLReverse, + + [ValidateSet("", "http", "https")] + [string]$SSLRewrite, + + [string]$ReverseSNIHostname, + + [ValidateSet("rr", "wrr", "lc", "wlc", "fixed", "adaptive", "sh")] + [string]$Schedule, + + [ValidateRange(0, 5)] + [Int16]$ServerInit, + + [bool]$SSLAcceleration, + + [string]$StandByAddr, + + [string]$StandByPort, + + [Int32]$TransactionLimit, + + [bool]$Transparent, + + [bool]$SubnetOriginating, + + [bool]$UseforSnat, + + [ValidateSet("0", "1", "2", "4", "8")] + [string]$QoS, + + [int32]$CheckUseGet, + + [ValidateRange(0, 7)] + [Int16]$Verify, + + [string]$ExtraHdrKey, + + [string]$ExtraHdrValue, + + [string]$AllowedHosts, + + [string]$AllowedDirectories, + + [string]$AllowedGroups, + + [string]$GroupSIDs, + + [bool]$IncludeNestedGroups, + + [bool]$DisplayPubPriv, + + [bool]$DisablePasswordForm, + + [string]$Domain, + + [string]$AltDomains, + + [string]$Logoff, + + [ValidateRange(0, 7)] + [Int16]$ESPLogs, + + [string]$SMTPAllowedDomains, + + [bool]$ESPEnabled, + + [string]$UserPwdChangeUrl, + + [string]$UserPwdChangeMsg, + + [ValidateRange(0, 5)] + [Int16]$InputAuthMode, + + [ValidateRange(0, 1)] + [Int16]$OutputAuthMode, + + [ValidateRange(0, 1)] + [Int16]$StartTLSMode, + + [string]$ExtraPorts, + + [string]$AltAddress, + + [bool]$MultiConnect, + + [string]$SingleSignOnDir, + + [string]$OCSPVerify, + + [Int32]$FollowVSID, + + [bool]$TlsType = $false, + + [string]$CheckPostData, + + [string]$CheckCodes, + + [string]$PreProcPrecedence, + + [Int16]$PreProcPrecedencePos, + + [string]$RequestPrecedence, + + [Int16]$RequestPrecedencePos, + + [string]$ResponsePrecedence, + + [Int16]$ResponsePrecedencePos, + + [string]$RsRulePrecedence, + + [Int16]$RsRulePrecedencePos, + + [bool]$NeedHostName, + + [string]$CopyHdrFrom, + + [string]$CopyHdrTo, + + [string]$ServerFbaPath, + + [string]$ServerFbaPost, + + [bool]$Intercept, + + [bool]$AllowHTTP2, + + [ValidateNotNullOrEmpty()] + [string]$InterceptOpts, + + [ValidateNotNullOrEmpty()] + [string]$InterceptRules, + + [ValidateRange(0, 100000)] + [int32]$AlertThreshold, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-AdcVirtualService" +} +Export-ModuleMember -function Set-VirtualService + +Function Remove-VirtualService +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [Parameter(ParameterSetName="IPAddress",ValueFromPipelineByPropertyName=$true)] + [Parameter(ParameterSetName="Credential")] + [Parameter(ParameterSetName="Certificate")] + [string]$VirtualService, + + [Parameter(ParameterSetName="IPAddress",ValueFromPipelineByPropertyName=$true)] + [Parameter(ParameterSetName="Credential")] + [Parameter(ParameterSetName="Certificate")] + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [Parameter(ParameterSetName="IPAddress",ValueFromPipelineByPropertyName=$true)] + [Parameter(ParameterSetName="Credential")] + [Parameter(ParameterSetName="Certificate")] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(ParameterSetName="Index",ValueFromPipelineByPropertyName=$true)] + [Parameter(ParameterSetName="Credential")] + [Parameter(ParameterSetName="Certificate")] + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Remove-AdcVirtualService" +} +Export-ModuleMember -function Remove-VirtualService + +Function New-RealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [Parameter(Mandatory=$true)] + [ValidateRange(3, 65530)] + [Int32]$RealServerPort, + + [ValidateRange(1, 65530)] + [Int32]$Weight, + + [ValidateSet("nat", "route")] + [string]$Forward = "nat", + + [bool]$Enable = $true, + + [bool]$Non_Local = $false, + + [ValidateRange(0, 100000)] + [Int64]$Limit = 0, + + [bool]$Critical, + + [ValidateRange(0, 65535)] + [Int32]$Follow, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-AdcRealServe" +} +Export-ModuleMember -function New-RealServer + +Function Remove-RealServer +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RealServerPort, + + [Int32]$RSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Remove-AdcRealServer" +} +Export-ModuleMember -function Remove-RealServer + +Function Set-RealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RealServerPort, + + [Int32]$RSIndex = -1, + + [ValidateRange(3, 65530)] + [Int32]$NewPort, + + [ValidateRange(1, 65530)] + [Int32]$Weight, + + [ValidateSet("nat", "route")] + [string]$Forward = "nat", + + [bool]$Enable = $true, + + [ValidateRange(0, 100000)] + [Int64]$Limit = 0, + + [bool]$Critical, + + [ValidateRange(0, 65535)] + [Int32]$Follow, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-AdcRealServer" +} +Export-ModuleMember -function Set-RealServer + +Function Get-RealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [String]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [Int32]$RSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-AdcRealServer" +} +Export-ModuleMember -function Get-RealServer + +Function Enable-RealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RSIpAddress, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [ValidateNotNullOrEmpty()] + [string]$RSFqdn, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Enable-AdcRealServer" +} +Export-ModuleMember -function Enable-RealServer + +Function Disable-RealServer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RSIpaddress, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [ValidateNotNullOrEmpty()] + [string]$RSFqdn, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Disable-AdcRealServer" +} +Export-ModuleMember -function Disable-RealServer + +Function Remove-AdcVirtualServerRule +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateSet("pre", "response", "request")] + [string]$RuleType, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Remove-AdcVirtualServiceRule" +} +Export-ModuleMember -function Remove-AdcVirtualServerRule + +Function Remove-VirtualServerRule +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateSet("pre", "response", "request")] + [string]$RuleType, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Remove-AdcVirtualServiceRule" +} +Export-ModuleMember -function Remove-VirtualServerRule + +Function New-RealServerRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [Int32]$RSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-AdcRealServerRule" +} +Export-ModuleMember -function New-RealServerRule + +Function Remove-RealServerRule +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$VirtualService, + + [ValidateRange(3, 65530)] + [Int32]$VSPort, + + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Int32]$VSIndex = -1, + + [ValidateNotNullOrEmpty()] + [string]$RealServer, + + [ValidateRange(3, 65530)] + [Int32]$RSPort, + + [Int32]$RSIndex = -1, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Remove-AdcRealServerRule" +} +Export-ModuleMember -function Remove-RealServerRule + +Function New-Rule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [string]$RuleName, + + [ValidateSet("regex", "prefix", "postfix")] + [string]$MatchType = "regex", + + [bool]$IncHost = $false, + + [bool]$NoCase = $false, + + [bool]$Negate = $false, + + [bool]$IncQuery = $false, + + [string]$Header, + + [string]$Pattern, + + [string]$Replacement, + + [ValidateRange(0, 5)] + [Int32]$Type, # TODO: to change Type to RuleType. Pay attention to the mapping + # to add values range + # EVEN BETTER: set the RuleType to string as in Get-AdcContentRule with the + # same values and maps the string type to the corrispondent integer value. + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-AdcContentRule" +} +Export-ModuleMember -function New-Rule + +Function Remove-Rule +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true, ValueFromPipeline=$true)] + [string]$RuleName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Remove-AdcContentRule" +} +Export-ModuleMember -function Remove-Rule + +Function Set-Rule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory=$true)] + [string]$RuleName, + + [ValidateSet("regex", "prefix", "postfix")] + [string]$MatchType = "regex", + + [bool]$IncHost, + + [bool]$NoCase, + + [bool]$Negate, + + [bool]$IncQuery, + + [string]$Header, + + [string]$Pattern, + + [string]$Replacement, + + [ValidateRange(0, 5)] + [Int32]$Type, # TODO: to change Type to RuleType. Pay attention to the mapping + # to add values range + # EVEN BETTER: set the RuleType to string as in Get-AdcContentRule with the + # same values and maps the string type to the corrispondent integer value. + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-AdcContentRule" +} +Export-ModuleMember -function Set-Rule + +Function Get-Rule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$RuleName, + + [ValidateSet("MatchContentRule", "AddHeaderRule", "DeleteHeaderRule", "ReplaceHeaderRule", "ModifyUrlRule", "ReplaceBodyRule")] + [string]$RuleType, + + [switch]$All, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-AdcContentRule" +} +Export-ModuleMember -function Get-Rule + +Function Get-L7Configuration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-AdcL7Configuration" +} +Export-ModuleMember -function Get-L7Configuration + +Function Set-L7Configuration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$ScalingOver64KConnections, + + [ValidateSet("No", "Yes", "Yes - Accept Changes")] + [string]$AlwaysCheckPersist, + + [bool]$AddPortToActiveCookie, + + [bool]$RFCConform, + + [bool]$CloseOnError, + + [bool]$AddViaHeaderInCacheResponses, + + [bool]$RSAreLocal, + + [bool]$DropOnRSFail, + + [bool]$DropAtDrainEnd, + + [ValidateRange(30, 300)] + [Int16]$L7AuthTimeoutSecs, + + [ValidateRange(60, 300)] + [Int16]$L7ClientTokenTimeoutSecs, + + [int]$L7ConnectionDrainTimeoutSecs, + + [ValidateSet("X-ClientSide", "X-Forwarded-For", "None")] + [string]$AdditionalL7Header, + + [ValidateSet("RFC-2616 Compliant", "Require 100-Continue", "RFC-7231 Compliant")] + [string]$OneHundredContinueHandling, + + [bool]$AllowEmptyPosts, + + [bool]$AllowEmptyHttpHeaders, + + [bool]$ForceCompleteRSMatch, + + [ValidateRange(0, 600)] + [Int16]$SlowStart, + + [bool]$ShareSubVSPersistance, + + #[bool]$Transparent, # FIXME: still available? + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-AdcL7Configuration" +} +Export-ModuleMember -function Set-L7Configuration + +Function Get-LogSplitInterval +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + param( + [validatenotnullorempty()] + [string]$LoadBalancer = $loadbalanceraddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-AdcL7LogInsightSplitConfiguration" +} +Export-ModuleMember -function Get-LogSplitInterval + +Function Set-LogSplitInterval +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$logsplitinterval, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-AdcL7LogInsightSplitConfiguration" +} +Export-ModuleMember -function Set-LogSplitInterval + +Function Get-ServiceHealth +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-AdcServiceHealth" +} +Export-ModuleMember -function Get-ServiceHealth + +Function Set-ServiceHealth +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateRange(9, 120)] + [Int16]$CheckInterval, + + [ValidateRange(4, 60)] + [Int16]$ConnectTimeout, + + [ValidateRange(2, 15)] + [Int16]$RetryCount, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-AdcServiceHealth" +} +Export-ModuleMember -function Set-ServiceHealth + +Function Add-NoCompressExtension +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,ValueFromPipeline=$true)] + [ValidatePattern({^\.})] + [String[]]$Extension, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-AdcHttpCompressionException" +} +Export-ModuleMember -function Add-NoCompressExtension + +Function Remove-NoCompressExtension +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,ValueFromPipeline=$true)] + [ValidatePattern({^\.})] + [String[]]$Extension, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-AdcServiceHealth" +} +Export-ModuleMember -function Remove-NoCompressExtension + +Function Add-NoCacheExtension +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true, ValueFromPipeline=$true)] + [ValidatePattern({^\.})] + [String[]]$Extension, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-AdcHttpCacheException" +} +Export-ModuleMember -function Add-NoCacheExtension + +Function Remove-NoCacheExtension +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true, ValueFromPipeline=$true)] + [ValidatePattern({^\.})] + [String[]]$Extension, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-AdcHttpCacheException" +} +Export-ModuleMember -function Remove-NoCacheExtension + +Function Get-AdaptiveCheck +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-AdcAdaptiveHealthCheck" +} +Export-ModuleMember -function Get-AdaptiveCheck + +Function Set-AdaptiveCheck +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$AdaptiveURL, + [Int32]$AdaptivePort, + [ValidateRange(10, 60)] + [Int32]$AdaptiveInterval, + [Int16]$MinPercent, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-AdcAdaptiveHealthCheck" +} +Export-ModuleMember -function Set-AdaptiveCheck + +Function VSAddWafRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VS, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(Mandatory=$true)] + [string]$Rule, + + [ValidateNotNullOrEmpty()] + [string]$Enablerules, + + [ValidateNotNullOrEmpty()] + [string]$Disablerules, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-AdcVsWafRule" +} +Export-ModuleMember -function VSAddWafRule + +Function VSRemoveWafRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VS, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Rule, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-AdcVsWafRule" +} +Export-ModuleMember -function VSRemoveWafRule + +Function VSListWafRuleIds +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VS, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$VSPort, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [ValidateSet("tcp", "udp")] + [string]$VSProtocol, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Rule, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-AdcVsWafRule" +} +Export-ModuleMember -function VSListWafRuleIds +# ================================================== +# endregion ADC +# ================================================== + + +# ================================================== +# region SECURITY +# ================================================== +Function Set-AdminAccess +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateRange(0, 99)] + [Int32]$WuiNetworkInterfaceId = -1, + + [Parameter(Mandatory=$true)] + [ValidateRange(3, 65530)] + [int32]$WuiPort = -1, + + [string]$WuiDefaultGateway, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-SecAdminAccess" +} +Export-ModuleMember -function Set-AdminAccess + +Function Get-WUIAuth +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-SecWuiAuthentication" +} +Export-ModuleMember -function Get-WUIAuth + +Function Set-WUIAuth +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$RADIUSServer, + + [ValidateRange(3, 65530)] + [Int64]$RADIUSPort, + + [string]$RADIUSSecret, + + [string]$RADIUSBackupServer, + + [ValidateRange(3, 65530)] + [Int64]$RADIUSBackupPort, + + [string]$RADIUSBackupSecret, + + [int]$RADIUSRevalidateInterval, + + [string]$WuiLdapEp, + + [bool]$SessionLocalAuth, + + [ValidateSet(7, 22, 23, 262, 263, 278, 279, 772, 773, 774, 775, 788, 789, 790, 791)] + [Int16]$SessionAuthMode, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-SecWuiAuthentication" +} +Export-ModuleMember -function Set-WUIAuth + +Function Get-WUISetting +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-SecAdminWuiConfiguration" +} +Export-ModuleMember -function Get-WUISetting + +Function Set-WUISetting +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateRange(0, 14)] + [int]$WUITLSProtocols, + + [ValidateSet("Default", "Default_NoRc4", "BestPractices", "Intermediate_compatibility", "Backward_compatibility", "WUI", "FIPS", "Legacy")] + [string]$WUICipherset, + + [bool]$sessioncontrol, + + [bool]$sessionbasicauth, + + [ValidateRange(1, 999)] + [Int16]$sessionmaxfailattempts, + + [ValidateRange(60, 86400)] + [Int32]$sessionidletime, + + [ValidateRange(0, 9)] + [Int16]$sessionconcurrent, + + [string]$wuipreauth, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-SecAdminWuiConfiguration" +} +Export-ModuleMember -function Set-WUISetting + +Function UserSetSystemPassword +{ + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true)] + [String]$CurrentPassword, + + [Parameter(Mandatory=$true)] + [String]$NewPassword, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred + ) + Write-Output "$warning Set-SecSystemUserPassword" +} +Export-ModuleMember -function UserSetSystemPassword + +Function UserSetPermissions +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$User, + + [Parameter(Mandatory=$true)] + [String]$Permissions, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-SecUserPermission" +} +Export-ModuleMember -function UserSetPermissions + +Function UserChangeLocalPassword +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$User, + + [Parameter(Mandatory=$true)] + [String]$Password, + + [Parameter(Mandatory=$true)] + [ValidateRange(0, 1)] + [int]$Radius, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-SecUserPassword" +} +Export-ModuleMember -function UserChangeLocalPassword +# ================================================== +# endregion SECURITY +# ================================================== + + +# ================================================== +# region SYSTEM +# ================================================== +Function Initialize-LoadBalancer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Address, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = 443, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $null, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $null + ) + Write-Output "$warning Initialize-LmConnectionParameters" +} +Export-ModuleMember -function Initialize-LoadBalancer + +Function Test-ServerConnection +{ + [CmdletBinding()] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$ComputerName, + + [ValidateRange(3, 65530)] + [Int32]$Port + ) + Write-Output "$warning Test-LmServerConnection" +} +Export-ModuleMember -function Test-ServerConnection +# ================================================== +# endregion SYSTEM +# ================================================== + + +# ================================================== +# region GET-SET +# ================================================== +Function Get-AllParameters +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmAllParameters" +} +Export-ModuleMember -function Get-AllParameters, Get-AllParameters + +Function Get-Parameter +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Param, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmParameter" +} +Export-ModuleMember -function Get-Parameter + +Function Set-Parameter +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Param, + + [Parameter(Mandatory=$true)] + [AllowEmptyString()] + [String]$Value = "", + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + + ) + Write-Output "$warning Set-LmParameter" +} +Export-ModuleMember -function Set-Parameter + +# ================================================== +# endregion GET-SET +# ================================================== + + +# ================================================== +# region TLS +# ================================================== +Function New-Certificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Name, + + [string]$Password, + + [switch]$Replace, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-TlsCertificate" +} +Export-ModuleMember -function New-Certificate + +Function ListCert +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$CertName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-TlsCertificate" +} +Export-ModuleMember -function ListCert + +Function Remove-Certificate +{ + [cmdletbinding(SupportsShouldProcess=$true,ConfirmImpact="High",DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Remove-TlsCertificate" +} +Export-ModuleMember -function Remove-Certificate + +Function Backup-Certificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateLength(6, 64)] + [string]$Password, + + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Backup-TlsCertificate" +} +Export-ModuleMember -function Backup-Certificate + +Function Restore-Certificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateLength(6, 64)] + [string]$Password, + + [ValidateScript({Test-Path $_})] + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateSet("Full", "VS", "Third")] + [string]$Type, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Restore-TlsCertificate" +} +Export-ModuleMember -function Restore-Certificate + +Function New-IntermediateCertificate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Name, + + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-TlsIntermediateCertificate" +} +Export-ModuleMember -function New-IntermediateCertificate + +Function Remove-IntermediateCertificate +{ + [cmdletbinding(SupportsShouldProcess=$true,ConfirmImpact="High",DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Remove-TlsIntermediateCertificate" +} +Export-ModuleMember -function Remove-IntermediateCertificate + +Function GetCipherset +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-TlsCipherSet" +} +Export-ModuleMember -function GetCipherset + +Function ModifyCipherset +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Value, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-TlsCipherSet" +} +Export-ModuleMember -function ModifyCipherset + +Function DelCipherset +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-TlsCipherSet" +} +Export-ModuleMember -function DelCipherset + +Function HSMShow +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-TlsHSM" +} +Export-ModuleMember -function HSMShow + +Function HSMConfigure +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [String]$Sethsm, + [String]$Safeaddr, + [String]$Clpass, + [bool]$Enable, + [String]$Cavhsmaddr, + [String]$Cavhsmpasswd, + [String]$Cavhsmuser, + [bool]$Cavhsmenable, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-TlsHSM" +} +Export-ModuleMember -function HSMConfigure + +Function HSMGenerateClientCert +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Clcertname, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning New-TlsHSMClientCert" +} +Export-ModuleMember -function HSMGenerateClientCert + +Function HSMUploadCACert +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-TlsHSMCACert" +} +Export-ModuleMember -function HSMUploadCACert +# ================================================== +# endregion TLS +# ================================================== + + +# ================================================== +# region WAF +# ================================================== +Function ListWafRules +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-WafRules" +} +Export-ModuleMember -function ListWafRules + +Function AddWafCustomData +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-WafCustomRuleData" +} +Export-ModuleMember -function AddWafCustomData + +Function DownloadWafCustomData +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RuleDataName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Export-WafCustomRuleData" +} +Export-ModuleMember -function DownloadWafCustomData + +Function DelWafCustomData +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Filename, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Uninstall-WafCustomRuleData" +} +Export-ModuleMember -function DelWafCustomData + +Function AddWafCustomRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-WafCustomRuleSet" +} +Export-ModuleMember -function AddWafCustomRule + +Function DelWafCustomRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Filename, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Uninstall-WafCustomRuleSet" +} +Export-ModuleMember -function DelWafCustomRule + +Function DownloadWafCustomRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RuleSetName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Export-WafCustomRuleSet" +} +Export-ModuleMember -function DownloadWafCustomRule + +Function EnableWafRemoteLogging +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$RemoteURI, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Username, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Passwd, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Enable-WafRemoteLogging" +} +Export-ModuleMember -function EnableWafRemoteLogging + +Function DisableWafRemoteLogging +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Disable-WafRemoteLogging" +} +Export-ModuleMember -function DisableWafRemoteLogging + +Function ListWafAuditFiles +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-WafAuditFiles" +} +Export-ModuleMember -function ListWafAuditFiles + +Function DownloadWafAuditLog +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$AuditFile, + + [string]$Filter, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Export-WafAuditLog" +} +Export-ModuleMember -function DownloadWafAuditLog + +Function GetWafChangeLog +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Export-WafChangeLog" +} +Export-ModuleMember -function GetWafChangeLog + +Function ManInstallWafRules +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Install-WafRulesDatabase" +} +Export-ModuleMember -function ManInstallWafRules + +Function DownloadWafRules +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Update-WafRulesDatabase" +} +Export-ModuleMember -function DownloadWafRules + +Function GetWafSettings +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-WafRulesAutoUpdateConfiguration" +} +Export-ModuleMember -function GetWafSettings +# ================================================== +# endregion WAF +# ================================================== + + +# ================================================== +# region GEO +# ================================================== +Function AddFQDN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-GeoFQDN" +} +Export-ModuleMember -function AddFQDN + +Function Add-GeoFQDN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-GeoFQDN" +} +Export-ModuleMember -function Add-GeoFQDN + +Function DeleteFQDN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoFQDN" +} +Export-ModuleMember -function DeleteFQDN + +Function ListFQDNs +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-GeoFQDN" +} +Export-ModuleMember -function ListFQDNs + +Function ModifyFQDN +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [ValidateSet("RoundRobin", "WeightedRoundRobin", "FixedWeighting", "RealServerLoad", "Proximity", "LocationBased", "AllAvailable")] + [String]$SelectionCriteria, + + [ValidateRange(0, 1440)] + [Int32]$SiteFailureDelay = -1, + + [ValidateSet("auto", "manual")] + [String]$SiteRecoveryMode, + + [ValidateSet("PublicSitesOnly", "PreferPublicSites", "PreferPrivateSites", "AllSites")] + [string]$PublicRequest, + + [ValidateSet("PrivateSitesOnly", "PreferPrivateSites", "PreferPublicSites", "AllSites")] + [string]$PrivateRequest, + + [String]$Failover, + + [bool]$LocalSettings, + + [ValidateRange(1, 86400)] + [Int32]$localttl, + + [ValidateRange(0, 86400)] + [Int32]$localsticky, + + [bool]$UnanimousChecks, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoFQDN" +} +Export-ModuleMember -function ModifyFQDN + +Function AddCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-GeoCluster" +} +Export-ModuleMember -function AddCluster + +Function DeleteCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoCluster" +} +Export-ModuleMember -function DeleteCluster + +Function Get-GeoCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-GeoCluster" +} +Export-ModuleMember -function ListClusters + +Function ShowCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-GeoCluster" +} +Export-ModuleMember -function ShowCluster + +Function ModifyCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [String]$ClusterName, + + [ValidateSet("default", "remoteLM", "localLM")] + [String]$Type, + + [ValidateSet("none", "tcp", "icmp")] + [String]$Checker, + + [Int32]$CheckerPort, + + [String]$Enable, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoCluster" +} +Export-ModuleMember -function ModifyCluster + +Function ClusterChangeLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$ClusterIp, + + [Parameter(Mandatory=$true)] + [Int32]$LatSecs, + + [Parameter(Mandatory=$true)] + [Int32]$LongSecs, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoClusterCoordinates" +} +Export-ModuleMember -function ClusterChangeLocation + +Function AddMap +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [string]$Cluster, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-GeoFQDNSiteAddress" +} +Export-ModuleMember -function AddMap + +Function DeleteMap +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoFQDNSiteAddress" +} +Export-ModuleMember -function DeleteMap + +Function ModifyMap +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [ValidateSet("None", "Icmp Ping", "Tcp Connect", "Cluster Checks")] + [String]$Checker, + + [Int32]$Weight, + + [String]$Enable, + + [String]$Cluster, + + [String]$Mapaddress, + + [String]$Mapport, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoFQDNSiteAddress" +} +Export-ModuleMember -function ModifyMap + +Function ChangeCheckerAddr +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$CheckerIP, + + [Parameter(Mandatory=$true,Position=3)] + [ValidateNotNullOrEmpty()] + [String]$CheckerPort, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoFQDNSiteCheckerAddress" +} +Export-ModuleMember -function ChangeCheckerAddr + +Function AddCountry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, # was IP + + [ValidateNotNullOrEmpty()] + [String]$CountryCode, + + [ValidateNotNullOrEmpty()] + [String]$IsContinent, + + [ValidateNotNullOrEmpty()] + [String]$CustomLocation, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoFQDNSiteCountry" +} +Export-ModuleMember -function AddCountry + +Function RemoveCountry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [ValidateNotNullOrEmpty()] + [String]$CountryCode, + + [ValidateNotNullOrEmpty()] + [String]$IsContinent, + + [ValidateNotNullOrEmpty()] + [String]$CustomLocation, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoFQDNSiteCountry" +} +Export-ModuleMember -function RemoveCountry + +Function ChangeMapLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$FQDN, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SiteAddress, + + [Parameter(Mandatory=$true)] + [Int32]$Lat, + + [Parameter(Mandatory=$true)] + [Int32]$Long, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoFQDNSiteCoordinates" +} +Export-ModuleMember -function ChangeMapLocation + +Function AddCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Location, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-GeoCustomLocation" +} +Export-ModuleMember -function AddCustomLocation + +Function DeleteCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$Location, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoCustomLocation" +} +Export-ModuleMember -function DeleteCustomLocation + +Function ListCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-GeoCustomLocation" +} +Export-ModuleMember -function ListCustomLocation + +Function EditCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$clOldName, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string]$clNewName, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoCustomLocation" +} +Export-ModuleMember -function EditCustomLocation + +Function AddIP +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-GeoIpRange" +} +Export-ModuleMember -function AddIP + +Function DeleteIP +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoIpRange" +} +Export-ModuleMember -function DeleteIP + +Function ShowIP +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-GeoIpRange" +} +Export-ModuleMember -function ShowIP + +Function ListIPs +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-GeoIpRange" +} +Export-ModuleMember -function ListIPs + +Function ModifyIPLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [Parameter(Mandatory=$true)] + [Int32]$Lat, + + [Parameter(Mandatory=$true)] + [Int32]$Long, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoIPRangeCoordinates" +} +Export-ModuleMember -function ModifyIPLocation + +Function DeleteIPLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoIPRangeCoordinates" +} +Export-ModuleMember -function DeleteIPLocation + +Function AddIPCountry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [Parameter(Mandatory=$true)] + [String]$CountryCode, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoIPRangeCountry" +} +Export-ModuleMember -function AddIPCountry + +Function RemoveIPCountryCustom +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,Position=0)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoIPRangeCountry" +} +Export-ModuleMember -function RemoveIPCountryCustom + +Function Remove-GeoIPRangeCustomLocation +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,Position=0)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoIPRangeCountry" +} +Export-ModuleMember -function Remove-GeoIPRangeCustomLocation + +Function RemoveIPCountry +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true,Position=0)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-GeoIPRangeCountry" +} +Export-ModuleMember -function RemoveIPCountry + +Function AddIPCountryCustom +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IP, + + [Parameter(Mandatory=$true)] + [String]$CustomLoc, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoIPRangeCustomLocation" +} +Export-ModuleMember -function AddIPCountryCustom + +Function ListMiscParameters +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-GeoMiscParameter" +} +Export-ModuleMember -function ListMiscParameters + +Function ModifyMiscParameters +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [String]$SourceOfAuthority, + [String]$NameSrv, + [String]$SOAEmail, + [String]$TTL, + [String]$Persist, + [String]$CheckInterval, + [String]$ConnTimeout, + [String]$RetryAttempts, + [String]$Zone, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-GeoMiscParameter" +} +Export-ModuleMember -function ModifyMiscParameters + +Function LocationDataUpdate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Update-GeoDatabase" +} +Export-ModuleMember -function LocationDataUpdate + +Function EnableGEO +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Update-GeoDatabase" +} +Export-ModuleMember -function EnableGEO + +Function DisableGEO +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Disable-LmGeoPack" +} +Export-ModuleMember -function DisableGEO + +Function IsGEOEnabled +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Disable-LmGeoPack" +} +Export-ModuleMember -function IsGEOEnabled +# ================================================== +# endregion GEO +# ================================================== + + +# ================================================== +# region BACKUP +# ================================================== +Function Backup-LoadBalancer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + [switch]$Force, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Backup-LmConfiguration" +} +Export-ModuleMember -function Backup-LoadBalancer + +Function Restore-LoadBalancer +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [Parameter(Mandatory=$true)] + [ValidateSet("Base", "Base + VS", "Base + Geo", "VS", "VS + Geo", "Geo", "SSO/LDAP", "All")] + [string]$Type, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Restore-LmConfiguration" +} +Export-ModuleMember -function Restore-LoadBalancer + +Function Get-BackupOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmBackupConfiguration" +} +Export-ModuleMember -function Get-BackupOption + +Function Set-BackupOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateSet("yes", "no")] + [string]$BackupEnable, + + [ValidateRange(0, 23)] + [Int16]$BackupHour, + + [ValidateRange(0, 59)] + [Int16]$BackupMinute, + + [ValidateRange(0, 7)] + [Int16]$BackupDay, + + [ValidateSet("Ftp", "SCP")] + [string]$BackupMethod, + + [string]$BackupUser, + + [string]$BackupPassword, + + [string]$BackupHost, + + [string]$BackupPath, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmBackupConfiguration" +} +Export-ModuleMember -function Set-BackupOption +# ================================================== +# endregion BACKUP +# ================================================== + + +# ================================================== +# region VPN +# ================================================== +Function CreateVpnConnection +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-LmVpnConnection" +} +Export-ModuleMember -function CreateVpnConnection + +Function DeleteVpnConnection +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-LmVpnConnection" +} +Export-ModuleMember -function DeleteVpnConnection + +Function ListVpns +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmVpnConnection" +} +Export-ModuleMember -function ListVpns + +Function SetVpnAddrs +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalIp, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalSubnets, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteIp, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteSubnets, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmVpnAddrs" +} +Export-ModuleMember -function SetVpnAddrs + +Function SetVpnLocalIp +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalIp, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmVpnLocalIp" +} +Export-ModuleMember -function SetVpnLocalIp + +Function SetVpnLocalSubnets +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalSubnets, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmVpnLocalIp" +} +Export-ModuleMember -function SetVpnLocalSubnets + +Function SetVpnRemoteIp +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteIp, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmVpnRemoteIp" +} +Export-ModuleMember -function SetVpnRemoteIp + +Function SetVpnRemoteSubnets +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteSubnets, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmVpnRemoteSubnet" +} +Export-ModuleMember -function SetVpnRemoteSubnets + +Function SetVpnSecret +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$LocalId, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$RemoteId, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Key, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmVpnSecret" +} +Export-ModuleMember -function SetVpnSecret + +Function StartVpnConnection +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Start-LmVpnConnection" +} +Export-ModuleMember -function StartVpnConnection + +Function StopVpnConnection +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Stop-LmVpnConnection" +} +Export-ModuleMember -function StopVpnConnection + +Function StartIkeDaemon +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Start-LmVpnIkeDaemon" +} +Export-ModuleMember -function StartIkeDaemon + +Function StopIkeDaemon +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Stop-LmVpnIkeDaemon" +} +Export-ModuleMember -function StopIkeDaemon + +Function StatusIkeDaemon +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmVpnIkeDaemonStatus" +} +Export-ModuleMember -function StatusIkeDaemon + +Function SetVpnPfsEnable +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmVpnPfsEnable" +} +Export-ModuleMember -function SetVpnPfsEnable + +Function SetVpnPfsDisable +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmVpnPfsDisable" +} +Export-ModuleMember -function SetVpnPfsDisable +# ================================================== +# endregion VPN +# ================================================== + + +# ================================================== +# region ADDON +# ================================================== +Function UploadAddon +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Install-LmAddon" +} +Export-ModuleMember -function UploadAddon + +Function DeleteAddon +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Name, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-LmAddon" +} +Export-ModuleMember -function DeleteAddon + +Function ListAddons +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmAddOn" +} +Export-ModuleMember -function ListAddons +# ================================================== +# endregion ADDON +# ================================================== + + +# ================================================== +# region PATCH +# ================================================== +Function Install-Patch +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateScript({Test-Path $_})] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Install-LmPatch" +} +Export-ModuleMember -function Install-Patch + +Function Restore-Patch +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Uninstall-LmPatch" +} +Export-ModuleMember -function Restore-Patch + +Function Restart-LoadBalancer +{ + [cmdletbinding(SupportsShouldProcess=$true, ConfirmImpact="High", DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Shutdown, + [switch]$Force, + [int]$SleepTime, + [int]$Cycles + ) + Write-Output "$warning Restart-Lm" +} +Export-ModuleMember -function Restart-LoadBalancer +# ================================================== +# endregion PATCH +# ================================================== + + +# ================================================== +# region DATE-TIME +# ================================================== +Function Get-DateTimeOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmDateTimeConfiguration" +} +Export-ModuleMember -function Get-DateTimeOption + +Function Set-DateTimeOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [string]$NTPHost, + + [string]$TimeZone, + + [ValidateRange(1, 100)] + [int]$NTPKeyId, + + [string]$NTPKeySecret, + + [ValidateSet("SHA-1", "MD5")] + [string]$NTPKeyType, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmDateTimeConfiguration" +} +Export-ModuleMember -function Set-DateTimeOption +# ================================================== +# endregion DATE-TIME +# ================================================== + + +# ================================================== +# region SDN +# ================================================== +Function AddSDNController +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$IPV4, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$Port, + + [Int32]$Clid, + + [Boolean]$Https, + + [String]$User, + + [String]$Password, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-SdnController" +} +Export-ModuleMember -function AddSDNController + +Function DeleteSDNController +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Int32]$Clid, + + [Int32]$Cid, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-SdnController" +} +Export-ModuleMember -function DeleteSDNController + +Function ModifySDNController +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$Cid, + + [Int32]$Clid, + + [String]$IPV4, + + [Int32]$Port, + + [Boolean]$Https, + + [String]$User, + + [String]$Password, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-SdnController" +} +Export-ModuleMember -function ModifySDNController + +Function GetSDNController +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-SdnController" +} +Export-ModuleMember -function GetSDNController +# ================================================== +# endregion SDN +# ================================================== + + +# ================================================== +# region AFE +# ================================================== +Function Get-AFEConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmAFEConfiguration" +} +Export-ModuleMember -function Get-AFEConfiguration + +Function Set-AFEConfiguration +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateRange(1, 409)] + [Int]$CacheSize, + + [bool]$HostCache, + + [ValidateSet("Low - Only logging, no rejection", "Default - Only Critical problems are rejected", "High - Serious and Critical problems are rejected", "Paranoid - All problems detected are rejected")] + [string]$DetectionLevel, + + [ValidateRange(0, 100000)] + [Int64]$LimitInput, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmAFEConfiguration" +} +Export-ModuleMember -function Set-AFEConfiguration + +Function Update-IDSRule +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateScript({Test-Path -Path $_})] + [ValidateNotNullOrEmpty()] + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Update-AFEIDSRules" +} +Export-ModuleMember -function Update-IDSRule +# ================================================== +# endregion AFE +# ================================================== + + +# ================================================== +# region CONNLIMIT +# ================================================== +Function AfeClientLimitList +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmIPConnectionLimit" +} +Export-ModuleMember -function AfeClientLimitList + +Function AfeClientLimitAdd +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$L7addr, + + [Parameter(Mandatory=$true)] + [int32]$L7limit, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-LmIPConnectionLimit" +} +Export-ModuleMember -function AfeClientLimitAdd + +Function AfeClientLimitDelete +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [String]$L7addr, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-LmIPConnectionLimit" +} +Export-ModuleMember -function AfeClientLimitDelete +# ================================================== +# endregion CONNLIMIT +# ================================================== + + +# ================================================== +# region CLUSTER +# ================================================== +Function Get-HAOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmHAConfiguration" +} +Export-ModuleMember -function Get-HAOption + +Function Set-HAOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateSet(3, 6, 9, 12, 15)] + [Int16]$hatimeout, + + [ValidateRange(0, 180)] + [Int16]$hawait, + + [ValidateRange(1, 255)] + [Int16]$havhid, + + [ValidateSet("No Preferred Host", "Prefer First HA", "Prefer Second HA")] + [string]$haprefered, + + [Int16]$haif, + + [bool]$hal4update, + + [bool]$hal7update, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmHAConfiguration" +} +Export-ModuleMember -function Set-HAOption + +Function Set-AzureHAMode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("master", "slave", "single")] + [string]$HAMode, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmAzureHAMode" +} +Export-ModuleMember -function Set-AzureHAMode + +Function Get-AzureHAOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmAzureHAConfiguration" +} +Export-ModuleMember -function Get-AzureHAOption + +Function Set-AzureHAOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$Partner, + + [ValidateNotNullOrEmpty()] + [string]$Hcp, + + [ValidateNotNullOrEmpty()] + [ValidateRange(0, 1)] + [int]$haprefered, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmAzureHAConfiguration" +} +Export-ModuleMember -function Set-AzureHAOption + +Function Set-AwsHAMode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateSet("master", "slave", "single")] + [string]$HAMode, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmAwsHAMode" +} +Export-ModuleMember -function Set-AwsHAMode + +Function Get-AwsHAOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmAwsHAConfiguration" +} +Export-ModuleMember -function Get-AwsHAOption + +Function Set-AwsHAOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$Partner, + + [ValidateNotNullOrEmpty()] + [string]$HealthCheckPort, + + [ValidateNotNullOrEmpty()] + [ValidateRange(0, 1)] + [int]$haprefered, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmAwsHAConfiguration" +} +Export-ModuleMember -function Set-AwsHAOption +# ================================================== +# endregion CLUSTER +# ================================================== + + +# ================================================== +# region DIAGNOSTIC +# ================================================== +Function Get-DebugOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-LmDebugConfiguration" +} +Export-ModuleMember -function Get-DebugOption + +Function Set-DebugOption +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [bool]$transparent, + + [bool]$irqbalance, + + [bool]$linearesplogs, + + [string]$netconsole, + + [Int16]$netconsoleinterface, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Set-LmDebugConfiguration" +} +Export-ModuleMember -function Set-DebugOption + +Function DoTcpDump +{ + [cmdletbinding(SupportsShouldProcess=$true, DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [ValidateRange(1, 200000)] + [int]$MaxPackets, + + [ValidateNotNullOrEmpty()] + [ValidateRange(1, 600)] + [int]$MaxTime, + + [ValidateNotNullOrEmpty()] + [string]$Interface, + + [ValidateNotNullOrEmpty()] + [string]$Port, + + [ValidateNotNullOrEmpty()] + [string]$Address, + + [ValidateNotNullOrEmpty()] + [string]$TcpOptions, + + [string]$Path, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN, + + [switch]$Force + ) + Write-Output "$warning Trace-TcpTraffic" +} +Export-ModuleMember -function DoTcpDump +# ================================================== +# endregion DIAGNOSTIC +# ================================================== + + +# ================================================== +# region N+M +# ================================================== +Function NMClusterStatus +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Get-ClusterStatus" +} +Export-ModuleMember -function NMClusterStatus + +Function NMClusterCreate +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$SharedAddress, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-Cluster" +} +Export-ModuleMember -function NMClusterCreate + +Function NMAddNode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [String]$Address, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning New-ClusterNode" +} +Export-ModuleMember -function NMAddNode + +Function NMJoinCluster +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Join-Cluster" +} +Export-ModuleMember -function NMJoinCluster + +Function NMEnableNode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$NodeId, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Enable-ClusterNode" +} +Export-ModuleMember -function NMEnableNode + +Function NMDisableNode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$NodeId, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Disable-ClusterNode" +} +Export-ModuleMember -function NMDisableNode + +Function NMDeleteNode +{ + [cmdletbinding(DefaultParameterSetName='Credential')] + Param( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [Int32]$NodeId, + + [ValidateNotNullOrEmpty()] + [string]$LoadBalancer = $LoadBalancerAddress, + + [ValidateNotNullOrEmpty()] + [ValidateRange(3, 65530)] + [int]$LBPort = $LBAccessPort, + + [Parameter(ParameterSetName="Credential")] + [ValidateNotNullOrEmpty()] + [System.Management.Automation.Credential()]$Credential = $script:cred, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$CertificateStoreLocation = $script:CertificateStoreLocation, + + [Parameter(ParameterSetName="Certificate")] + [ValidateNotNullOrEmpty()] + [String]$SubjectCN = $script:SubjectCN + ) + Write-Output "$warning Remove-ClusterNode" +} +Export-ModuleMember -function NMDeleteNode +# ================================================== +# endregion N+M +# ================================================== + +# SIG # Begin signature block +# MIIcDQYJKoZIhvcNAQcCoIIb/jCCG/oCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDproCmbHORq7dN +# rCvi71htoutFNbUcZ1oxnmMNGCABJaCCCuMwggVWMIIEPqADAgECAhAZGjLLdZyX +# uM+sEY3VEn9JMA0GCSqGSIb3DQEBCwUAMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UE +# ChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +# cmsxOjA4BgNVBAsTMShjKSAyMDA2IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +# cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGlj +# IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHNTAeFw0xNDAzMDQw +# MDAwMDBaFw0yNDAzMDMyMzU5NTlaMIGRMQswCQYDVQQGEwJVUzEdMBsGA1UEChMU +# U3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5l +# dHdvcmsxQjBABgNVBAMTOVN5bWFudGVjIENsYXNzIDMgRXh0ZW5kZWQgVmFsaWRh +# dGlvbiBDb2RlIFNpZ25pbmcgQ0EgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEP +# ADCCAQoCggEBANAYAu7too0IWGMPJtfdInuI9uTH7DsmGHjTx6QgU42DfKU/fqXI +# K0ffDfWm2cMdJZNgz3zc6gMsvnh/XEhtpwLZSfih6+uaYXyfwCbW3BXYuBB8ILpe +# 9Cj2qOqnXHzGnJCQNDy2Iqz+ugw6HtZehLZb8KOBcHiKjUZSe/zbSfMpExF0T40W +# s8LjoC3HAwSdzMNy4Q4M+wKO8SYXe26u+Lczi6ZhS0Xf8iVEx/ewmCM23Ch5Cuib +# coio2Oiue38KZEWl8FeSmncGRR7rn+hm83p9koFfAC0euPZWE1piDbdHoY9y74Ne +# guCUmOGspa2GN+Cn07qxPnrrRajxwUR94gMCAwEAAaOCAW0wggFpMBIGA1UdEwEB +# /wQIMAYBAf8CAQAwLwYDVR0fBCgwJjAkoCKgIIYeaHR0cDovL3Muc3ltY2IuY29t +# L3BjYTMtZzUuY3JsMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMA4GA1UdDwEB/wQE +# AwIBBjAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUHMAGGEmh0dHA6Ly9zLnN5bWNk +# LmNvbTBfBgNVHSAEWDBWMFQGBFUdIAAwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9k +# LnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNv +# bS9ycGEwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNjI5 +# MB0GA1UdDgQWBBQWZt5KNONQpxGGA7FsqcaszVlumzAfBgNVHSMEGDAWgBR/02Wn +# wt3su/AwCfNDOfoCrzMxMzANBgkqhkiG9w0BAQsFAAOCAQEAP1sZ8/oT1XU4Klru +# n1qgTKkdxcyU7t4V/vUQbqQbpWSDVBhYxAsooYXDTnTl/4l8/tXtPLpxn1YCJo8W +# Koj+sKMnIs5L4jiOAKY6hl+d5T6o3mRJQXRBIf0HyIQX2h1lMILLJk851gQnpIGx +# S0nDI4t+AjIYJ7erC/MYcrak7mcGbzimWI3g8X5dpGDGqOVQX+DouuKPmVi2taCo +# dvGi8RyIQXJ+UpebCjaZjVD3Aes85/AiauU1jGM2ihqx2WdmX5ca76ggnfAvumzO +# 2ZSFAPFY8X3JfCK1B10CxuYLv6uTk/8nGI4zNn5XNPHDrwTBhPFWs+iHgzb40wox +# 3G4sbTCCBYUwggRtoAMCAQICECeDjyzMAJ09C7Adbyi1uUkwDQYJKoZIhvcNAQEL +# BQAwgZExCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlv +# bjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazFCMEAGA1UEAxM5U3lt +# YW50ZWMgQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIENvZGUgU2lnbmluZyBD +# QSAtIEcyMB4XDTE2MTAwNTAwMDAwMFoXDTE3MTAwNTIzNTk1OVowgdYxEzARBgsr +# BgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVsYXdhcmUxHTAbBgNV +# BA8TFFByaXZhdGUgT3JnYW5pemF0aW9uMRAwDgYDVQQFEwc1MDg0MDMyMQswCQYD +# VQQGEwJVUzERMA8GA1UECAwITmV3IFlvcmsxETAPBgNVBAcMCE5ldyBZb3JrMR8w +# HQYDVQQKDBZLRU1QIFRlY2hub2xvZ2llcyBJbmMuMR8wHQYDVQQDDBZLRU1QIFRl +# Y2hub2xvZ2llcyBJbmMuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +# zUcerldV4VKZ+xPtYfy3/HwbSLJu8HS2urs4QUEF41PJYl50P/+ePYKpuOcksc2l +# n45YO5/zrKTcjgzxMxJhrNDDAelPeZjiDlkidj6a79msxMXjRzIAI8A4b5SpKBKc +# 7GVANCt0HZlEWjYegiaVjA6fRJFTRuJVr+K1fc1M79mgARNPCLOuy21N7d+MNvOl +# nfBlvRGJZC2CQeeXHjhh/q8RdPmVqXliG8zkIIX+wq+kyVSO1ngYsDJZ4iMmjpCA +# QzdT564zK8potK4fjPblYDiiEtUR1wGg6g4l2X18Mci21of4RbWBKQ/hxQm6oprA +# XBraFsYnwwwt8QSl9+UtmQIDAQABo4IBkDCCAYwwLgYDVR0RBCcwJaAjBggrBgEF +# BQcIA6AXMBUME1VTLURFTEFXQVJFLTUwODQwMzIwCQYDVR0TBAIwADAOBgNVHQ8B +# Af8EBAMCB4AwKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3N3LnN5bWNiLmNvbS9z +# dy5jcmwwYAYDVR0gBFkwVzBVBgVngQwBAzBMMCMGCCsGAQUFBwIBFhdodHRwczov +# L2Quc3ltY2IuY29tL2NwczAlBggrBgEFBQcCAjAZDBdodHRwczovL2Quc3ltY2Iu +# Y29tL3JwYTAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBQWZt5K +# NONQpxGGA7FsqcaszVlumzAdBgNVHQ4EFgQUu/UpUEJhq9Dx+3CC/n6LPC3FyRYw +# WAYIKwYBBQUHAQEETDBKMB8GCCsGAQUFBzABhhNodHRwOi8vc3cuc3ltY2QuY29t +# MCcGCCsGAQUFBzAChhtodHRwOi8vc3cxLnN5bWNiLmNvbS9zdy5jcnQwDQYJKoZI +# hvcNAQELBQADggEBAF/gxzrK67CSW740OGSXAC4/NzRVcP5RmONNEXIjmYEowtgN +# UtXAns9olC+uzborP1Pq7MvZKMC0CW5P8GsloeqVGjRQ2IPFiEvLAagQO5HVzDMA +# NZeuTNS5At5i+MkqkW+sLoVH+tBVDhbn17sH2mX0wXid4NCOojyVA1FarE0gup+v +# XjhwBlXQPRU2K49cmd6dryN1GGufmiXJC25fggZ+2lc0A+j1mBfN9lsMVe7ZYgvW +# o1WyWM/K66ga8FC9MIpv2tzVQc5Oy0UysQtnHykfRuAA5yXHaiXejx2uF5/5LWR1 +# s53Zchz0LXsZ+ndn4Utg0e2T9iRyuW7Sw7jek4sxghCAMIIQfAIBATCBpjCBkTEL +# MAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYD +# VQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMUIwQAYDVQQDEzlTeW1hbnRlYyBD +# bGFzcyAzIEV4dGVuZGVkIFZhbGlkYXRpb24gQ29kZSBTaWduaW5nIENBIC0gRzIC +# ECeDjyzMAJ09C7Adbyi1uUkwDQYJYIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEM +# MQIwADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4w +# DAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgTWpulaW38EfEXNeVA1fN7aFp +# SKe1UWvCrZzj5nHvoBIwDQYJKoZIhvcNAQEBBQAEggEAa+FCIrOPR8sC+zW/IcXY +# 0xRkJTlKobcyIXBSH0UMIWNRVuBYwxeBRGxiqiz5KAQctQn4otz7K+aCkBo/Am2S +# cFuLkVKdhHQwpFWykuEtApgd1GG1jE1aCAZ2g2TTwzjnQDtg9Eah60MpzJe6xr4Q +# WyDqbclITMgq8vtVkvRSrmFF3i5FjZpQUL2P2uBD62X9aSrsmbo1GVHIGk6+hrwZ +# Px2hLlWJmrnKWa499kxH3Vroy9i6x5rSzSqjnDO+pPBrSCputzbFmW5e5CFVB1qh +# f9fFmA8SxRoq/peUU/ZuBn2y95U89ELMg7e48dc60T9BBShw4034J02IxkD6iliz +# aqGCDiwwgg4oBgorBgEEAYI3AwMBMYIOGDCCDhQGCSqGSIb3DQEHAqCCDgUwgg4B +# AgEDMQ0wCwYJYIZIAWUDBAIBMIH/BgsqhkiG9w0BCRABBKCB7wSB7DCB6QIBAQYL +# YIZIAYb4RQEHFwMwITAJBgUrDgMCGgUABBQxGASFalxI+VWDHJNvgB4WzOE3jQIV +# APgqvBCcWXGiLkinDGW+Q62VwJNrGA8yMDE3MDYwMjE3MTIyOVowAwIBHqCBhqSB +# gzCBgDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9u +# MR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTEwLwYDVQQDEyhTeW1h +# bnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIFNpZ25lciAtIEcyoIIKizCCBTgwggQg +# oAMCAQICEHsFsdRJaFFE98mJ0pwZnRIwDQYJKoZIhvcNAQELBQAwgb0xCzAJBgNV +# BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp +# Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDIwMDggVmVyaVNpZ24sIElu +# Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE4MDYGA1UEAxMvVmVyaVNpZ24g +# VW5pdmVyc2FsIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYwMTEy +# MDAwMDAwWhcNMzEwMTExMjM1OTU5WjB3MQswCQYDVQQGEwJVUzEdMBsGA1UEChMU +# U3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5l +# dHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0Ew +# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7WZ1ZVU+djHJdGoGi61Xz +# sAGtPHGsMo8Fa4aaJwAyl2pNyWQUSym7wtkpuS7sY7Phzz8LVpD4Yht+66YH4t5/ +# Xm1AONSRBudBfHkcy8utG7/YlZHz8O5s+K2WOS5/wSe4eDnFhKXt7a+Hjs6Nx23q +# 0pi1Oh8eOZ3D9Jqo9IThxNF8ccYGKbQ/5IMNJsN7CD5N+Qq3M0n/yjvU9bKbS+GI +# mRr1wOkzFNbfx4Dbke7+vJJXcnf0zajM/gn1kze+lYhqxdz0sUvUzugJkV+1hHk1 +# inisGTKPI8EyQRtZDqk+scz51ivvt9jk1R1tETqS9pPJnONI7rtTDtQ2l4Z4xaE3 +# AgMBAAGjggF3MIIBczAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIB +# ADBmBgNVHSAEXzBdMFsGC2CGSAGG+EUBBxcDMEwwIwYIKwYBBQUHAgEWF2h0dHBz +# Oi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUFBwICMBkaF2h0dHBzOi8vZC5zeW1j +# Yi5jb20vcnBhMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL3Mu +# c3ltY2QuY29tMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9zLnN5bWNiLmNvbS91 +# bml2ZXJzYWwtcm9vdC5jcmwwEwYDVR0lBAwwCgYIKwYBBQUHAwgwKAYDVR0RBCEw +# H6QdMBsxGTAXBgNVBAMTEFRpbWVTdGFtcC0yMDQ4LTMwHQYDVR0OBBYEFK9j1sqj +# ToVy4Ke8QfMpojh/gHViMB8GA1UdIwQYMBaAFLZ3+mlIR59TEtXC6gcydgfRlwcZ +# MA0GCSqGSIb3DQEBCwUAA4IBAQB16rAt1TQZXDJF/g7h1E+meMFv1+rd3E/zociB +# iPenjxXmQCmt5l30otlWZIRxMCrdHmEXZiBWBpgZjV1x8viXvAn9HJFHyeLojQP7 +# zJAv1gpsTjPs1rSTyEyQY0g5QCHE3dZuiZg8tZiX6KkGtwnJj1NXQZAv4R5NTtzK +# EHhsQm7wtsX4YVxS9U72a433Snq+8839A9fZ9gOoD+NT9wp17MZ1LqpmhQSZt/gG +# V+HGDvbor9rsmxgfqrnjOgC/zoqUywHbnsc4uw9Sq9HjlANgCk2g/idtFDL8P5dA +# 4b+ZidvkORS92uTTw+orWrOVWFUEfcea7CMDjYUq0v+uqWGBMIIFSzCCBDOgAwIB +# AgIQVFjyqtdB1kS8hKl7oJZS5jANBgkqhkiG9w0BAQsFADB3MQswCQYDVQQGEwJV +# UzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFu +# dGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIFNIQTI1NiBUaW1l +# U3RhbXBpbmcgQ0EwHhcNMTcwMTAyMDAwMDAwWhcNMjgwNDAxMjM1OTU5WjCBgDEL +# MAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMR8wHQYD +# VQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTEwLwYDVQQDEyhTeW1hbnRlYyBT +# SEEyNTYgVGltZVN0YW1waW5nIFNpZ25lciAtIEcyMIIBIjANBgkqhkiG9w0BAQEF +# AAOCAQ8AMIIBCgKCAQEAmfP82AQJA4b511ymk8BCfOp8Y89dAOKO88CQ348p9Rjq +# lLeS5dewoHOB6OkKm0p8Af+dj6Q5pw7qRfQiDDpw7TlFi+TFG1zwRWhGJAVjdpsc +# /J5sKrFW5Yp/UnGu8jXVRiMGHM9ILR20zbjZdiOOHP8+v7sGXGkHpmUO+F6ufS7t +# Ta4178nXAEL9KJUOn11yQgm8w9pE0u3MR4Tk/MotrFi+rveu2UQNCLfCd9YaQ3DR +# bgPeUpLEEAhx2boiVfIfvO2bnTviXh1Mg/+XD3sL51WDTtIN677X7K5uR7mf36XW +# UbwEVe3/J3BMye0qSxPhsblMD8kB7lVlX2kCeGbLPwIDAQABo4IBxzCCAcMwDAYD +# VR0TAQH/BAIwADBmBgNVHSAEXzBdMFsGC2CGSAGG+EUBBxcDMEwwIwYIKwYBBQUH +# AgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUFBwICMBkaF2h0dHBz +# Oi8vZC5zeW1jYi5jb20vcnBhMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly90cy1j +# cmwud3Muc3ltYW50ZWMuY29tL3NoYTI1Ni10c3MtY2EuY3JsMBYGA1UdJQEB/wQM +# MAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDB3BggrBgEFBQcBAQRrMGkwKgYI +# KwYBBQUHMAGGHmh0dHA6Ly90cy1vY3NwLndzLnN5bWFudGVjLmNvbTA7BggrBgEF +# BQcwAoYvaHR0cDovL3RzLWFpYS53cy5zeW1hbnRlYy5jb20vc2hhMjU2LXRzcy1j +# YS5jZXIwKAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFRpbWVTdGFtcC0yMDQ4LTUw +# HQYDVR0OBBYEFAm1wf6WcpcpQ5rJ4AK6rvj9L7r2MB8GA1UdIwQYMBaAFK9j1sqj +# ToVy4Ke8QfMpojh/gHViMA0GCSqGSIb3DQEBCwUAA4IBAQAXswqI6VxaXiBrOwoV +# smzFqYoyh9Ox9BxTroW+P5v/17y3lIW0x1J+lOi97WGy1KeZ5MPJk8E1PQvoaApd +# Vpi9sSI70UR617/wbVEyitUj3zgBN/biUyt6KxGPt01sejMDG3xrCZQXu+TbWNQh +# E2Xn7NElyix1mpx//Mm7KmirxH20z6PJbKfZxACciQp3kfRNovsxO4Zu9uYfUAOG +# m7/LQqvmdptyWhEBisbvpW+V592uuuYiZfAYWRsRyc2At9iXRx9CCPiscR+wRlOz +# 1LLVo6tQdUgSF4Ktz+BBTzJ+zZUcv5GKCD2kp2cClt8kTKXQQcCCYKOKFzJL07zP +# pLSMMYICWjCCAlYCAQEwgYswdzELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFu +# dGVjIENvcnBvcmF0aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3Jr +# MSgwJgYDVQQDEx9TeW1hbnRlYyBTSEEyNTYgVGltZVN0YW1waW5nIENBAhBUWPKq +# 10HWRLyEqXugllLmMAsGCWCGSAFlAwQCAaCBpDAaBgkqhkiG9w0BCQMxDQYLKoZI +# hvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTE3MDYwMjE3MTIyOVowLwYJKoZIhvcN +# AQkEMSIEIOw2a6U50/47tGXS4vTeEw645pE3ZGClFmSZdIAZBwjpMDcGCyqGSIb3 +# DQEJEAIvMSgwJjAkMCIEIM96wXrQR+zV/cNoIgMbEtTvB4tvK0xea6Qfj/LPS61n +# MAsGCSqGSIb3DQEBAQSCAQB6HE9H+Hy0EB+bAyTu3NlzLqTMMpcpBSroC+ntHCDh +# uBTmbn8qPjSqQRRTFLXvHH5kuVzUseHX2LOhADDOze29Nh2H8ibzRnFap3aGOy6n +# nyb1vcumA7OT8GdXCJhEXo2uBBOvAA4qozxiv40tGb9VR1jtjO3WckhxOUg3KXnY +# CVx/4HD4+yutxhLQ/Z7L2Q4zDxVjArjoW0vFX1sr6eNfWEQ776x9zym/7hi3rzAG +# vvn5yqtAMBmv1yIssa+YAFHQCfRWTq7CZmpifXJQweH8AXkPycBSloUpqklpNPUA +# ydgpD7Wy2KWu8OrLCehNdotebYawEkpYo2AnyDM+l9D3 +# SIG # End signature block diff --git a/LICENSE b/LICENSE index 58a1d1b..d41c0bd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,3 +1,232 @@ -Additional permission under GNU GPL version 3 section 7 +GNU GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 -If you modify this Program, or any covered work, by linking or combining it with [name of library] (or a modified version of that library), containing parts covered by the terms of [name of library's license], the licensors of this Program grant you additional permission to convey the resulting work. Corresponding Source for a non-source form of such a combination shall include the source code for the parts of [name of library] used as well as that of the covered work. +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the Program. + +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + + c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + + d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + + e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + +You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . diff --git a/Microsoft Azure/Azure-Migrate-Test.ps1 b/Microsoft Azure/Azure-Migrate-Test.ps1 new file mode 100644 index 0000000..ad2fb06 --- /dev/null +++ b/Microsoft Azure/Azure-Migrate-Test.ps1 @@ -0,0 +1,92 @@ +[CmdletBinding()] + +param ( + + [Parameter(Mandatory = $false)] + + [string] + + $SubsID, + + [Parameter(Mandatory = $false)] + + [string] + + $FilePath = "$Env:USERPROFILE\Desktop\AzureMoveResourcesReport.docx" + +) + +Import-Module Az +Import-Module PSWriteWord + + +if ($SubsID) { + + Connect-AzAccount -Subscription $SubsID | Out-Null + +} + +else { + + Connect-AzAccount | Out-Null + +} + +$WordDocument = New-WordDocument $FilePath + +#$res = Invoke-WebRequest -Uri https://raw.githubusercontent.com/tfitzmac/resource-capabilities/master/move-support-resources.csv -Method Get +#$list = Convertfrom-csv -InputObject $res.Content + +$list = Import-Csv -Path "move-support-resources.csv" + +$resGroups = Get-AzResourceGroup + +foreach ($group in $resGroups) { + + $resObjs = Get-AzResource -ResourceGroupName $group.ResourceGroupName + + Add-WordText -WordDocument $WordDocument -Text "`nResources Group: $($group.ResourceGroupName)" -FontSize 20 -Color Blue -Supress $True + Add-WordLine -WordDocument $WordDocument -LineColor Blue -LineType double -Supress $True + + foreach ($obj in $resObjs) { + + $resName = $obj.Name + + $resType = $obj.ResourceType + + $resID = $obj.ResourceId + + $resList = $list -match $obj.ResourceType + + if ($resList) { + + $i = [int]$resList[0].'Move Subscription' + + if ($i -ne 1) { + + Write-Host "`nOBJECT CAN _NOT_ BE MIGRATED: $resName has type $resType ($resID)" -ForegroundColor Yellow -BackgroundColor DarkRed + Add-WordText -WordDocument $WordDocument -Text "`nOBJECT CAN _NOT_ BE MIGRATED: $resName has type $resType ($resID)" -FontSize 12 -Color Red -Supress $True + + } + + else { + + Write-Host "`nOBJECT SUPPORTED FOR MIGRATION: $resName has type $resType ($resID)" -ForegroundColor Green + Add-WordText -WordDocument $WordDocument -Text "`nOBJECT SUPPORTED FOR MIGRATION: $resName has type $resType ($resID)" -FontSize 12 -Color Green -Supress $True + + } + + } + + else { + + Write-Host "UNKNOWN OBJECT's TYPE: $resName has type $resType ($resID)" -ForegroundColor DarkRed -BackgroundColor Yellow + Add-WordText -WordDocument $WordDocument -Text "UNKNOWN OBJECT's TYPE: $resName has type $resType ($resID)" -FontSize 12 -Color Yellow -Supress $True + + } + + } + +} + +Save-WordDocument $WordDocument -Language 'en-US' -Supress $True -OpenDocument:$true \ No newline at end of file diff --git a/Microsoft Azure/Get-Storagelength.ps1 b/Microsoft Azure/Get-Storagelength.ps1 new file mode 100644 index 0000000..28dfe71 --- /dev/null +++ b/Microsoft Azure/Get-Storagelength.ps1 @@ -0,0 +1,30 @@ +#Reprise d'un exemple officiel pour calculer la taile d'un conteneur Blob sur Azure +#Attention les opérations de lecture sont facturables ! + +# these are for the storage account to be used +$resourceGroup = "" +$storageAccountName = "" +$containerName = "" + +# get a reference to the storage account and the context +$storageAccount = Get-AzStorageAccount ` + -ResourceGroupName $resourceGroup ` + -Name $storageAccountName +$ctx = $storageAccount.Context + +# get a list of all of the blobs in the container +$listOfBLobs = Get-AzStorageBlob -Container $ContainerName -Context $ctx + +# zero out our total +$length = 0 + +# this loops through the list of blobs and retrieves the length for each blob +# and adds it to the total +$listOfBlobs | ForEach-Object { $length = $length + $_.Length } + +# output the blobs and their sizes and the total +Write-Host "List of Blobs and their size (length)" +Write-Host " " +$listOfBlobs | select Name, Length +Write-Host " " +Write-Host "Total Length = " $length \ No newline at end of file diff --git a/Microsoft Azure/README.md b/Microsoft Azure/README.md new file mode 100644 index 0000000..74a5ad1 --- /dev/null +++ b/Microsoft Azure/README.md @@ -0,0 +1 @@ +# Microsoft Azure diff --git a/MsSQL/script.ps1 b/MsSQL/script.ps1 new file mode 100644 index 0000000..ab71b7a --- /dev/null +++ b/MsSQL/script.ps1 @@ -0,0 +1,61 @@ +Function QuerySQLServer([string]$DBServer, [string]$DBName, [string]$Query) { + Try { + $ErrorActionPreference = "Stop" + + $resultsDataTable = New-Object System.Data.DataTable + + $cn = new-object System.Data.SqlClient.SqlConnection("Data Source=$DBServer;Integrated Security=SSPI;Initial Catalog=$DBName") + $cn.open() + + $cmd = new-object "System.Data.SqlClient.SqlCommand" ($Query , $cn) + $reader = $cmd.ExecuteReader() + + $resultsDataTable.Load($reader) + + $cn.Close() + + return $resultsDataTable + } + Catch { + write-host $_.Exception.Message + $_.Exception.Message >> "d:\error.log" + } + Finally { + $ErrorActionPreference = "Continue" + } +} + +cls + +$bReturnOK = $TRUE +$bReturnCritical = $FALSE +$bReturnWarning = $FALSE +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$strCritical = "" +$strWarning = "" +$DataTexte = "" + +$ComputerName = $env:COMPUTERNAME + +$Liste = QuerySQLServer "$ComputerName" "dhb_prd" "SELECT A.session_id, Db_Name(database_id) AS [database], DateDiff(MINUTE, A.connect_time, GetDate()) AS [Connected (mins)], num_reads, num_writes, login_name, Text AS SQL FROM sys.dm_exec_connections AS A INNER JOIN sys.dm_exec_sessions AS B ON A.session_id = B.session_id INNER JOIN sys.sysprocesses AS s ON s.spid = A.session_id OUTER APPLY::fn_get_sql(sql_handle)" +$Liste | Format-Table | Out-String|% {Write-Host $_} + +$DataTexte = $Liste.login_name + +If ($bReturnCritical) { + write-output $strCritical + write-output $strWarning "|" $DataTexte + exit $returnStateCritical +} +Elseif ($bReturnWarning) { + write-output $strWarning "|" $DataTexte + exit $returnStateWarning +} +Else { + write-output "OK - Nombre de requete en cours : $DataTexte | 'NbrequetesEnCours'=$DataTexte " + exit $returnStateOK +} \ No newline at end of file diff --git a/MySQL/scripts.ps1 b/MySQL/scripts.ps1 new file mode 100644 index 0000000..7db306a --- /dev/null +++ b/MySQL/scripts.ps1 @@ -0,0 +1,71 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +[void][system.reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector NET 8.0.32\Assemblies\v4.5.2\MySql.Data.dll") + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +$Mysqlhost= "10.78.56.51" +$Mysqluser= "toor" +$Mysqlpass= "jN7VKeR3jjexMLzG" +$Mysqldatabase= "bugtracker" + +$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString="server=$Mysqlhost;uid=$Mysqluser;pwd=$Mysqlpass;database=$Mysqldatabase"} +$Connection.Open() +$sql = New-Object MySql.Data.MySqlClient.MySqlCommand +$sql.Connection = $Connection + +$sql.CommandText = "SELECT id,summary FROM mantis_bug_table where summary like '%Opcon%'" +$myreader = $sql.ExecuteReader() + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript + + + diff --git a/NRPE/Check-AD-Accounts-Lock.ps1 b/NRPE/Check-AD-Accounts-Lock.ps1 new file mode 100644 index 0000000..8e3ba0e --- /dev/null +++ b/NRPE/Check-AD-Accounts-Lock.ps1 @@ -0,0 +1,119 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : 17/11/2022 + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +[CmdletBinding()] +Param( + [string]$action = "LockedOut", + [string]$searchBase = "", + [string]$searchScope = "Subtree", + [int]$maxWarn = 5, + [int]$maxCrit = 10 +) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Check-AD-Account-Lock.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +# check that powershell ActiveDirectory module is present +If(Get-Module -Name "ActiveDirectory" -ListAvailable) { + Try { + Import-Module -Name ActiveDirectory + } + Catch { + Write-Host "CRITICAL: Missing PowerShell ActiveDirectory module" + exit 2 + } +} +Else { + Write-Host "CRITICAL: Missing PowerShell ActiveDirectory module" + exit 2 +} + +# check params if provided +If($action -notmatch "^(AccountDisabled|AccountExpired|AccountExpiring|AccountInactive|LockedOut|PasswordExpired|PasswordNeverExpires)$") { + Write-Host "CRITICAL: action parameter can only be AccountDisabled,AccountExpired,AccountExpiring,AccountInactive,LockedOut,PasswordExpired,PasswordNeverExpires. Provided $action" + exit 2 +} + +If($searchScope -notmatch "^(Base|OneLevel|Subtree)$") { + Write-Host "CRITICAL: searchScope parameter can only be Base,OneLevel,Subtree. Provided $searchScope" + exit 2 +} + +If(($searchBase -ne "") -and $searchBase -ne ((Get-ADDomain).DistinguishedName)) { + $search=Get-ADObject -Filter 'ObjectClass -eq "OrganizationalUnit" -and DistinguishedName -eq $searchBase' + + If ($search.Count -ne 1) { + Write-Host "CRITICAL: SearchBase not found or duplicate. Provided $searchBase" + exit 2 + } +} +Else { + $searchBase=(Get-ADDomain).DistinguishedName +} + +$command="Search-ADAccount -"+$action+" -SearchBase '"+$searchBase+"' -SearchScope "+$searchScope +$result=invoke-expression $command + +If($result.Count -gt $maxCrit) { + $state="CRITICAL" + $exitcode=2 +} +Elseif($result.Count -gt $maxWarn) { + $state="WARNING" + $exitcode=1 +} +Else { + $state="OK" + $exitcode=0 +} + +$output=$state+": "+$result.Count+" "+$action+"|"+$action+"="+$result.Count+";"+$maxWarn+";"+$maxCrit +Write-Host $output +exit $exitcode + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/NRPE/Check-NetLbfoTeamMember.ps1 b/NRPE/Check-NetLbfoTeamMember.ps1 new file mode 100644 index 0000000..5a78d83 --- /dev/null +++ b/NRPE/Check-NetLbfoTeamMember.ps1 @@ -0,0 +1,76 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber + +# Initial state +$ExitCode = 0 + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +# Get the status +$LbfoTeamMemberOutput = Get-NetLbfoTeamMember | Select-Object Name,FailureReason,Team +$LbfoTeamMemberCount = (Get-NetLbfoTeamMember).Count + +# Normal state : AdministrativeDecision / NoFailure +Foreach($Member in $LbfoTeamMemberOutput) { + If(!(($Member.FailureReason -eq "NoFailure") -or ($Member.FailureReason -eq "AdministrativeDecision"))) { + $ExitCode = 2 + Write-Output "CRITICAL: Member $($Member.Name) of the team $($Member.Team) state is $($Member.FailureReason)" + } +} + +# Evaluate final exit code result for all passed checks. +If ($ExitCode -eq 0) { + Write-Output "OK: Members ($LbfoTeamMemberCount) of all LBFO teams are OK" +} + +exit $ExitCode + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/NRPE/Check-Port-TCP.ps1 b/NRPE/Check-Port-TCP.ps1 new file mode 100644 index 0000000..0645deb --- /dev/null +++ b/NRPE/Check-Port-TCP.ps1 @@ -0,0 +1,99 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +[CmdletBinding()] +Param( + [Parameter(Mandatory=$True,Position=1)] + [int]$PortSearch + ) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber + +$bReturnOK = $TRUE +$bReturnCritical = $FALSE +$bReturnWarning = $FALSE +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$strCritical = "" +$strWarning = "" +$DataTexte = "" + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +$ListPort = Get-NetTCPConnection + +Foreach ($Port in $ListPort) { + If ($Port.LocalPort -eq $PortSearch) { + $DataTexte = "Service avec $PortSearch fonctionnel" + $bReturnCritical = $False + break + } + Else { + $bReturnCritical = $TRUE + $strCritical = "Critique" + $DataTexte = "Service avec $PortSearch non fonctionnel" + } +} + +If ($bReturnCritical) { + write-output $strCritical + write-output $strWarning "|" $DataTexte + exit $returnStateCritical +} +Elseif ($bReturnWarning) { + write-output $strWarning "|" $DataTexte + exit $returnStateWarning +} +Else { + write-output "OK" "|" $DataTexte + exit $returnStateOK +} + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/NRPE/Check-WSUS.ps1 b/NRPE/Check-WSUS.ps1 new file mode 100644 index 0000000..b67b598 --- /dev/null +++ b/NRPE/Check-WSUS.ps1 @@ -0,0 +1,137 @@ +############################################################################### +# Windows PowerShell Skript to get WSUS statistics +# output readable by NRPE for Nagios monitoring +# +# FORK FROM: http://www.monitoring-portal.org/wbb/index.php?page=Thread&threadID=16424 +############################################################################### + + +# Variables - set these to fit your needs +############################################################################### +# The server name of your WSUS server +$serverName = 'localhost' + +# use SSL connection? +$useSecureConnection = $False + +# the port number of your WSUS IIS website +$portNumber = 8530 + +# warn if a computer has not contacted the server for ... days +$daysBeforeWarn = 14 + + + +# Script - don't change anything below this line! +############################################################################### + +# load WSUS framework +[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") + +# connect to specified WSUS server +# see here for information of the IUpdateServer class +# -> http://msdn.microsoft.com/en-us/library/microsoft.updateservices.administration.iupdateserver(VS.85).aspx +$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($serverName, $useSecureConnection, $portNumber) + +# get general status information +# see here for more infos about the properties of GetStatus() +# -> http://msdn.microsoft.com/en-us/library/microsoft.updateservices.administration.updateserverstatus_properties(VS.85).aspx +$status = $wsus.GetStatus() +$totalComputers = $status.ComputerTargetCount + +# computers with errors +$computerTargetScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope +$computerTargetScope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Failed +$computersWithErrors = $wsus.GetComputerTargetCount($computerTargetScope) + +# computers with needed updates +$computerTargetScope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled -bor [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::InstalledPendingReboot -bor [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Downloaded +$computerTargetScope.ExcludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Failed +$computersNeedingUpdates = $wsus.GetComputerTargetCount($computerTargetScope) + +# computers without status +$computerTargetScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope +$computerTargetScope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Unknown +$computerTargetScope.ExcludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Failed -bor [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled -bor [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::InstalledPendingReboot -bor [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Downloaded +$computersWithoutStatus = $wsus.GetComputerTargetCount($computerTargetScope) + + + +# computers that are OK +$computersOK = $totalComputers - $computersWithErrors - $computersNeedingUpdates - $computersWithoutStatus + + + +# needed, but not approved updates +$updateScope = new-object Microsoft.UpdateServices.Administration.UpdateScope +$updateScope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::NotApproved +$updateServerStatus = $wsus.GetUpdateStatus($updateScope, $False) +$updatesNeededByComputersNotApproved = $updateServerStatus.UpdatesNeededByComputersCount + +# computers that did not contact the server in $daysBeforeWarn days +$timeSpan = new-object TimeSpan($daysBeforeWarn, 0, 0, 0) +$computersNotContacted = $wsus.GetComputersNotContactedSinceCount([DateTime]::UtcNow.Subtract($timeSpan)) + +# computers in the "not assigned" group +$computerTargetScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope +$computersNotAssigned = $wsus.GetComputerTargetGroup([Microsoft.UpdateServices.Administration.ComputerTargetGroupId]::UnassignedComputers).GetComputerTargets().Count + +# output and return code +# 0: OK +# 1: WARNING +# 2: CRITICAL +# 3: UNKNOWN +$returnCode = 0 +$output = '' + +if ($computersNeedingUpdates -gt 0) { + $returnCode = 1 + $output = "$computersNeedingUpdates PC Desactualizadas" +} + +if ($computersWithErrors -gt 0) { + $returnCode = 2 + if ($output -ne '') { + $output = $output + ', ' + } + $output = $output + "$computersWithErrors PC Con Errores" +} + +if ($computersNotContacted -gt 0) { + $returnCode = 2 + if ($output -ne '') { + $output = $output + ', ' + } + $output = $output + "$computersNotContacted PC Sin Contacto ($daysBeforeWarn d)" +} + +if ($computersNotAssigned -gt 0) { + $returnCode = 2 + if ($output -ne '') { + $output = $output + ', ' + } + $output = $output + "$computersNotAssigned PC Sin Asignar" +} + +if ($updatesNeededByComputersNotApproved -gt 0) { + $returnCode = 2 + if ($output -ne '') { + $output = $output + ', ' + } + $output = $output + "$updatesNeededByComputersNotApproved Upd. S/A" +} + +if ($output -eq '') { + $output = 'Todas las Computadoras Asignadas, Activas y Al dia.' +} + +$output + +# append performance data +'|' + "'PC Desactualizadas'=$computersNeedingUpdates;;;0;$totalComputers" +'|' + "'PC Con Errores'=$computersWithErrors;" +"'PC Sin Estatus'=$computersWithoutStatus;" +"'PC OK'=$computersOK;" + +$host.SetShouldExit($returnCode) +exit $returnCode diff --git a/NRPE/Check_Certificats.ps1 b/NRPE/Check_Certificats.ps1 new file mode 100644 index 0000000..83c43c1 --- /dev/null +++ b/NRPE/Check_Certificats.ps1 @@ -0,0 +1,101 @@ +<# +.SYNOPSIS + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : 16/11/2022 + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + +.DESCRIPTION + +.PARAMETER + +.INPUTS + +.OUTPUTS + +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +$Folder = "C:\TradeXpress5\users\ediprod\ssl\certs" +$ListCert = dir $Folder -Include *.cer, *.crt, *.cert -Recurse +$dtCurrent = Get-Date + +$bReturnOK = $TRUE +$bReturnCritical = $FALSE +$bReturnWarning = $FALSE +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$nWarning = 60 +$nCritical = 30 +$strCritical = "" +$strWarning = "" +$DataTexte = "" + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +cls + +Foreach ($Certificate in $ListCert) { + $objCertificate = New-Object Security.Cryptography.X509Certificates.X509Certificate2 $Certificate.FullName + $dtRemain = $objCertificate.NotAfter - $dtCurrent + $nRemainDays = $dtRemain.Days + + $DataTexte += "'"+$Certificate.name+"'="+$nRemainDays+" " + + If ($nRemainDays -lt 0) { + $strCritical = $strCritical + "EXPIRED " + $objCertificate.SubjectName.Name.ToString() + " expired " + $objCertificate.NotAfter.ToString() + "`n" + $bReturnCritical = $TRUE + } + Elseif ( $nRemainDays -lt $nCritical) { + $strCritical = $strCritical + "Critical " + $objCertificate.SubjectName.Name.ToString() + " expires " + $objCertificate.NotAfter.ToString() + "`n" + $bReturnCritical = $TRUE + } + Elseif ( $nRemainDays -lt $nWarning) { + $strWarning = $strWarning + "Warning " + $objCertificate.SubjectName.Name.ToString() + " expires " + $objCertificate.NotAfter.ToString() + "`n" + $bReturnWarning = $TRUE + } + Else { + #Nothing for now + } +} + +If ($bReturnCritical) { + write-output $strCritical + write-output $strWarning "|" $DataTexte + exit $returnStateCritical +} +Elseif ($bReturnWarning) { + write-output $strWarning "|" $DataTexte + exit $returnStateWarning +} +Else { + write-output "OK" "|" $DataTexte + exit $returnStateOK +} diff --git a/NRPE/Check_Dynamics-AX.ps1 b/NRPE/Check_Dynamics-AX.ps1 new file mode 100644 index 0000000..64e2c43 --- /dev/null +++ b/NRPE/Check_Dynamics-AX.ps1 @@ -0,0 +1,83 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +## ReturnStates +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$Separateur = ":" +$DataTexte = "" +$str = "" + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +cls + +cd "C:\Program Files\Centreon NSClient++" + +$ValiableRetour = cmd /c nscp.exe sys -- --validate Microsoft --all + +Foreach ($ligne in $ValiableRetour) { + If ($ligne.StartsWith("\Microsoft Dynamics AX Object Server")) { + $ArrayA = $ligne.Split("\") + $ArrayB = ($ArrayA[2]).Split($Separateur) + + #Write-Host $ArrayB[0] + #Write-Host ($ArrayB[1].Substring(0,$ArrayB[1].Length-1)).substring(4) + + $DataTexte += "'"+$ArrayB[0]+"'="+($ArrayB[1].Substring(0,$ArrayB[1].Length-1)).substring(4)+" " + + If ($ArrayB[0] -eq "ACTIVE SESSIONS") { + $str = "Nombre de sessions active : "+($ArrayB[1].Substring(0,$ArrayB[1].Length-1)).substring(4) + } + } +} + +write-output "OK - $str" "|" $DataTexte +exit $returnStateOK \ No newline at end of file diff --git a/NRPE/Check_diskdefragstatus.ps1 b/NRPE/Check_diskdefragstatus.ps1 new file mode 100644 index 0000000..ef2e462 --- /dev/null +++ b/NRPE/Check_diskdefragstatus.ps1 @@ -0,0 +1,181 @@ +<# +.SYNOPSIS + Check Windows disks fragmentation status. +.DESCRIPTION + Check Windows disks fragmentation status. + Optionally performs defragmentation. +.OUTPUTS + OK: All disk fragmentation status is ok. + WARNING: % of fragmentation equal to Warning treshold. + CRITICAL: % of fragmentation equal to Critical treshold. +.PARAMETER warning + % of fragmentation for warning treshold. + Default System default. +.PARAMETER critical + % of fragmentation for critical treshold. + Default None. +.PARAMETER disks + Disks to check fragmentation status. + Default: all. + Example: "C:","D:","F:" +.PARAMETER defrag + Defrag disks if warning or critical. + Default: false +.PARAMETER forceDefrag + Defrag disks if free space is low. + Default: false +.EXAMPLE + Only checks all drives with system default warning treshold. + check_diskdefragstatus.ps1 +.EXAMPLE + Checks all drives with 15 warning treshold and 40 critical treshold. + check_diskdefragstatus.ps1 -warning 15 -critical 40 +.EXAMPLE + Checks only C and D drives with system default warning treshold and 50 critical treshold. + check_diskdefragstatus.ps1 -disks "C:","D:" -critical 50 +.EXAMPLE + Checks C drive with system default warning treshold. + If defragmentation status is greater than warning or critical treshold, it runs disk defragmentation. + check_diskdefragstatus.ps1 -disks "C:" -defrag +.EXAMPLE + Checks C drive with system default warning treshold. + If defragmentation status is greater than warning or critical treshold, it runs disk defragmentation even C: disk free space is low. + check_diskdefragstatus.ps1 -disks "C:" -defrag -forceDefrag +.NOTES + Author: Juan Granados +#> + +Param( + [Parameter(Mandatory = $false, Position = 0)] + [ValidateRange(0, 100)] + [int]$warning = 0, + [Parameter(Mandatory = $false, Position = 1)] + [ValidateRange(0, 100)] + [int]$critical = 0, + [Parameter(Mandatory = $false, Position = 2)] + [ValidateNotNullOrEmpty()] + [string[]]$disks = "all", + [Parameter()] + [switch]$defrag, + [Parameter()] + [switch]$forceDefrag +) + +#Requires -RunAsAdministrator +$ErrorActionPreference = "Stop" +$global:nagiosStatus = 0 +$global:nagiosOutput = "" + +Function Defrag-Disk($diskToDefrag) { + If ($forceDefrag) { + Write-Verbose "Forcing $($diskToDefrag.DriveLetter) defragmentation" + $result = $diskToDefrag.Defrag($true) + } + Else { + Write-Verbose "Performing $($diskToDefrag.DriveLetter) defragmentation" + $result = $diskToDefrag.Defrag($false) + } + + If ($result.ReturnValue -eq 0) { + Write-Verbose "Defragmentation successful" + Write-Verbose "Current fragmentation is $($result.DefragAnalysis.FilePercentFragmentation)" + $diskToDefrag.DefragResult = $result + If (($critical -gt 0) -and ($result.DefragAnalysis.FilePercentFragmentation -gt $critical)) { + Write-Verbose "Status is critical" + $global:nagiosStatus = 2 + } + Elseif (($warning -eq 0 -and $result.DefragAnalysis.FilePercentFragmentation -gt 10) -or ( ($warning -gt 0) -and ($result.DefragAnalysis.FilePercentFragmentation -gt $warning))) { + Write-Verbose "Status is warning" + $global:nagiosStatus = 1 + } + } + Else { + Write-Output "CRITICAL: Error $($result.ReturnValue) defragmenting drive $($diskToDefrag.DriveLetter)" + Write-Output "Check error codes: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/vdswmi/defrag-method-in-class-win32-volume" + Exit(2) + } + + $global:nagiosOutput += "Disk $($diskToDefrag.DriveLetter) fragmentation is $($result.DefragAnalysis.FilePercentFragmentation)." +} + +Try { + If ($disks -eq "all") { + $drives = get-wmiobject win32_volume | Where-Object { $_.DriveType -eq 3 -and $_.DriveLetter -and (Get-WMIObject Win32_LogicalDiskToPartition | Select-Object Dependent) -match $_.DriveLetter } + } + Else { + Foreach ($disk in $disks) { + If (-not ($disk -match '[A-Za-z]:')) { + Write-Output "UNKNOWN: Error $($drive) is not a valid disk unit. Expected N:, where N is drive unit. Example C: or D: or F:" + Exit(3) + } + } + $drives = get-wmiobject win32_volume | Where-Object { $_.DriveType -eq 3 -and $_.DriveLetter -in $disks } + } + If (-not ($drives)) { + Write-Output "UNKNOWN: No drives found with get-wmiobject win32_volume command" + Exit(3) + } + Foreach ($drive in $drives) { + Write-Verbose "Analizing drive $($drive.DriveLetter)" + $result = $drive.DefragAnalysis() + If ($result.ReturnValue -eq 0) { + Write-Verbose "Current fragmentation is $($result.DefragAnalysis.FilePercentFragmentation)" + $drive | Add-Member -NotePropertyName 'DefragResult' -NotePropertyValue $result + If (($critical -gt 0) -and ($result.DefragAnalysis.FilePercentFragmentation -gt $critical)) { + If (-not $defrag) { + Write-Verbose "Disk will not be defragmented. Status is critical" + $global:nagiosStatus = 2 + } + Else { + Defrag-Disk -diskToDefrag $drive + Continue + } + } + Elseif (($warning -eq 0 -and $result.DefragRecommended -eq "True") -or ( ($warning -gt 0) -and ($result.DefragAnalysis.FilePercentFragmentation -gt $warning))) { + If (-not $defrag) { + Write-Verbose "Disk will not be defragmented. Status is warning" + $global:nagiosStatus = 1 + } + Else { + Defrag-Disk -diskToDefrag $drive + Continue + } + } + $global:nagiosOutput += "Disk $($drive.DriveLetter) fragmentation is $($result.DefragAnalysis.FilePercentFragmentation)." + } + Else { + Write-Output "CRITICAL: Error $($result.ReturnValue) checking status of drive $($drive.DriveLetter)" + Write-Output "Check error codes: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/vdswmi/defraganalysis-method-in-class-win32-volume#return-value" + Exit(2) + } + } +} +Catch { + Write-Output "CRITICAL: $($_.Exception.Message)" + Exit(2) +} + +$global:nagiosOutput += " |" +If ($critical -eq 0) { + $critical = 50; +} +If ($warning -eq 0) { + $warning = 10; +} + +Foreach ($drive in $drives) { + $global:nagiosOutput += " $($drive.DriveLetter.TrimEnd(':'))=$($drive.DefragResult.DefragAnalysis.FilePercentFragmentation)%;$($warning);$($critical);0;100" +} + +If ($global:nagiosStatus -eq 2) { + Write-Output "CRITICAL: $($global:nagiosOutput)" + Exit(2) +} +Elseif ($global:nagiosStatus -eq 1) { + Write-Output "WARNING: $($global:nagiosOutput)" + Exit(1) +} +Else { + Write-Output "OK: disk fragmentation is correct.$($global:nagiosOutput)" + Exit(0) +} \ No newline at end of file diff --git a/NRPE/Check_iis8_app_pool_state.ps1 b/NRPE/Check_iis8_app_pool_state.ps1 new file mode 100644 index 0000000..6e56da3 --- /dev/null +++ b/NRPE/Check_iis8_app_pool_state.ps1 @@ -0,0 +1,69 @@ +<# +Ester Niclos Ferreras + +OK UP +WARNING +CRITICAL Stopped +UNKNOWN not found + + +#> + + +# +# Shell arguments +# +[CmdletBinding()] +Param( + [Parameter(Mandatory=$True,Position=1)] + [string]$ApplicationPool + ) + +$bReturnOK = $TRUE +$bReturnCritical = $FALSE +$bReturnWarning = $FALSE + +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$DataTexte = "" +$strCritical = "" +$strWarning = "" + +[System.Reflection.Assembly]::LoadFrom( "C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll" ) > $null + +$servermanager = [Microsoft.Web.Administration.ServerManager]::OpenRemote("localhost") +$apppools = $servermanager.ApplicationPools["$ApplicationPool"] +$iis = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\ | select setupstring + +# Nagios output +$resultstring='IISPOOL UNKNOWN ' + $ApplicationPool + ' ' + $status +' ; ' + $iis.SETUPSTRING + ' ' +$exit_code = $UNKNOWN + + +If ($apppools -ne $null) { + $status = $apppools.state + + If ($status -eq 'Started') { + $str = 'OK '+ $ApplicationPool + ' ' + $status +' ; ' + $iis.SETUPSTRING + ' ' + } + Else { + $strCritica = 'CRITICAL '+ $ApplicationPool + ' ' + $status +' ; ' + $iis.SETUPSTRING + ' ' + $bReturnCritical = $TRUE + } +} + +If ($bReturnCritical) { + write-output $strCritica "|" $DataTexte + exit $returnStateCritical +} +Elseif ($bReturnWarning) { + write-output $strWarning "|" $DataTexte + exit $returnStateWarning +} +Else { + write-output $str "|" $DataTexte + exit $returnStateOK +} diff --git a/NRPE/Check_iis8_connections.ps1 b/NRPE/Check_iis8_connections.ps1 new file mode 100644 index 0000000..dd3dd15 --- /dev/null +++ b/NRPE/Check_iis8_connections.ps1 @@ -0,0 +1,77 @@ +<# +Ester Niclos Ferreras + +Returns nomber of web site connections + + +UNKNOWN - not found +OK - connections +warning - current connections greater than warning value +critical - current connection greater than critical value + +#> + + +# +# Shell arguments +# +[CmdletBinding()] +Param( + [Parameter(Mandatory=$True,Position=1)] + [string]$website, + [Parameter(Mandatory=$True,Position=2)] + [int]$warning_value, + [Parameter(Mandatory=$True,Position=3)] + [int]$critical_value + ) + +$bReturnOK = $TRUE +$bReturnCritical = $FALSE +$bReturnWarning = $FALSE + +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$DataTexte = "" +$strCritical = "" +$strWarning = "" + +$counter = Get-Counter "\Service Web($website)\connexions actives" + +# Nagios output + +$resultstring='CONNECTIONS UNKNOWN ' + $website + ' not found' +$exit_code = $UNKNOWN + +If ($counter -ne $null) { + $connections=$counter.CounterSamples.CookedValue + + If ($connections -gt $critical_value) { + $strCritica = 'CONNECTIONS CRITICAL '+ $website +' connections '+ $connections + $bReturnCritical = $TRUE + } + Elseif ($connections -gt $warning_value) { + $strWarning = 'CONNECTIONS WARNING '+ $website +' connections '+ $connections + $bReturnWarning = $TRUE + } + Else { + $str= 'CONNECTIONS OK '+ $website +' connections '+ $connections + } + + $DataTexte = "connections=" + $connections + ';' + $warning_value + ';' + $critical_value + "; " +} + +If ($bReturnCritical) { + write-output $strCritica "|" $DataTexte + exit $returnStateCritical +} +Elseif ($bReturnWarning) { + write-output $strWarning "|" $DataTexte + exit $returnStateWarning +} +Else { + write-output $str "|" $DataTexte + exit $returnStateOK +} diff --git a/NRPE/Check_iis8_site.ps1 b/NRPE/Check_iis8_site.ps1 new file mode 100644 index 0000000..c857f4d --- /dev/null +++ b/NRPE/Check_iis8_site.ps1 @@ -0,0 +1,75 @@ +<# +Ester Niclos Ferreras + +Checks IIS Site state + +OK - started +CRITICAL - STOPPED +UNKNOWN - not found + + +#> + + +# +# Shell arguments +# +[CmdletBinding()] +Param( + [Parameter(Mandatory=$True,Position=1)] + [string]$website +) + +$bReturnOK = $TRUE +$bReturnCritical = $FALSE +$bReturnWarning = $FALSE + +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$DataTexte = "" +$strCritical = "" +$strWarning = "" + +[System.Reflection.Assembly]::LoadFrom( "C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll" ) > $null + +$servermanager = [Microsoft.Web.Administration.ServerManager]::OpenRemote("localhost") +$site = $servermanager.Sites["$website"] +$iis = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\ | select setupstring + +# Nagios output + +$resultstring="IISSITE UNKNOWN $website not found" +$exit_code = $UNKNOWN + +If ($site -ne $null) { + + $status= $site.State + + If ($status -eq "Started") { + $str = 'OK ' + $website + ' ' + $status + '-' + $iis.setupstring + } + Elseif ($status -eq $null) { + $strWarning = "UNKNOWN $website exists, but has no state. Check it is not a FTP site." + $bReturnWarning = $TRUE + } + Else { + $strCritical = 'CRITICAL '+ $website + ' ' + $status + '-' + $iis.setupstring + $bReturnCritical = $TRUE + } +} + +If ($bReturnCritical) { + write-output $strCritica "|" $DataTexte + exit $returnStateCritical +} +Elseif ($bReturnWarning) { + write-output $strWarning "|" $DataTexte + exit $returnStateWarning +} +Else { + write-output $str "|" $DataTexte + exit $returnStateOK +} diff --git a/NRPE/Check_win_last_update.ps1 b/NRPE/Check_win_last_update.ps1 new file mode 100644 index 0000000..b8dbd2d --- /dev/null +++ b/NRPE/Check_win_last_update.ps1 @@ -0,0 +1,95 @@ +################################################################################## +# +# NAME: check_win_last_update.ps1 +# +# AUTHOR: Peter Luetke-Bexten +# COAUTHOR: Christoph Hamschmidt +# EMAIL: peter.luetke-bexten (at) benteler.com +# +# COMMENT: +# Script to calculate the Days since last Windows Update +# which is understandable for every Manager :-} +# should be called via NRPE/NSClient++ +# inspired by bratislav.stojkovic@gmail.com check_win_lastupdate.vbs +# but with using Microsoft.Update.Session instead of Registry. +# Registry query not working in W2016 or W10. +# +# NSCLIENT.ini: +# check_win_lastupdate = cmd /c echo scriptspowershellcheck_win_last_update.ps1 $ARG1$ $ARG2$ ; exit($lastexitcode) | "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -noninteractive -noprofile -ExecutionPolicy unrestricted -command - +# +# NRPE Check: +# check_nrpe -H targethost -p 5666 -t 120 -u -c check_win_lastupdate -a 35 70 +# +# CHANGELOG: +# 1.0 20180126 - initial version +# +################################################################################ + +# Script calculates curent date and date of last Windows Update Installation + +## Arguments +#$wldays = $args[0] +#$cldays = $args[1] +$wldays = 90 +$cldays = 180 + +## ReturnStates +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +## Get lasat installed update and select date as object +$Session = New-Object -ComObject Microsoft.Update.Session +$Searcher = $Session.CreateUpdateSearcher() +$HistoryCount = $Searcher.GetTotalHistoryCount() +## http://msdn.microsoft.com/en-us/library/windows/desktop/aa386532%28v=vs.85%29.aspx +$DatelastInstall = $Searcher.QueryHistory(0,$HistoryCount) | ForEach-Object {$_} | Select-Object -First 1 | Select-Object -Property Date + +## Get actual date +$Datenow = Get-Date + +## Get number of days since list install +$DayslastInstall = ($Datenow - $DatelastInstall.date).Days +$DayslastInstalldate = ($Datenow.Date - $DatelastInstall.Date).Days + +## Debug +# $DatelastInstall.ToString() +# $DatelastInstall +# $DatelastInstall.date +# $Datenow +# $Datenow.date +# $DayslastInstall +# $DayslastInstalldate + +If (!$wldays) { + echo "Usage: check_win_last_update.ps1 " + exit 3 +} + +# if ($DayslastInstall) { +If ($DayslastInstalldate -eq 0) { + Write-Host "OK - Patches applied $DayslastInstalldate days ago at $($DatelastInstall.Date)" + exit $returnStateOK +} +Elseif ($DayslastInstall -lt $wldays) { + Write-Host "OK - Patches applied $DayslastInstalldate days ago at $($DatelastInstall.Date)" + exit $returnStateOK +} +Elseif ($DayslastInstall -lt $cldays) { + Write-Host "WARNING - Patches applied $DayslastInstalldate days ago $($DatelastInstall.Date)" + exit $returnStateWarning +} +Elseif ($DayslastInstall -gt $cldays) { + Write-Host "CRITICAL - Patches applied $DayslastInstalldate days ago $($DatelastInstall.Date)" + exit $returnStateCritical +} +Else { + Write-Host "UNKNOWN" + exit $returnStateUnknown +} +# } else { +else { + Write-Host "UNKNOWN - unable to get date of last Widows Update Installation" + exit $returnStateUnknown +} \ No newline at end of file diff --git a/NRPE/Check_wsus_critical_updates.ps1 b/NRPE/Check_wsus_critical_updates.ps1 new file mode 100644 index 0000000..d94be58 --- /dev/null +++ b/NRPE/Check_wsus_critical_updates.ps1 @@ -0,0 +1,52 @@ +# This is a little basic script I have written to query a WSUS server +# about the updates needed by the system. +# +# It will only return a Critical status if there are any Critical Security Updates, +# or Critical Updates waiting to be applied. +# +# I by no mean pretend to be a profesionnal scripter, so feel free +# to modify as you see fit! +# +# Written by: Alexandre Beauclair +# Date: April 12th 2012 + +#Declaring base variables. You can change the $wsusserver value if needed. +$wsusserver = "localhost" +$securityCritical = 0 +$criticalUpdates = 0 + +#Load required assemblies + +[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") + +#Create necessary objects + +$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($wsusserver,$False) +$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope + +#Specify we are looking for updates which are Not Approved, and Not Installed. + +$updatescope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::NotApproved +$updatescope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled + +#Find how many updates are available. + +$checkSecurityCritical = $wsus.GetUpdates($updatescope) | where {$_.UpdateClassificationTitle -eq "Security Updates"} | ft MsrcSeverity -AutoSize | FIND /c " Critical" +$checkCriticalUpdates = $wsus.GetUpdates($updatescope) | where {$_.UpdateClassificationTitle -eq "Critical Updates"} | ft UpdateClassificationTitle | FIND /c "Critical Updates" + +$securityCritical += $checkSecurityCritical +$criticalUpdates += $checkCriticalUpdates + + +#Return message and exit code accordingly. + +if(($securityCritical -gt 0) -or ($criticalUpdates -gt 0)){ + Write-Host "CRITICAL - There are updates waiting to be applied. Critical Updates: $criticalUpdates Critical Security Updates: $securityCritical" + exit 2 +}else{ + Write-Host "OK - There are no critical updates waiting to be applied." + exit 0 +} + + + diff --git a/NRPE/README.md b/NRPE/README.md new file mode 100644 index 0000000..5d22df6 --- /dev/null +++ b/NRPE/README.md @@ -0,0 +1,78 @@ +## Addon NRPE + +- Tout les sondes ci-dessous son à ajouter dans le fichier nsclient.ini +- Recherche la rubrique : `[/settings/external scripts/scripts]` + +## Partie Supervision : + +- Certificats-local.ps1
+**Description** : Controle l'expiration d'un ou plusieurs certificat se trouvant dansle même dossier.
+ + Check_ca=cmd /c echo C:\Exploit\Centreon\Certificats-local.ps1 | powershell.exe -command - + +- Check_win_last_update.ps1
+**Description** : + + Check_win_last_update=cmd /c echo C:\Exploit\Centreon\check_win_last_update.ps1 | powershell.exe -command - + +- WSTester.ps1
+**Description** : + + Check_WSTester=cmd /c echo C:\Exploit\Centreon\WSTester.ps1 | powershell.exe -command - + +- Dynamics-AX.ps1
+**Description** : Pour l'application Dynamics AX + + Check_DynamicsAX=cmd /c echo C:\Exploit\Centreon\Dynamics-AX.ps1 | powershell.exe -command - + +- Check-NetLbfoTeamMember.ps1
+**Description** : + + Check_TeamMember=cmd /c echo C:\Exploit\Centreon\Check-NetLbfoTeamMember.ps1 | powershell.exe -command - + +- Check_diskdefragstatus.ps1
+**Description** : + + Check_Defrag=cmd /c echo C:\Exploit\Centreon\check_diskdefragstatus.ps1 -warning 15 -critical 30 | powershell.exe -command - + +- Check_iis.ps1
+**Description** : + + Check_IIS=cmd /c echo C:\Exploit\Centreon\check_iis.ps1 | powershell.exe -command - + +- Check_IISPerformance_State.ps1
+**Description** : + + Check_iisperformance_state=cmd /c echo C:\Exploit\Centreon\Check_IISPerformance_State.ps1 -WebSite $ARG1$ | powershell.exe -command - + +- Check_iis8_app_pool_state.ps1
+**Description** : + + Check_IIS8_AppPool=cmd /c echo C:\Exploit\Centreon\check_iis8_app_pool_state.ps1 $ARG1$ | powershell.exe -command - + +- Check_iis8_connections.ps1
+**Description** : + + Check_IIS8_Connexions=cmd /c echo C:\Exploit\Centreon\check_iis8_connections.ps1 $ARG1$ $ARG2$ $ARG3$ | powershell.exe -command - + +- Check_iis8_site.ps1
+**Description** : + + Check_IIS8_SiteWeb=cmd /c echo C:\Exploit\Centreon\check_iis8_site.ps1 $ARG1$ | powershell.exe -command - + +## Partie Hypervision : + +- Task-kill-Process.ps1
+**Description** : Permet de couper un process si une alerte définie est atteinte + + Task_Kill_Process=cmd /c echo C:\Exploit\Centreon\Task-kill-Process.ps1 $ARG1$ | powershell.exe -command - + +- Task-Restart-Service.ps1
+**Description** : Relance d'un service + + Task_Restart_Service=cmd /c echo C:\Exploit\Centreon\Task-Restart-Service.ps1 $ARG1$ | powershell.exe -command - + +- Task-Defrag.ps1
+**Description** : Lance une défragmentation en cas d'alerte + + Task_Defrag=cmd /c echo C:\Exploit\Centreon\Task_defrag.ps1 | powershell.exe -command - diff --git a/NRPE/Task-Defrag.ps1 b/NRPE/Task-Defrag.ps1 new file mode 100644 index 0000000..cd6f2b0 --- /dev/null +++ b/NRPE/Task-Defrag.ps1 @@ -0,0 +1,54 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : 18/11/2022 + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Task-Defrag.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +defrag /C + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/NRPE/Task-Kill-Process.ps1 b/NRPE/Task-Kill-Process.ps1 new file mode 100644 index 0000000..1eccb81 --- /dev/null +++ b/NRPE/Task-Kill-Process.ps1 @@ -0,0 +1,60 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : 18/11/2022 + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +[CmdletBinding()] +Param( + [Parameter(Mandatory=$True,Position=1)] + [int]$ProcessKill + ) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Task-Kill-Process.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +taskkill /im $ProcessKill /f + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/NRPE/Task-Restart-Service.ps1 b/NRPE/Task-Restart-Service.ps1 new file mode 100644 index 0000000..851c6f5 --- /dev/null +++ b/NRPE/Task-Restart-Service.ps1 @@ -0,0 +1,72 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +[CmdletBinding()] +Param( + [Parameter(Mandatory=$True,Position=1)] + [int]$ServiceName + ) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Task-Restart-Service.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +Foreach ($Service in $ServiceName) { + Restart-Service $ServiceName -ErrorAction SilentlyContinue -ErrorVariable ServiceError + + If (!$ServiceError) { + $Time=Get-Date + Write-Host "Redémarrage du service $Service à $Time" + } + + If ($ServiceError) { + write-host $error[0] + exit 3 + } +} + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/NRPE/check-sql-listusers.ps1 b/NRPE/check-sql-listusers.ps1 new file mode 100644 index 0000000..ab71b7a --- /dev/null +++ b/NRPE/check-sql-listusers.ps1 @@ -0,0 +1,61 @@ +Function QuerySQLServer([string]$DBServer, [string]$DBName, [string]$Query) { + Try { + $ErrorActionPreference = "Stop" + + $resultsDataTable = New-Object System.Data.DataTable + + $cn = new-object System.Data.SqlClient.SqlConnection("Data Source=$DBServer;Integrated Security=SSPI;Initial Catalog=$DBName") + $cn.open() + + $cmd = new-object "System.Data.SqlClient.SqlCommand" ($Query , $cn) + $reader = $cmd.ExecuteReader() + + $resultsDataTable.Load($reader) + + $cn.Close() + + return $resultsDataTable + } + Catch { + write-host $_.Exception.Message + $_.Exception.Message >> "d:\error.log" + } + Finally { + $ErrorActionPreference = "Continue" + } +} + +cls + +$bReturnOK = $TRUE +$bReturnCritical = $FALSE +$bReturnWarning = $FALSE +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$strCritical = "" +$strWarning = "" +$DataTexte = "" + +$ComputerName = $env:COMPUTERNAME + +$Liste = QuerySQLServer "$ComputerName" "dhb_prd" "SELECT A.session_id, Db_Name(database_id) AS [database], DateDiff(MINUTE, A.connect_time, GetDate()) AS [Connected (mins)], num_reads, num_writes, login_name, Text AS SQL FROM sys.dm_exec_connections AS A INNER JOIN sys.dm_exec_sessions AS B ON A.session_id = B.session_id INNER JOIN sys.sysprocesses AS s ON s.spid = A.session_id OUTER APPLY::fn_get_sql(sql_handle)" +$Liste | Format-Table | Out-String|% {Write-Host $_} + +$DataTexte = $Liste.login_name + +If ($bReturnCritical) { + write-output $strCritical + write-output $strWarning "|" $DataTexte + exit $returnStateCritical +} +Elseif ($bReturnWarning) { + write-output $strWarning "|" $DataTexte + exit $returnStateWarning +} +Else { + write-output "OK - Nombre de requete en cours : $DataTexte | 'NbrequetesEnCours'=$DataTexte " + exit $returnStateOK +} \ No newline at end of file diff --git a/NRPE/check-sql-monitoring.ps1 b/NRPE/check-sql-monitoring.ps1 new file mode 100644 index 0000000..bba1ec1 --- /dev/null +++ b/NRPE/check-sql-monitoring.ps1 @@ -0,0 +1,62 @@ +Function QuerySQLServer([string]$DBServer, [string]$DBName, [string]$Query) { + Try { + $ErrorActionPreference = "Stop" + + $resultsDataTable = New-Object System.Data.DataTable + + $cn = new-object System.Data.SqlClient.SqlConnection("Data Source=$DBServer;Integrated Security=SSPI;Initial Catalog=$DBName") + $cn.open() + + $cmd = new-object "System.Data.SqlClient.SqlCommand" ($Query , $cn) + $reader = $cmd.ExecuteReader() + + $resultsDataTable.Load($reader) + + $cn.Close() + + return $resultsDataTable + } + Catch { + write-host $_.Exception.Message + $_.Exception.Message >> "d:\error.log" + } + Finally { + $ErrorActionPreference = "Continue" + } +} + +cls + +$bReturnOK = $TRUE +$bReturnCritical = $FALSE +$bReturnWarning = $FALSE +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$strCritical = "" +$strWarning = "" +$DataTexte = "" + +$ComputerName = $env:COMPUTERNAME + +$Liste = QuerySQLServer "$ComputerName" "dhb_prd" "SELECT wait_type ,wait_time_ms ,CONVERT(DECIMAL(7,4),100.0 * wait_time_ms/SUM(wait_time_ms) OVER()) AS wait_percent FROM sys.dm_os_wait_stats WHERE wait_type NOT IN ('CLR_SEMAPHORE','LAZYWRITER_SLEEP','RESOURCE_QUEUE','SLEEP_TASK' ,'SLEEP_SYSTEMTASK','SQLTRACE_BUFFER_FLUSH','WAITFOR', 'LOGMGR_QUEUE','CHECKPOINT_QUEUE' ,'REQUEST_FOR_DEADLOCK_SEARCH','XE_TIMER_EVENT','BROKER_TO_FLUSH','BROKER_TASK_STOP', 'CLR_MANUAL_EVENT','CLR_AUTO_EVENT','DISPATCHER_QUEUE_SEMAPHORE', 'FT_IFTS_SCHEDULER_IDLE_WAIT', 'XE_DISPATCHER_WAIT', 'XE_DISPATCHER_JOIN')" # -- filtrage de quelques types d'attente ORDER BY wait_percent DESC GO" +$Liste | Format-Table | Out-String|% {Write-Host $_} + +pause +$DataTexte = $Liste.waiting_tasks_count+$Liste.wait_time_ms+$Liste.max_wait_time_ms+$Liste.signal_wait_time_ms + +If ($bReturnCritical) { + write-output $strCritical + write-output $strWarning "|" $DataTexte + exit $returnStateCritical +} +Elseif ($bReturnWarning) { + write-output $strWarning "|" $DataTexte + exit $returnStateWarning +} +Else { + write-output "OK - Nombre de requete en cours : $DataTexte | 'NbrequetesEnCours'=$DataTexte " + exit $returnStateOK +} \ No newline at end of file diff --git a/NRPE/check-sql-nbrrequeteencour.ps1 b/NRPE/check-sql-nbrrequeteencour.ps1 new file mode 100644 index 0000000..54b77a9 --- /dev/null +++ b/NRPE/check-sql-nbrrequeteencour.ps1 @@ -0,0 +1,60 @@ +Function QuerySQLServer([string]$DBServer, [string]$DBName, [string]$Query) { + Try { + $ErrorActionPreference = "Stop" + + $resultsDataTable = New-Object System.Data.DataTable + + $cn = new-object System.Data.SqlClient.SqlConnection("Data Source=$DBServer;Integrated Security=SSPI;Initial Catalog=$DBName") + $cn.open() + + $cmd = new-object "System.Data.SqlClient.SqlCommand" ($Query , $cn) + $reader = $cmd.ExecuteReader() + + $resultsDataTable.Load($reader) + + $cn.Close() + + return $resultsDataTable + } + Catch { + write-host $_.Exception.Message + $_.Exception.Message >> "d:\error.log" + } + Finally { + $ErrorActionPreference = "Continue" + } +} + +cls + +$bReturnOK = $TRUE +$bReturnCritical = $FALSE +$bReturnWarning = $FALSE +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 + +$strCritical = "" +$strWarning = "" +$DataTexte = "" + +$ComputerName = $env:COMPUTERNAME + +$Liste = QuerySQLServer "$ComputerName" "dhb_prd" "SELECT count(r.session_id) as NbrequetesEnCours FROM sys.dm_exec_requests r join sys.dm_exec_sessions ses on ses.session_id = r.session_id CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t CROSS APPLY sys.dm_exec_query_plan(r.plan_handle) AS p" + +$DataTexte = $Liste.NbrequetesEnCours + +If ($bReturnCritical) { + write-output $strCritical + write-output $strWarning "|" $DataTexte + exit $returnStateCritical +} +Elseif ($bReturnWarning) { + write-output $strWarning "|" $DataTexte + exit $returnStateWarning +} +Else { + write-output "OK - Nombre de requete en cours : $DataTexte | 'NbrequetesEnCours'=$DataTexte " + exit $returnStateOK +} \ No newline at end of file diff --git a/NRPE/check_veeam_endpointbackup.ps1 b/NRPE/check_veeam_endpointbackup.ps1 new file mode 100644 index 0000000..99c09a4 --- /dev/null +++ b/NRPE/check_veeam_endpointbackup.ps1 @@ -0,0 +1,211 @@ +# Script name: check_veeam_endpoint_eventlogs.ps1 +# Version: 1.0 +# Created on: 1May2016 +# Author: Dallas Haselhorst +# Purpose: Check Veeam Endpoint Backup success or failure via event logs +# +# Note: This is for monitoring Endpoint. Veeam Endpoint only allows for a single +# job. If multiple jobs must be monitored, there is a separate script called +# check_veeam_eventlogs.ps1 also found on Nagios Exchange +# +# Note: does NOT use PowerShell plug-in +# +# Copyright: +# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published +# by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed +# in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public +# License along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# For Nagios XI NCPA usage, the following line should be copied to the $ARG1$ text box +# -t '<token>' -P <port number> -M 'agent/plugin/check_veeam_endpoint_eventlogs.ps1/<ArgBackupJobName>/<ArgLastHours> +# +# For testing from the Nagios command line, add './check_ncpa.py -H <IP address>' to the above line +# ArgBackupJobName is required. +# ArgLastMinutes should be populated with the time to check in minutes, e.g. 60 (for 1 hour), 120 (for 2 hours), +# +# Examples +# -t 'TokenPass' -P 5693 -M 'agent/plugin/check_veeam_endpoint_eventlogs.ps1/24' +# -- above line would check the last 24 hours of Veeam Endpoint Backup logs + + +# Pull in arguments +$ArgLogName = "Veeam Agent" # veeam backup event log +$ArgEntryType = 1,2,3,4 # look for critical, error, warning and informational logs +$ArgProviderName = "Veeam Agent" +$ArgEventID = 190 # backup job complete event id + +$ArgLastHours = $args[0] + + +# Setting default values if null +if (!$ArgLastHours) { $ArgLastHours = (24) } +if (!$ArgWarningTH) { $ArgWarningTH = 0 } +if (!$ArgCriticalTH) { $ArgCriticalTH = 0 } +if (!$ArgMaxEntries) { $ArgMaxEntries = 50 } + +$CriticalErrorResultCount = 0 +$WarningResultCount = 0 +$InfoResultCount = 0 +$EventTypeLoopCount = 0 +$LogNameLoopCount = 0 +$ProviderNameLoopCount = 0 +$EventIDLoopCount = 0 + +$Properties='Level','Message','ProviderName','TimeCreated','Id' + +$Filter = @{ + LogName = $ArgLogName + StartTime = (Get-Date).AddHours(-$ArgLastHours) +} + +if($ArgProviderName) { $Filter += @{ProviderName = $ArgProviderName } } +if($ArgEventID) { $Filter += @{Id = $ArgEventID } } +if($ArgEntryType) { $Filter += @{Level = $ArgEntryType } } + +# -ea SilentlyContinue gets rid of non-terminating error resulting from zero events +$LogEntries = Get-WinEvent -MaxEvents $ArgMaxEntries -FilterHashtable $Filter -ea SilentlyContinue -Oldest | Select-Object -Property $Properties + +if ($LogEntries) { + + ForEach ($LogEntry in $LogEntries) { + if ($LogEntry.Message.ToString() -like "*Veeam Agent*") + { + $Level=$LogEntry.Level.ToString() + if (($Level -eq 1) -Or ($Level -eq 2)) # find critical and errors + { + $Message=$LogEntry.Message.Substring(0,[System.Math]::Min(180, $LogEntry.Message.Length)).TrimEnd().ToString() + $ProviderName=$LogEntry.ProviderName.ToString() + $TimeCreated=$LogEntry.TimeCreated.ToString() + $Id=$LogEntry.Id.ToString() + $CriticalErrorResultCount++ + + $CriticalErrorResults=@" + +At: $TimeCreated +Level: $Level +Event ID: $Id +Message: $Message +Source: $ProviderName +$CriticalErrorResults +"@ + } + elseif ($Level -eq 3) # find warnings + { + $Message=$LogEntry.Message.Substring(0,[System.Math]::Min(180, $LogEntry.Message.Length)).TrimEnd().ToString() + $ProviderName=$LogEntry.ProviderName.ToString() + $TimeCreated=$LogEntry.TimeCreated.ToString() + $Id=$LogEntry.Id.ToString() + $WarningResultCount++ + + $WarningResults=@" + +At: $TimeCreated +Level: $Level +Event ID: $Id +Message: $Message +Source: $ProviderName +$WarningResults +"@ + } + else # all that's left, find info (4) messages + { + $Message=$LogEntry.Message.Substring(0,[System.Math]::Min(180, $LogEntry.Message.Length)).TrimEnd().ToString() + $ProviderName=$LogEntry.ProviderName.ToString() + $TimeCreated=$LogEntry.TimeCreated.ToString() + $Id=$LogEntry.Id.ToString() + $InfoResultCount++ + + $InfoResults=@" + +At: $TimeCreated +Level: $Level +Event ID: $Id +Message: $Message +Source: $ProviderName +$InfoResults +"@ + } + } + +} + +} + +$Results= @" +$CriticalErrorResults $WarningResults $InfoResults +"@ + +if ($ArgEntryType) { +$TypeArray = @("all level","critical","error","warning","informational") +$LevelString = foreach ($Entry in $ArgEntryType) { + if ($ArgEntryType.Count -gt 1) { + $LevelStringBuild = $TypeArray[$Entry] + if ($ArgEntryType.Count -ne $EventTypeLoopCount+1) { + $LevelStringBuild +="," + } + } + + else { $LevelStringBuild = $TypeArray[$Entry] } + $EventTypeLoopCount++ + $LevelStringBuild + } +} + +$LogNameString = foreach ($LogNameEntry in $ArgLogName) { + $LogNameStringBuild += $LogNameEntry + if ($ArgLogName.Count -gt 1 -And $ArgLogName.Count -ne $LogNameLoopCount+1) { + $LogNameStringBuild += ", " + } + $LogNameLoopCount++ + } + +$ProviderNameString = foreach ($ProviderNameEntry in $ArgProviderName) { + $ProviderNameStringBuild += $ProviderNameEntry + if ($ArgProviderName.Count -gt 1 -And $ArgProviderName.Count -ne $ProviderNameLoopCount+1) { + $ProviderNameStringBuild += ", " + } + $ProviderNameLoopCount++ + } + +$EventIDString = foreach ($EventIDEntry in $ArgEventID) { + $EventIDStringBuild += "$EventIDEntry" + if ($ArgEventID.Count -gt 1 -And $ArgEventID.Count -ne $EventIDLoopCount+1) { + $EventIDStringBuild += ", " + } + $EventIDLoopCount++ + } + +If ($CriticalErrorResultCount -gt 0) { + $ResultString += "Backup failed: $CriticalErrorResultCount critical error(s) for backup job in last $ArgLastHours hours " + $NagiosMetricString += "'Errors'=$CriticalErrorResultCount 'BackupUnknown'=1 " + $ExitCode = 1 + } + +If ($WarningResultCount -gt 0) { + $ResultString += "Warning: backup job had $WarningResultCount warning message(s) in the last $ArgLastHours hours " + If ($ExitCode -ne 1) { + $NagiosMetricString += "'BackupUnknown'=1 " + $ExitCode = 1 + } + $NagiosMetricString += "'Warnings'=$WarningResultCount " + + } + +If (($InfoResultCount -lt 1) -And ($ExitCode -ne 1)) { + $ResultString += "Backup failed: backup job has not run in last $ArgLastHours hours " + $NagiosMetricString += "'BackupNotRun'=1 " + If ($ExitCode -ne 1) { $ExitCode = 1 } + } + +If (($InfoResultCount -ge 1) -And ($CriticalErrorResultCount -eq 0 ) -And ($WarningResultCount -eq 0 )){ + $ResultString += "OK: backup job completed successfully in last $ArgLastHours hours " + $NagiosMetricString = "'BackupSuccess'=1 " + $ExitCode = 0 + } + + write-host $ResultString + write-host $Results + write-host $ResultString"|"$NagiosMetricString + exit $ExitCode + diff --git a/NRPE/check_windows_updates.ps1 b/NRPE/check_windows_updates.ps1 new file mode 100644 index 0000000..c2d62ae --- /dev/null +++ b/NRPE/check_windows_updates.ps1 @@ -0,0 +1,173 @@ +################################################################################# +# +# NAME: check_windows_updates.ps1 +# +# COMMENT: Script to check for windows updates with Nagios + NRPE/NSClient++ +# +# Checks: +# - how many critical and optional updates are available +# - whether the system is waiting for reboot after installed updates +# +# Features: +# - properly handles NRPE's 1024b limitation in return packet +# - configurable return states for pending reboot and optional updates +# - performance data in return packet shows titles of available critical updates +# - caches updates in file to reduce network traffic, also dramatically increases script execution speed +# +# Return Values for NRPE: +# No updates available - OK (0) +# Only Hidden Updates - OK (0) +# Updates already installed, reboot required - WARNING (1) +# Optional updates available - WARNING (1) +# Critical updates available - CRITICAL (2) +# Script errors - UNKNOWN (3) +# +# NRPE Handler to use with NSClient++: +# [NRPE Handlers] +# check_updates=cmd /c echo scripts\check_windows_updates.ps1 $ARG1$ $ARG2$; exit $LastExitCode | powershell.exe -command - +# +# +# IMPORTANT: Please make absolutely sure that your Powershell ExecutionPolicy is set to Remotesigned. +# Also note that there are two versions of powershell on a 64bit OS! Depending on the architecture +# of your NSClient++ version you have to choose the right one: +# +# 64bit NSClient++ (installed under C:\Program Files ): +# %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe "Set-ExecutionPolicy RemoteSigned" +# +# 32bit NSClient++ (installed under C:\Program Files (x86) ): +# %SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe "Set-ExecutionPolicy RemoteSigned" +# +# +# CHANGELOG: +# 1.45 2016-08-05 - corrected some typos, added newline after each critical update +# 1.44 2016-04-05 - performance data added +# 1.42 2015-07-20 - strip unwanted characters from returnString +# 1.41 2015-04-24 - removed wuauclt /detectnow if updates available +# 1.4 2015-01-14 - configurable return state for pending reboot +# 1.3 2013-01-04 - configurable return state for optional updates +# 1.2 2011-08-11 - cache updates, periodically update cache file +# 1.1 2011-05-11 - hidden updates only -> state OK +# - call wuauctl.exe to show available updates to user +# 1.0 2011-05-10 - initial version +# +################################################################################# +# Copyright (C) 2011-2015 Christian Kaufmann, ck@tupel7.de +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, see . +################################################################################# + +$htReplace = New-Object hashtable +foreach ($letter in (Write-Output ä ae ö oe ü ue Ä Ae Ö Oe Ü Ue ß ss)) { + $foreach.MoveNext() | Out-Null + $htReplace.$letter = $foreach.Current +} +$pattern = "[$(-join $htReplace.Keys)]" + +$returnStateOK = 0 +$returnStateWarning = 1 +$returnStateCritical = 2 +$returnStateUnknown = 3 +$returnStatePendingReboot = $returnStateWarning +$returnStateOptionalUpdates = $returnStateWarning + +$updateCacheFile = "check_windows_updates-cache.xml" +$updateCacheExpireHours = "24" + +$logFile = "check_windows_update.log" + +function LogLine( [String]$logFile = $(Throw 'LogLine:$logFile unspecified'), + [String]$row = $(Throw 'LogLine:$row unspecified')) { + $logDateTime = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' + Add-Content -Encoding UTF8 $logFile ($logDateTime + " - " + $row) +} + +if (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"){ + Write-Host "updates installed, reboot required" + if (Test-Path $logFile) { + Remove-Item $logFile | Out-Null + } + if (Test-Path $updateCacheFile) { + Remove-Item $updateCacheFile | Out-Null + } + exit $returnStatePendingReboot +} + +if (-not (Test-Path $updateCacheFile)) { + LogLine -logFile $logFile -row ("$updateCacheFile not found, creating....") + $updateSession = new-object -com "Microsoft.Update.Session" + $updates=$updateSession.CreateupdateSearcher().Search(("IsInstalled=0 and Type='Software'")).Updates + Export-Clixml -InputObject $updates -Encoding UTF8 -Path $updateCacheFile +} + +if ((Get-Date) -gt ((Get-Item $updateCacheFile).LastWriteTime.AddHours($updateCacheExpireHours))) { + LogLine -logFile $logFile -row ("update cache expired, updating....") + $updateSession = new-object -com "Microsoft.Update.Session" + $updates=$updateSession.CreateupdateSearcher().Search(("IsInstalled=0 and Type='Software'")).Updates + Export-Clixml -InputObject $updates -Encoding UTF8 -Path $updateCacheFile +} else { + LogLine -logFile $logFile -row ("using valid cache file....") + $updates = Import-Clixml $updateCacheFile +} + +$criticalTitles = ""; +$countCritical = 0; +$countOptional = 0; +$countHidden = 0; + +if ($updates.Count -eq 0) { + Write-Host "OK - no pending updates.|critical=$countCritical;optional=$countOptional;hidden=$countHidden" + exit $returnStateOK +} + +foreach ($update in $updates) { + if ($update.IsHidden) { + $countHidden++ + } + elseif ($update.AutoSelectOnWebSites) { + $criticalTitles += $update.Title + " `n" + $countCritical++ + } else { + $countOptional++ + } +} +if (($countCritical + $countOptional) -gt 0) { + $returnString = "Updates: $countCritical critical, $countOptional optional" + [Environment]::NewLine + "$criticalTitles" + $returnString = [regex]::Replace($returnString, $pattern, { $htReplace[$args[0].value] }) + + # 1024 chars max, reserving 48 chars for performance data -> + if ($returnString.length -gt 976) { + Write-Host ($returnString.SubString(0,975) + "|critical=$countCritical;optional=$countOptional;hidden=$countHidden") + } else { + Write-Host ($returnString + "|critical=$countCritical;optional=$countOptional;hidden=$countHidden") + } +} + +#if ($countCritical -gt 0 -or $countOptional -gt 0) { +# Start-Process "wuauclt.exe" -ArgumentList "/detectnow" -WindowStyle Hidden +#} + +if ($countCritical -gt 0) { + exit $returnStateCritical +} + +if ($countOptional -gt 0) { + exit $returnStateOptionalUpdates +} + +if ($countHidden -gt 0) { + Write-Host "OK - $countHidden hidden updates.|critical=$countCritical;optional=$countOptional;hidden=$countHidden" + exit $returnStateOK +} + +Write-Host "UNKNOWN script state" +exit $returnStateUnknown \ No newline at end of file diff --git a/OneDrive/Init-OneDrive.ps1 b/OneDrive/Init-OneDrive.ps1 new file mode 100644 index 0000000..2aa015e --- /dev/null +++ b/OneDrive/Init-OneDrive.ps1 @@ -0,0 +1,11 @@ +#Récupérer la liste de utilisateurs depuis un fichier +$users = Get-Content -path "C:\Users.txt" + +#Récupérer tous les utilsiateurs +$users = Get-MsolUser -All | Where-Object { $_.islicensed -eq $true } + +#Provisionner OneDrive pour les utilisateurs (limite de 100 environ) +Request-SPOPersonalSite -UserEmails $users + +#Pour un plus grand nombre d'utilisateurs +#https://docs.microsoft.com/fr-fr/onedrive/pre-provision-accounts \ No newline at end of file diff --git a/OneDrive/README.md b/OneDrive/README.md new file mode 100644 index 0000000..53a507b --- /dev/null +++ b/OneDrive/README.md @@ -0,0 +1 @@ +# OneDrive diff --git a/Opcon/Daily Jobs To Html/DailyJobsToHtml-V0.ps1 b/Opcon/Daily Jobs To Html/DailyJobsToHtml-V0.ps1 new file mode 100644 index 0000000..4ec6818 --- /dev/null +++ b/Opcon/Daily Jobs To Html/DailyJobsToHtml-V0.ps1 @@ -0,0 +1,327 @@ + + +param( + [string] $OpScheduleDate = "", + [string] $OpJobStatus = "", + [string] $OpConUser = "ocadm", + [string] $OpConPassword, + [string] $ServerUrl = "https://10.78.56.27:443" + ) + + + +function Ignore-SelfSignedCerts { + add-type -TypeDefinition @" + using System.Net; + using System.Security.Cryptography.X509Certificates; + public class TrustAllCertsPolicy : ICertificatePolicy { + public bool CheckValidationResult( + ServicePoint srvPoint, X509Certificate certificate, + WebRequest request, int certificateProblem) { + return true; + } + } +"@ + [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy +} + + +function Invoke-OpConRestMethod { + param( + [ValidateNotNullorEmpty()] + [String]$Uri, + [ValidateNotNullorEmpty()] + [String]$Method, + [object]$Body = $null + ) + + + if (!$Global:OpconRESTApiUrl -or !$Global:OpconRESTApiAuthHeader) + { + Write-Warning "No values for Opcon REST Api. Please use Logon-OpConApi before using cmdlet." + throw [System.Exception] "Invalid OpCon REST API Values" + } + + + $uri = $Global:OpconRESTApiUrl + $Uri + + Write-Verbose("Sending Web Request...") + try + { + if ($Body -eq $null) + { + $response = Invoke-RestMethod -Method $Method -Uri $uri -Headers $Global:OpconRESTApiAuthHeader -ErrorVariable $RestException + } + else + { + $Body = ConvertTo-Json $Body -Depth 99 + $response = Invoke-RestMethod -Method $Method -Uri $uri -Headers $Global:OpconRESTApiAuthHeader -Body $Body -ContentType 'application/json; charset=utf-8' -ErrorVariable $RestException + } + Write-Verbose ("`n") + Write-Verbose("RESPONSE:") + Write-Verbose(ConvertTo-Json $response -Depth 9) + return $response + } + catch + { + Write-Warning ("Error") + Write-Warning ("StatusCode: " + $_.Exception.Response.StatusCode.value__) + Write-Warning ("StatusDescription: " + $_.Exception.Response.StatusDescription) + $opconApiError = ConvertFrom-Json $_.ErrorDetails.Message + Write-Warning ("ErrorCode: " + $opconApiError.code) + Write-Warning ("ErrorMessage: " + $opconApiError.message) + throw + ##exit $_.Exception.Response.StatusCode.value__ + } +} + + +function Get-OpConApiToken { +[cmdletbinding()] +param( + [string] $Url, + [string] $User, + [string] $Password + ) +$tokensUri = -join($Url, "/api/tokens") +Write-Host ("Retrieving authorization token...") +Write-Host ("Uri: " + $tokensUri) +Write-Host ("User: " + $User) +$tokenObject = @{ + user = @{ + loginName = $User + password = $Password + } + tokenType = @{ + type = "User" + } +} +try +{ + Ignore-SelfSignedCerts + #$token = Invoke-RestMethod -Method Post -Uri $tokensUri -Body (ConvertTo-Json $tokenObject) -ContentType 'application/json; charset=utf-8' -ErrorVariable $RestException -SkipCertificateCheck + $token = Invoke-RestMethod -Method Post -Uri $tokensUri -Body (ConvertTo-Json $tokenObject) -ContentType 'application/json; charset=utf-8' -ErrorVariable $RestException +} +catch +{ + ## $error = ConvertFrom-Json $RestException.ErrorDetails.Message + ##Write-Host ("Unable to fetch token for user '" + $user + "'") + ##Write-Host ("Error Code: " + $error.code) + ##Write-Host ("Message: " + $error.message) + Write-Host ("StatusCode: " + $_.Exception.Response.StatusCode.value__) + Write-Host ("StatusDescription: " + $_.Exception.Response.StatusDescription) + Write-Host ("Message: " + $_[0].message) + ##$Global:OpConRESTAPIException = $_ + throw + ##exit $_.Exception.Response.StatusCode.value__ +} +Write-Host ("Token retrieved successfully, Id: " + $token.id + ", Valid Until: " + $token.validUntil) +return $token +} + + +function Get-OpConApiAuthHeader { +param( + [string] $Token + ) + $authHeader = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $authHeader.Add("Authorization", ("Token " + $Token)) + return $authHeader +} + + + +function Login-RestApi { +[cmdletbinding()] +param( + [string] $ApiUrl, + [string] $OpConUser, + [string] $OpConPassword + ) + + + Write-Verbose ("Parameters =") + Write-Verbose ("ApiUrl: " + $ApiUrl) + Write-Verbose ("OpConUser: " + $OpConUser) + Write-Verbose ("OpConPassword: (hidden)") + + + $ApiUrl = $ApiUrl.ToLower().TrimEnd("/").TrimEnd("/api") + + + Write-Host ("Logging in to OpCon REST API: " + $ApiUrl) + + + $Global:OpconRESTApiUrl = $ApiUrl + $Global:OpconRESTApiUser = $OpConUser + $Global:OpConRESTApiPassword = $OpConPassword + $token = Get-OpConApiToken -Url $ApiUrl -User $OpConUser -Password $OpConPassword + $Global:OpconRESTApiToken = $token.id + + + $Global:OpconRESTApiAuthHeader = Get-OpConApiAuthHeader -Token $token.id + Write-Host ('Token successfully stored for future calls in session.') +} + + + function GetJobListToUpdateInTrances + { + [cmdletbinding()] + param( + [string] $Status, + [string] $Dates, + [string] $JobType + ) + + $offset =0; # start from + $size=0; # number of jobs retrieved each call + $limit=1000; # max number of record x trance + $jobListFull = New-Object System.Collections.Generic.List[System.Object] + + + Write-Host ("===> Start retrieving jobs in trances of $limit ") + + + do{ + $jobUri = -join($Url, "/api/dailyJobs/?dates=$Dates&scheduleIds=$($daily.id)&status=$Status&jobType=$JobType&limit=$limit&offset=$offset") + #$jobUri = -join($Url, "/api/dailyJobs/?dates=$Dates&scheduleIds=$($daily.id)&jobType=$JobType&limit=$limit&offset=$offset") + $jobResponse = Invoke-OpConRestMethod -Uri $jobUri -Method GET -ContentType "application/json"-Headers $Global:OpconRESTApiAuthHeader -ErrorVariable $RestException; + #Write-Host ("Job URI : $($jobUri)") + + Foreach($job in $jobResponse) + { + #$entry= "$($job.schedule.name) - $($job.id)" + $jobListFull.Add($job) + #$jobListFull.Add(@{id = $job.id}) + #Write-Host ("Job name : $($job.id)") + } + + + $size = $jobResponse.Length; + $jobListFullsize = $jobListFull.Count + Write-Host ("Partial/Total retrieved n.: $size/$jobListFullsize") + + $offset+=$limit; + if ($size -lt $limit) + { + $size = 0; + } + # If is necessary a delay between calls uncomment and tune the line below + # Start-Sleep -s 5 + }While ($size -gt 0) + + + if ($jobListFull.Count -gt 0) + { + Write-host ("Total jobs retrieved : $($jobListFull.Count)") + } + + return, $jobListFull +} + + +function TryParseDate{ + [cmdletbinding()] + param( + [object] $inDate, + [string] $format + ) + $outDate = "" + try { + $outDate =[datetime]::parseexact($($inDate), $($format),$null) + } + catch { + $outDate = "?" + } + return $outDate +} + + + + function DisplayDailyJobs + { + [cmdletbinding()] + param( + [string] $Status, + [string] $Action, + [string] $Dates, + [string] $JobType + ) + + #Get job list to update in trances + $jobList = GetJobListToUpdateInTrances -Status $Status -Dates $Dates -JobType $JobType + + #$lst = jobList.chunked(3) + + Foreach($job in $jobList) + { + #Write-Host ("Schedule: $($job.schedule.name) Job : $($job.name)") + + #$dt = [datetime]::parseexact($($job.schedule.date), 'yyyy-MM-ddTHH:mm:ss.fffffffzzz',$null) + $dt = TryParseDate -inDate $job.schedule.date -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + $StartTimeProgrammed = TryParseDate -inDate $job.computedStartTime.ProgrammedFor -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + + $StartTimeTime =TryParseDate -inDate $job.computedStartTime.time -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + $StartTimeTimeEstimated = "" + if ($job.computedStartTime.isEstimated -contains "True") { + $StartTimeTimeEstimated = "*" + } + + $EndTimeProgrammed = TryParseDate -inDate $job.computedEndTime.ProgrammedFor -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + $EndTimeTime = TryParseDate -inDate $job.computedEndTime.time -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + $EndTimeTimeEstimated = "" + if ($job.computedEndTime.isEstimated -contains "True") { + $EndTimeTimeEstimated = "*" + } + + $DurationEstimated = "" + if ($job.computedDuration.isEstimated -contains "True") { + $DurationEstimated = "*" + } + + $DateStr = $dt.ToString("dd/MM/yyyy") + + $htmlCellStyle = "" + if ($job.status.description -contains "Failed") { + $htmlCellStyle = "style='background:#FF0000'" + } + + $dataRow = " + + $($DateStr) + $($job.schedule.name) + $($job.name) + $($job.primaryMachine.name) + $($job.jobType.description) + $($job.status.description) + $($StartTimeProgrammed) + $($EndTimeProgrammed) + $($StartTimeTime) $($StartTimeTimeEstimated) + $($EndTimeTime) $($EndTimeTimeEstimated) + $($job.computedDuration.duration/1000/60) $($DurationEstimated) + " + + $FinalData += $datarow + } + + + (Get-Content -path HtmlTemplate.html -Raw) -replace 'ROWS_PLACE_HOLDER',$FinalData | Out-File -FilePath outfile.html +} + + +$SecPass = $null; +$clearPassword = "" +if ($OpConPassword.Length -eq 0 ) { + $SecPass = Read-Host 'What is your password?' -AsSecureString + $clearPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto( + [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecPass)) +} +else { + $clearPassword = $OpConPassword +} + +Login-RestApi -ApiUrl $ServerUrl -OpConUser $OpConUser -OpConPassword $clearPassword + +DisplayDailyJobs -Status $OpJobStatus -Dates $OpScheduleDate -JobType "" + +.\outfile.html \ No newline at end of file diff --git a/Opcon/Daily Jobs To Html/DailyJobsToHtml.ps1 b/Opcon/Daily Jobs To Html/DailyJobsToHtml.ps1 new file mode 100644 index 0000000..2603ee1 --- /dev/null +++ b/Opcon/Daily Jobs To Html/DailyJobsToHtml.ps1 @@ -0,0 +1,525 @@ +############# +# +# Auteur : Hubert Cornet +# date : 13 avril 2022 +# +# description du script : intrroge l'API d'OPCON +# +############# + +# Variable et argment dans le lancement du script +Param( + [string] $OpScheduleDate = "", + [string] $OpJobStatus = "", + [string] $OpConUser = "ocadm", + [string] $OpConPassword, + [string] $ServerUrl = "https://10.78.56.27:443" + ) + +clear + +# Fonction +Function Ignore-SelfSignedCerts { + add-type -TypeDefinition @" + using System.Net; + using System.Security.Cryptography.X509Certificates; + public class TrustAllCertsPolicy : ICertificatePolicy { + public bool CheckValidationResult( + ServicePoint srvPoint, X509Certificate certificate, + WebRequest request, int certificateProblem) { + return true; + } + } +"@ + [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy +} + +# +Function Invoke-OpConRestMethod { + Param( + [ValidateNotNullorEmpty()] + [String]$Uri, + [ValidateNotNullorEmpty()] + [String]$Method, + [object]$Body = $null + ) + + If (!$Global:OpconRESTApiUrl -or !$Global:OpconRESTApiAuthHeader) { + Write-Warning "No values for Opcon REST Api. Please use Logon-OpConApi before using cmdlet." + throw [System.Exception] "Invalid OpCon REST API Values" + } + + $uri = $Global:OpconRESTApiUrl + $Uri + + Write-Verbose ("Envoi de la requete Web ...") + + Try { + If ($Body -eq $null) { + $response = Invoke-RestMethod -Method $Method -Uri $uri -Headers $Global:OpconRESTApiAuthHeader -ErrorVariable $RestException + } + Else { + $Body = ConvertTo-Json $Body -Depth 99 + $response = Invoke-RestMethod -Method $Method -Uri $uri -Headers $Global:OpconRESTApiAuthHeader -Body $Body -ContentType 'application/json; charset=utf-8' -ErrorVariable $RestException + } + Write-Verbose ("`n") + Write-Verbose("RESPONSE :") + Write-Verbose(ConvertTo-Json $response -Depth 9) + return $response + } + Catch { + Write-Warning ("Erreur") + Write-Warning ("Status Code : " + $_.Exception.Response.StatusCode.value__) + Write-Warning ("Status Description : " + $_.Exception.Response.StatusDescription) + $opconApiError = ConvertFrom-Json $_.ErrorDetails.Message + Write-Warning ("Erreur Code : " + $opconApiError.code) + Write-Warning ("Erreur Message : " + $opconApiError.message) + throw + ##exit $_.Exception.Response.StatusCode.value__ + } +} + +# +Function Get-OpConApiToken { + [cmdletbinding()] + Param( + [string] $Url, + [string] $User, + [string] $Password + ) + + $tokensUri = -join($Url, "/api/tokens") + Write-Host ("Recuperation du token autorisation ...") + Write-Host ("Api: " + $tokensUri) + Write-Host ("Utilisateur: " + $User) + $tokenObject = @{ + user = @{ + loginName = $User + password = $Password + } + tokenType = @{ + type = "User" + } + } + Try { + Ignore-SelfSignedCerts + $token = Invoke-RestMethod -Method Post -Uri $tokensUri -Body (ConvertTo-Json $tokenObject) -ContentType 'application/json; charset=utf-8' -ErrorVariable $RestException + } + Catch { + ## $error = ConvertFrom-Json $RestException.ErrorDetails.Message + ##Write-Host ("Unable to fetch token for user '" + $user + "'") + ##Write-Host ("Error Code: " + $error.code) + ##Write-Host ("Message: " + $error.message) + Write-Host ("Status Code : " + $_.Exception.Response.StatusCode.value__) + Write-Host ("Status Description : " + $_.Exception.Response.StatusDescription) + Write-Host ("Message : " + $_[0].message) + ##$Global:OpConRESTAPIException = $_ + throw + ##exit $_.Exception.Response.StatusCode.value__ + } + Write-Host ("Token recu avec succes, Id : " + $token.id + ", Valide jusqu a : " + $token.validUntil) + + return $token +} + +# +Function Get-OpConApiAuthHeader { + Param( + [string] $Token + ) + + $authHeader = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $authHeader.Add("Authorization", ("Token " + $Token)) + + return $authHeader +} + +# +Function Login-RestApi { + [cmdletbinding()] + Param( + [string] $ApiUrl, + [string] $OpConUser, + [string] $OpConPassword + ) + + Write-Verbose ("Parametres =") + Write-Verbose ("ApiUrl: " + $ApiUrl) + Write-Verbose ("OpConUser: " + $OpConUser) + Write-Verbose ("OpConPassword: (hidden)") + + $ApiUrl = $ApiUrl.ToLower().TrimEnd("/").TrimEnd("/api") + + Write-Host ("Connexion a OPCON REST API: " + $ApiUrl) + + $Global:OpconRESTApiUrl = $ApiUrl + $Global:OpconRESTApiUser = $OpConUser + $Global:OpConRESTApiPassword = $OpConPassword + $token = Get-OpConApiToken -Url $ApiUrl -User $OpConUser -Password $OpConPassword + $Global:OpconRESTApiToken = $token.id + + $Global:OpconRESTApiAuthHeader = Get-OpConApiAuthHeader -Token $token.id + + Write-Host ('Token stocke avec succes pour de futurs appels dans la session.') +} + +Function HistoryJobDay { + [cmdletbinding()] + Param( + [string] $Dates, + [string] $JobName + ) + + $JobDayListFull = New-Object System.Collections.Generic.List[System.Object] + + Try { + #$JobName = "PlanDeProdRel_C1-60MinutesAprsMidi_CNT[C1-SS-FR-FluxAX_DHB_AttARV_Prod]|C2-DHB_DAX_DHB_REF_OFR_ART_CFG-STB-DHB" + #$JobName = "" + #$Dates = "2022-04-20" + + #$jobNameParam = [System.Web.HttpUtility]::UrlEncode($jobName) + $jobUri = -join("/api/jobhistories?uniqueJobIds=$jobName&from=$Dates&to=$Dates") + #write-host "1 " $jobUri + + $uri = $Global:OpconRESTApiUrl + $jobUri + #write-host "2 " $uri + + #$jobdayResponse = Invoke-OpConRestMethod -Uri $jobUri -Method GET -ContentType "application/json"-Headers $Global:OpconRESTApiAuthHeader -ErrorVariable $RestException; + $jobdayResponse = Invoke-RestMethod -Method GET -Uri $uri -Headers $Global:OpconRESTApiAuthHeader -ContentType 'application/json' -ErrorVariable $RestException + #write-host "3 " $jobdayResponse.id + + #https://10.78.56.27/api/jobhistories?uniqueJobIds=$JobName&from=$Dates&to=$Dates + #https://10.78.56.27/api/jobhistories?uniqueJobIds=PlanDeProdR%C3%A9el_C1-60MinutesApr%C3%A8sMidi_CNT%5BC1-SS-FR-FluxAX_DHB_AttARV_Prod%5D%7CC1-DHB_DAX_DHB_DAX_DHB_CMC_SUV_LIG_CDE_CLI-STB-DHB&from=2022-04-13&to=2022-04-13 + #https://10.78.56.27/api/jobhistories?uniqueJobIds=PlanDeProdRel_C1-60MinutesAprsMidi_CNT[C1-SS-FR-FluxAX_DHB_AttARV_Prod]|C1-DHB_DAX_DHB_DAX_DHB_CMC_SUV_LIG_CDE_CLI-STB-DHB&from=2022-04-13&to=2022-04-13 + #https://10.78.56.27/api/jobhistories?uniqueJobIds=C9-SC-GRP-EXP-ReportingOpcon_C9-ExtractionDesCommandesAvecUneLivraisonEnJPlus1-CNT-EXP[C9-SS-FR-TSM-EXP-ExtractionCommandJPlus1]|C9-ArchiveExtraction-SQL-EXP&from=2022-04-13&to=2022-04-13 + + If (($jobdayResponse.Length -Ne 1) -And ($jobdayResponse.Length -Ne 0)) { + Foreach($JobDay in $JobDayResponse) { + #write-host $JobDay + #$entry= "$($JobDay.schedule.name) - $($JobDay.id)" + $JobDayListFull.Add($JobDay) + #$JobDayListFull.Add(@{id = $JobDay.id}) + #Write-Host ("Job name : $($JobDay.id)") + } + + $sizeDay = $jobdayResponse.Length; + $JobDayListFullsize = $JobDayListFull.Count + Write-Host ("Partiel/Total nombre de job recuperer : $sizeDay/$JobDayListFullsize") + } + } + Catch [Exception] { + write-host $_ + write-host $_.Exception.Message + } + return, $JobDayListFull +} + +Function GetJobListToUpdateInTrances { + [cmdletbinding()] + Param( + [string] $Status, + [string] $Dates, + [string] $JobType + ) + + $offset =0; # start from + $size=0; # number of jobs retrieved each call + $limit=5000; # max number of record x trance + $jobListFull = New-Object System.Collections.Generic.List[System.Object] + + Write-Host ("===> Commence a recuperer des jobs dans la limite de $limit ") + + Do{ + $jobUri = -join("/api/dailyJobs/?dates=$Dates&scheduleIds=$($daily.id)&status=$Status&jobType=$JobType&limit=$limit&offset=$offset") + #$jobUri = -join($Url, "/api/dailyJobs/?dates=$Dates&scheduleIds=$($daily.id)&status=$Status&jobType=$JobType&limit=$limit&offset=$offset") + #$jobUri = -join($Url, "/api/dailyJobs/?dates=$Dates&scheduleIds=$($daily.id)&jobType=$JobType&limit=$limit&offset=$offset") + + $jobResponse = Invoke-OpConRestMethod -Uri $jobUri -Method GET -ContentType "application/json"-Headers $Global:OpconRESTApiAuthHeader -ErrorVariable $RestException; + #Write-Host ("Job URI : $($jobUri)") + + Foreach($job in $jobResponse) { + #$entry= "$($job.schedule.name) - $($job.id)" + $jobListFull.Add($job) + #$jobListFull.Add(@{id = $job.id}) + #Write-Host ("Job name : $($job.id)") + } + + $size = $jobResponse.Length; + $jobListFullsize = $jobListFull.Count + Write-Host ("Partiel/Total nombre recuperer : $size/$jobListFullsize") + + $offset+=$limit; + If ($size -lt $limit) { + $size = 0; + } + + # If is necessary a delay between calls uncomment and tune the line below + # Start-Sleep -s 5 + }While ($size -gt 0) + + If ($jobListFull.Count -gt 0) { + Write-host ("Jobs total recuperer : $($jobListFull.Count)") + } + + return, $jobListFull +} + +# +Function TryParseDate { + [cmdletbinding()] + Param( + [object] $inDate, + [string] $format + ) + + $outDate = "" + Try { + $outDate =[datetime]::parseexact($($inDate), $($format),$null) + } + Catch { + $outDate = "?" + } + + return $outDate +} + +# +Function DisplayDailyJobs { + [cmdletbinding()] + Param( + [string] $Status, + [string] $Action, + [string] $Dates, + [string] $JobType + ) + + [int]$Rows = 0 + [int]$RowsOK = 0 + [int]$RowsCancelled = 0 + [int]$RowsSkipped = 0 + [int]$RowsFailed = 0 + [int]$RowsRun = 0 + [int]$Percentage_Ok = 0 + [int]$Percentage_Skipped = 0 + [int]$Percentage_Cancelled = 0 + [int]$Percentage_Failed = 0 + [int]$Percentage_Run = 0 + [int]$RowsStartRetard = 0 + [int]$RowsEndRetard = 0 + + #Get job list to update in trances + $jobList = GetJobListToUpdateInTrances -Status $Status -Dates $Dates -JobType $JobType + + #$lst = jobList.chunked(3) + [int]$Total = $jobList.Count + + Foreach($job in $jobList) { + [int]$Rows = [int]$Rows + 1 + [int]$Pourcentage =[int]$Rows * 100 / [int]$Total + + Write-Progress -Activity "Analyse du contenu OPCON pour la journe $Dates" -Status "Job : $Rows sur $Total :" -PercentComplete $Pourcentage + + #$dt = [datetime]::parseexact($($job.schedule.date), 'yyyy-MM-ddTHH:mm:ss.fffffffzzz',$null) + $dt = TryParseDate -inDate $job.schedule.date -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + $StartTimeProgrammed = TryParseDate -inDate $job.computedStartTime.ProgrammedFor -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + + $StartTimeTime =TryParseDate -inDate $job.computedStartTime.time -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + $StartTimeTimeEstimated = "" + + If ($job.computedStartTime.isEstimated -contains "True") { + $StartTimeTimeEstimated = "*" + } + + $EndTimeProgrammed = TryParseDate -inDate $job.computedEndTime.ProgrammedFor -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + $EndTimeTime = TryParseDate -inDate $job.computedEndTime.time -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + $EndTimeTimeEstimated = "" + + If ($job.computedEndTime.isEstimated -contains "True") { + $EndTimeTimeEstimated = "*" + } + + $DurationEstimated = "" + + If ($job.computedDuration.isEstimated -contains "True") { + $DurationEstimated = "*" + } + + $DateStr = $dt.ToString("dd/MM/yyyy") + + $htmlCellStyle = "" + If ($job.status.description -Contains "Failed") { + $htmlCellStyle = "style='background:#FF0000'" + $RowsFailed = $RowsFailed + 1 + } + ElseIf ($job.status.description -Contains "Skipped") { + $htmlCellStyle = "style='background:#F000FF'" + $RowsSkipped = $RowsSkipped + 1 + } + ElseIf ($job.status.description -Contains "Cancelled") { + $htmlCellStyle = "style='background:#0017FF'" + $RowsCancelled = $RowsCancelled + 1 + } + ElseIf ($job.status.description -Contains "Job Running") { + $htmlCellStyle = "style='background:#000000;color:white'" + $RowsRun = $RowsRun + 1 + } + Else { + $RowsOK = $RowsOK + 1 + } + + $htmlCellStyleStartRetard = "" + $htmlCellStyleEndRetard = "" + + If ($job.status.description -NotContains "Skipped") { + If ($StartTimeTime -NotContains "?") { + + $RetardStart = New-TimeSpan -start $StartTimeTime -End $StartTimeProgrammed + $RetardEnd = New-TimeSpan -start $EndTimeTime -End $EndTimeProgrammed + + $htmlCellStyleStartRetard = "" + If ($RetardStart.TotalMinutes -lt 0 ) { + $htmlCellStyleStartRetard = "style='background:#C3D50F'" + } + ElseIf ($RetardStart.TotalMinutes -eq 0 ) { + $htmlCellStyleStartRetard = "" + } + ElseIf ($RetardStart.TotalMinutes -gt 0 ) { + $htmlCellStyleStartRetard = "style='background:#0FD536'" + $RowsStartRetard = $RowsStartRetard + 1 + } + Else { + $htmlCellStyleStartRetard = "" + } + + $htmlCellStyleEndRetard = "" + If ($RetardEnd.TotalMinutes -lt 0 ) { + $htmlCellStyleEndRetard = "style='background:#C3D50F'" + } + ElseIf ($RetardEnd.TotalMinutes -eq 0 ) { + $htmlCellStyleEndRetard = "" + } + ElseIf ($RetardEnd.TotalMinutes -gt 0 ) { + $htmlCellStyleEndRetard = "style='background:#0FD536'" + $RowsEndRetard = $RowsEndRetard + 1 + } + Else { + $htmlCellStyleEndRetard = "" + } + } + } + + $DataRow = " + + $($DateStr) + $($job.schedule.name) + + $($job.name) + $($job.primaryMachine.name) + $($job.jobType.description) + $($job.status.description) + $($StartTimeProgrammed) + $($EndTimeProgrammed) + $($StartTimeTime) $($StartTimeTimeEstimated) + $($EndTimeTime) $($EndTimeTimeEstimated) + $($job.computedDuration.duration/1000/60) $($DurationEstimated) + " + + $FinalData += $DataRow + + $jobSearch = $job.schedule.name+"|"+$job.name + + $ListSousJob = HistoryJobDay -Dates $Dates -JobName $jobSearch + + If ($ListSousJob.Count -ne 0) { + Foreach($SousJob in ($ListSousJob|Select -skip 1)) { + + $SousStartTimeTime =TryParseDate -inDate $SousJob.jobStartTime -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + $SousEndTimeTime = TryParseDate -inDate $SousJob.jobTermination -format 'yyyy-MM-ddTHH:mm:ss.fffffffzzz' + + If ($SousJob.jobstatus.description -Contains "Failed") { + $htmlCellStyle = "style='background:#FF0000'" + $RowsFailed = $RowsFailed + 1 + } + ElseIf ($SousJob.jobstatus.description -Contains "Skipped") { + $htmlCellStyle = "style='background:#F000FF'" + $RowsSkipped = $RowsSkipped + 1 + } + ElseIf ($SousJob.jobstatus.description -Contains "Cancelled") { + $htmlCellStyle = "style='background:#0017FF'" + $RowsCancelled = $RowsCancelled + 1 + } + ElseIf ($SousJob.jobstatus.description -Contains "Job Running") { + $htmlCellStyle = "style='background:#000000;color:white'" + $RowsRun = $RowsRun + 1 + } + Else { + $RowsOK = $RowsOK + 1 + } + + $DataRow = " + + $($DateStr) + $($job.schedule.name) + + $($job.name) + $($job.primaryMachine.name) + $($job.jobType.description) + $($SousJob.jobstatus.description) + $($StartTimeProgrammed) + $($EndTimeProgrammed) + $($SousStartTimeTime) + $($SousEndTimeTime) + $($SousJob.Duration/1000/60) + " + + $FinalData += $DataRow + + [int]$Rows = [int]$Rows + 1 + [int]$Total = [int]$Total + 1 + } + } + + } + + (Get-Content -path HtmlTemplate.html -Raw) -replace 'ROWS_PLACE_HOLDER',$FinalData | Out-File -FilePath Rapport-$OpScheduleDate-tmp-01.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-01.html -Raw) -replace 'ROWS_OK_NUMBER',$RowsOK | Out-File -FilePath Rapport-$OpScheduleDate-tmp-02.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-02.html -Raw) -replace 'ROWS_SKIPPED_NUMBER',$RowsSkipped | Out-File -FilePath Rapport-$OpScheduleDate-tmp-03.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-03.html -Raw) -replace 'ROWS_CANCELLED_NUMBER',$RowsCancelled | Out-File -FilePath Rapport-$OpScheduleDate-tmp-04.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-04.html -Raw) -replace 'ROWS_FAILED_NUMBER',$RowsFailed | Out-File -FilePath Rapport-$OpScheduleDate-tmp-05.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-05.html -Raw) -replace 'ROWS_RUN_NUMBER',$RowsRun | Out-File -FilePath Rapport-$OpScheduleDate-tmp-06.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-06.html -Raw) -replace 'ROWS_NUMBER',$Rows | Out-File -FilePath Rapport-$OpScheduleDate-tmp-07.html + + $Percentage_Ok = ($RowsOK * 100 ) / $Rows + $Percentage_Skipped = ($RowsSkipped * 100 ) / $Rows + $Percentage_Cancelled = ($RowsCancelled * 100 ) / $Rows + $Percentage_Failed = ($RowsFailed * 100 ) / $Rows + $Percentage_Run = ($RowsRun * 100 ) / $Rows + + (Get-Content -path Rapport-$OpScheduleDate-tmp-07.html -Raw) -replace 'PERCENTAGE_OK_NUMBER',$Percentage_Ok | Out-File -FilePath Rapport-$OpScheduleDate-tmp-08.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-08.html -Raw) -replace 'PERCENTAGE_SKIPPED_NUMBER',$Percentage_Skipped | Out-File -FilePath Rapport-$OpScheduleDate-tmp-09.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-09.html -Raw) -replace 'PERCENTAGE_CANCELLED_NUMBER',$Percentage_Cancelled | Out-File -FilePath Rapport-$OpScheduleDate-tmp-10.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-10.html -Raw) -replace 'PERCENTAGE_FAILED_NUMBER',$Percentage_Failed | Out-File -FilePath Rapport-$OpScheduleDate-tmp-11.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-11.html -Raw) -replace 'PERCENTAGE_RUN_NUMBER',$Percentage_Run | Out-File -FilePath Rapport-$OpScheduleDate-tmp-12.html + + (Get-Content -path Rapport-$OpScheduleDate-tmp-12.html -Raw) -replace 'ROWS_START_Retard',$RowsStartRetard | Out-File -FilePath Rapport-$OpScheduleDate-tmp-13.html + (Get-Content -path Rapport-$OpScheduleDate-tmp-13.html -Raw) -replace 'ROWS_END_Retard',$RowsEndRetard | Out-File -FilePath Rapport-$OpScheduleDate.html + + Remove-Item Rapport-$OpScheduleDate-tmp-*.html -Force -Confirm:$False +} + +# +$SecPass = $null; +$clearPassword = "" +If ($OpConPassword.Length -eq 0 ) { + $SecPass = Read-Host 'Quel est le mot de passe ?' -AsSecureString + $clearPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto( + [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecPass)) +} +Else { + $clearPassword = $OpConPassword +} + +Login-RestApi -ApiUrl $ServerUrl -OpConUser $OpConUser -OpConPassword $clearPassword + +DisplayDailyJobs -Status $OpJobStatus -Dates $OpScheduleDate -JobType "" + +Invoke-Item .\Rapport-$OpScheduleDate.html \ No newline at end of file diff --git a/Opcon/Daily Jobs To Html/HtmlTemplate.html b/Opcon/Daily Jobs To Html/HtmlTemplate.html new file mode 100644 index 0000000..a6fc3c2 --- /dev/null +++ b/Opcon/Daily Jobs To Html/HtmlTemplate.html @@ -0,0 +1,61 @@ + + + + + + + + + + + +
Nombre de job trouveROWS_NUMBER Nombre de job OK : ROWS_OK_NUMBERPERCENTAGE_OK_NUMBER % Nombre de job en retard : ROWS_START_Retard
Nombre de job Running : ROWS_RUN_NUMBERPERCENTAGE_RUN_NUMBER % Nombre de job trop long : ROWS_END_Retard
Nombre de job Failed : ROWS_FAILED_NUMBERPERCENTAGE_FAILED_NUMBER %
Nombre de job Skipped : ROWS_SKIPPED_NUMBERPERCENTAGE_SKIPPED_NUMBER %
Nombre de job Cancelled : ROWS_CANCELLED_NUMBERPERCENTAGE_CANCELLED_NUMBER %
+
+ + + + + + + + + + + + + + + + + ROWS_PLACE_HOLDER +
DateScheduleMultiJobMachineJob typeStatusHeure de lancement programmeHeure de fin programmeHeure de lancement reel (* = Estime)Heure de fin reel (* = Estime)Duree (* = Estime en minute)
+ + + + \ No newline at end of file diff --git a/Opcon/Daily Jobs To Html/Rapport-.html b/Opcon/Daily Jobs To Html/Rapport-.html new file mode 100644 index 0000000..e93ae40 Binary files /dev/null and b/Opcon/Daily Jobs To Html/Rapport-.html differ diff --git a/Opcon/Daily Jobs To Html/horloge.png b/Opcon/Daily Jobs To Html/horloge.png new file mode 100644 index 0000000..0877ba1 Binary files /dev/null and b/Opcon/Daily Jobs To Html/horloge.png differ diff --git a/Opcon/Daily Jobs To Html/outfile.html b/Opcon/Daily Jobs To Html/outfile.html new file mode 100644 index 0000000..aaa7271 Binary files /dev/null and b/Opcon/Daily Jobs To Html/outfile.html differ diff --git a/Opcon/OpConModule.psm1 b/Opcon/OpConModule.psm1 new file mode 100644 index 0000000..91e1671 --- /dev/null +++ b/Opcon/OpConModule.psm1 @@ -0,0 +1,3585 @@ +# PowerShell Module file for OpCon API +# Use Import-Module to use these functions inside another PS script +################################################################################################## + +# For skipping self signed certificates in Powershell 7 (core) +function OpCon_SkipCerts +{ + if($PSVersionTable.PSVersion.Major -lt 6) + { + try + { + Add-Type -TypeDefinition @" + using System.Net; + using System.Security.Cryptography.X509Certificates; + public class TrustAllCertsPolicy : ICertificatePolicy + { + public bool CheckValidationResult( + ServicePoint srvPoint, X509Certificate certificate, + WebRequest request, int certificateProblem) + { + return true; + } + } +"@ + [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy + } + catch + { Write-Host "Error Ignoring Self Signed Certs" } + } + else + { + try + { $PSDefaultParameterValues.Add("Invoke-RestMethod:SkipCertificateCheck",$true) } + catch + { $null } + } +} + +# Used if calling an API that is not local to the machine, **Powershell 3-5 only*** +# Keeping this function for legacy purposes, but references the newer "all-in-one" version +function OpCon_IgnoreSelfSignedCerts +{ + OpCon_SkipCerts +} + +#Get user/app token +function OpCon_Login +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$user + ,[Parameter(Mandatory=$true)] [string]$password + ,[string] $appname + ) + + #Builds user hashtable + if($appname) + { + $body = @{ + "user"=@{ + "loginName"=$user; + "password"=$password}; + "tokenType"=@{ + "id"=$appname; + "type"="Application" + } + } + } + else + { + $body = @{ + "user"= @{ + "loginName"=$user; + "password"=$password}; + "tokenType"=@{ + "type"="User" + } + } + } + + try + { + return Invoke-Restmethod -Method POST -Uri ($url + "/api/tokens") -Body ($body | ConvertTo-Json) -ContentType "application/json" + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } +} +New-Alias "opc-login" OpCon_GetLogin + +#Delete token from database +function OpCon_DeleteAPIToken +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ) + + try + { + return Invoke-Restmethod -Method DELETE -Uri ($url + "/api/tokens") -Header @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } +} +New-Alias "opc-deleteapitoken" OpCon_DeleteAPIToken + +<# +.SYNOPSIS + +Gets a global property value from OpCon. + +.OUTPUTS + +ID, Value, Encryption of global property. + +.EXAMPLE + +C:\PS> opgp -Name "My Property" +#> +function OpCon_GetGlobalProperty +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string] $id + ,[string] $name + ) + + #Get property information + If($id) + { + $uriget = $url + "/api/globalproperties/" + $id + } + ElseIf($name) + { + $uriget = $url + "/api/globalproperties?name=" + $name + } + Else + { + $uriget = $url + "/api/globalproperties" + } + + try + { + return Invoke-Restmethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } +} +New-Alias "opc-getglobalproperty" OpCon_GetGlobalProperty +New-Alias "opc-getglobalproperties" OpCon_GetGlobalProperty +New-Alias "opc-getgp" OpCon_GetGlobalProperty + +#Creates a new global property +function OpCon_CreateGlobalProperty +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$name + ,[Parameter(Mandatory=$true)] [string]$value + ,[string] $encrypt + ) + + #Get property information + $body = @{ + "name" = $name; + "value" = $value; + "encrypted" = $encrypt + } + + try + { + return nvoke-Restmethod -Method POST -Uri ($url + "/api/globalproperties") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json) -ContentType "application/json" + } + catch [Exception] + { + write-host $_.Exception + write-host $_.Exception.Message + } +} +New-Alias "opc-createproperty" OpCon_CreateGlobalProperty + +#Sets a global property to a value +function OpCon_SetGlobalProperty +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$value + ,[string] $id + ,[string] $name + ) + + If($name -or $id) + { + $property = OpCon_GetGlobalProperty -url $url -token $token -name $name -id $id + + $counter = 0 + $property | ForEach-Object{ $counter++ } + + if($counter -ne 1) + { + Write-Output "Too many or no properties found!" + Exit 1 + } + else + { + $property[0].value = $value + + #Update property value + try + { + return Invoke-Restmethod -Method PUT -Uri ($url + "/api/globalproperties/" + $property[0].id) -Headers @{"authorization" = $token} -Body ($property[0] | ConvertTo-Json) -ContentType "application/json" + } + catch [Exception] + { + write-output $_ + write-output $_.Exception.Message + } + } + } + Else + { + Write-Output "Id or Name not specified!" + Exit 1 + } +} +New-Alias "opc-setproperty" OpCon_SetGlobalProperty + +#Get threshold +function OpCon_GetThreshold +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string]$id + ,[string]$name + ) + + #Changes the url based on if id/name provided + If($id) + { + $uriget = $url + "/api/thresholds/" + $id + } + ElseIf($name) + { + $uriget = $url + "/api/thresholds?name=" + $name + } + Else + { + $uriget = $url + "/api/thresholds" + } + + try + { + return Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } +} +New-Alias "opc-getthreshold" OpCon_GetThreshold + +#Create threshold +function OpCon_CreateThreshold +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$name + ,[Parameter(Mandatory=$true)] [string]$value + ,[string] $description + ) + + $body = @{ + "name" = $name; + "value" = $value; + "description" = $description + } + + try + { + return Invoke-RestMethod -Method POST -Uri ($url + "/api/thresholds") -Body ($body | ConvertTo-Json) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } +} +New-Alias "opc-createthreshold" OpCon_CreateThreshold + +#Set threshold value +function OpCon_SetThreshold +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$value + ,[string] $id + ,[string] $name + ,[string] $description + ) + + If($name -or $id) + { + if($name) + { $threshold = OpCon_GetThreshold -url $url -token $token -name $name } + else + { $threshold = OpCon_GetThreshold -url $url -token $token -id $id } + + $counter = 0 + $threshold | ForEach-Object { $counter ++ } + + if($counter -ne 1) + { + Write-Output "0 or more than 1 threshold found matching name/id, cannot set value" + Exit 1 + } + else + { + if($value.StartsWith("+")) + { + $value = $threshold[0].value + [convert]::ToInt32($value.SubString(1)) + } + elseif($value.StartsWith("-")) + { + if($threshold[0].value -lt $value.SubString(1)) + { $value = 0 } + else + { $value = $threshold[0].value - [convert]::ToInt32($value.SubString(1)) } + } + + if(!$description) + { $description = "" } + + $body = @{ + "id" = $threshold[0].id; + "name" = $name; + "value" = $value; + "description" = "" + } + + try + { + return Invoke-RestMethod -Method PUT -Uri ($url + "/api/thresholds/" + $threshold[0].id) -Body ($body | ConvertTo-Json) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } + } + } + Else + { + Write-Output "No name or id specified!" + Exit 1 + } +} +New-Alias "opc-setthreshold" OpCon_SetThreshold + +#Get resource +function OpCon_GetResource +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string] $name + ,[string] $id + ) + + #Changes the url based on if id/name provided + If($id) + { + $uriget = $url + "/api/resources/" + $id + } + ElseIf($name) + { + $uriget = $url + "/api/resources?name=" + $name + } + Else + { + $uriget = $url + "/api/resources" + } + + try + { + return Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getresource" OpCon_GetResource + +#Create resource +function OpCon_CreateResource +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$name + ,[Parameter(Mandatory=$true)] [string]$value + ,[string] $description + ) + + $resource = OpCon_GetResource -url $url -token $token -name $name + $counter = 0 + $resource | ForEach-Object { $counter ++ } + + if($counter -eq 1) + { + Write-Output "Resource $name already exists" + Exit 1 + } + else + { + $body = @{ + "name" = $name; + "value" = $value; + "description" = $description + } + + try + { + return Invoke-RestMethod -Method POST -Uri ($url + "/api/resources") -Body ($body | ConvertTo-Json) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } + } +} +New-Alias "opc-createresouce" OpCon_CreateResource + +#Set resource value +function OpCon_SetResource +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[int]$value + ,[string] $id + ,[string] $name + ,[string] $description + ,[string] $used + ) + + $resource = OpCon_GetResource -url $url -token $token -name $name -id $id + + $counter = 0 + $resource | ForEach-Object { $counter ++ } + + if($counter -ne 1) + { + Write-Output "More than 1 or no result, cannot set resource" + Exit 1 + } + else + { + if($value) + { + if($value.StartsWith("+")) + { + $value = $resource[0].value + [convert]::ToInt32($value.SubString(1)) + } + elseif($value.StartsWith("-")) + { + if($resource[0].value -lt $value.SubString(1)) + { $value = 0 } + else + { $value = $resource[0].value - [convert]::ToInt32($value.SubString(1)) } + } + } + else + { $value = $resource[0].value } + + if($used) + { + if($used.StartsWith("+")) + { + if(($resource[0].used + [convert]::ToInt32($used.SubString(1))) -gt $value) + { $used = $value } + else + { $used = $resource[0].used + [convert]::ToInt32($used.SubString(1)) } + } + elseif($used.StartsWith("-")) + { + if($resource[0].used -lt $used.SubString(1)) + { $used = 0 } + else + { $value = $resource[0].inuse - [convert]::ToInt32($used.SubString(1)) } + } + } + else + { $used = $resource[0].used } + + If(!$description) + { $description = "" } + + $body = @{ + "id" = $resource[0].id; + "name" = $name; + "value" = $value; + "used" = $used; + "description" = $description + } + + try + { + return Invoke-RestMethod -Method PUT -Uri ($url + "/api/resources/" + $resource[0].id) -Body ($body | ConvertTo-Json) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } + } +} +New-Alias "opc-setresource" OpCon_SetResource + +#Gets information about an OpCon Agent +function OpCon_GetAgent +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string] $id + ,[string] $agentname + ) + + #If id is passed use it, otherwise name + If($id) + { + $uriget = $url + "/api/machines/" + $id + "&extendedProperties=true" + } + ElseIf($agentname) + { + $uriget = $url + "/api/machines?name=" + $agentname + "&extendedProperties=true" + } + Else + { + $uriget = $url + "/api/machines?extendedProperties=true" + } + + try + { + return Invoke-Restmethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getagent" OpCon_GetAgent + +#Starts or stops an OpCon agent based on parameters +function OpCon_ChangeAgentStatus +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$agentname + ,[Parameter(Mandatory=$true)] [string]$action + ) + + $machine = OpCon_GetAgent -agentname $agentname -url $url -token $token + if($machine.Count -eq 0) + { + Write-Output "No agent by that name!" + Exit 1 + } + else + { + $machine = $machine[0] + + #Enable/Disable the machine + $body = @{ + "machines"=@( + @{ + "id"=$machine.id; + } + ); + "action"=$action + } + + try + { + $machineaction = Invoke-Restmethod -Method POST -Uri ($url + "/api/machineactions") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json -Depth 5) -ContentType "application/json" + Write-Output "Agent is $action!" + + return $machineaction + } + catch [Exception] + { + Write-Output $_.Exception + write-Output $_.Exception.Message + } + } +} +New-Alias "opc-changeagentstatus" OpCon_ChangeAgentStatus + + +#Creates a new agent in OpCon +function OpCon_CreateAgent($agentname,$agenttype,$agentdescription,$agentsocket,$agentjors,$token,$url) +{ + $exists = OpCon_GetAgent -agentname $agentname -url $url -token $token + if($exists.Count -eq 0) + { + #Assign Agent type # based off provided OS name + $agenttypeid = switch ($agenttype) + { + "FILE TRANSFER" {"1"} + "HP NONSTOP" {"2"} + "WINDOWS" {"3"} + "OPENVMW" {"4"} + "IBMI" {"5"} + "UNIX" {"6"} + "OS2200" {"7"} + "VSE" {"8"} + "MCP" {"9"} + "ZOS" {"12"} + "SAP R3" {"13"} + "SAP BW" {"14"} + "JEE" {"16"} + "JAVA" {"17"} + "TUXEDOART" {"18"} + "EASE" {"19"} + "ASYSCO AMT" {"20"} + "SQL" {"21"} + default {"3"} + } + + $body = @{ + "name"=$agentname; + "type"=@{ + "id"=$agenttypeid; + "description"=$agentdescription + }; + "socket"=$agentsocket; + "jorsPortNumber"=$agentjors + } + + try + { + $machine = Invoke-RestMethod -Method POST -Uri ($url + "/api/machines") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json -Depth 5) -ContentType "application/json" + Write-Host "Machine added!`r`n" + } + catch [Exception] + { + Write-Host $_.Exception + write-host $_.Exception.Message + } + } + else + { Write-Host "Agent with the same name already exists!`r`n" } + + return $machine +} +New-Alias "opc-createagent" OpCon_CreateAgent + +#Updates a particular field on an existing agent +function OpCon_UpdateAgent($agentname,$token,$url,$field,$value) +{ + $agent = OpCon_GetAgent -agentname $agentname -url $url -token $token + If($agent.PSobject.Properties.name -match $field) + { + $agent.$field = $value + + #Take the machine down + $down = OpCon_ChangeAgentStatus -agentname $agentname -action "down" -url $url -token $token + + try + { + $update = Invoke-Restmethod -Method PUT -Uri ($url + "/api/machines/" + $agent.id) -Headers @{"authorization" = $token} -Body ($agent | ConvertTo-Json -Depth 4) -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + write-host $_.Exception.Message + } + Write-Host $agentname "updated!`r`n" + + Sleep 3 + + #Bring the updated machine back up + $up = OpCon_ChangeAgentStatus -agentname $agentname -action "up" -url $url -token $token + return $up[0] + } + else + { Write-Host "invalid Machine property specified!" } +} +New-Alias "opc-updateagent" OpCon_UpdateAgent + +#Get schedule information +function OpCon_GetSchedule($url,$token,$sname,$date) +{ + if(!$date) + { + if(!$sname) + { + $uriget = $url + "/api/dailyschedules?dates" + } + Else + { + $uriget = $url + "/api/dailyschedules?name=" + "$sname" + } + + try + { + $getdates = Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $getdates + } + else + { + if($sname) + { + $uriget = $url + "/api/dailyschedules?name=" + "$sname" + "&dates=" + $date + } + Else + { + $uriget = $url + "/api/dailyschedules" + } + + try + { + $getschedule = (Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json") + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + $count = 0 + $getschedule | ForEach-Object{ $count++} + if($count -eq 0) + { + Write-Host "No schedules found!" + } + + return $getschedule + } +} +New-Alias "opc-getschedule" OpCon_GetSchedule + + +function OpCon_ScheduleAction($url,$token,$sname,$jname,$frequency,$reason,$action,$states,$date,$sid,$instanceProperties,[switch]$applyExceptions,[switch]$rebuildOnRestart) +{ + $action = switch ($action) + { + "JOB:ADD" {"addjobs"} + "SCHEDULE:RELEASE" {"release"} + "SCHEDULE:HOLD" {"hold"} + "SCHEDULE:START" {"start"} + "SCHEDULE:CANCEL" {"close"} + "JOB:HOLD" {"holdjobs"} + "JOB:CANCEL" {"cancelJobs"} + "JOB:SKIP" {"skipJobs"} + "JOB:KILL" {"killJobs"} + "JOB:START" {"startJobs"} + "JOB:RESTART" {"restartJobs"} + "JOB:FORCERESTART" {"forceRestartJobs"} + "JOB:RESTARTHLD" {"restartJobsOnHold"} + "JOB:RELEASE" {"releaseJobs"} + "JOB:GOOD" {"markJobsFinishedOk"} + "JOB:BAD" {"markJobsFailed"} + "JOB:FIXED" {"markjobsfixed"} + "JOB:UNDERREVIEW" {"markjobsunderreview"} + } + + if(!$reason) + { $reason = "Action performed by OpCon API at " + (Get-Date) } + + if($states) + { + if($states -like "*;*") + { $statesArray = $states.Split(";") } + else + { + $statesArray = @() + $statesArray += $states + } + } + + if($date) + { + if($date -like "*;*") + { $dateArray = $date.Split(";") } + else + { + $dateArray = @() + $dateArray += $date + } + } + else + { $dateArray = @((Get-Date -Format "yyyy-MM-dd")) } # Default to today + + if($sname) + { + $sname = $sname.replace("[","?").replace("]","?").replace(" ","%20") + + if($sname -like "*;*") + { $scheduleArray = $sname.Split(";") } + else + { + $scheduleArray = @() + $scheduleArray += $sname + } + + for($x=0;$x -lt $scheduleArray.Count;$x++) + { + $counter = 0 + $idArray = @() + for($y=0;$y -lt $dateArray.Count;$y++) + { + $schedule = OpCon_GetSchedule -url $url -token $token -sname $scheduleArray[$x] -date $dateArray[$y] + $schedule | ForEach-Object{ $counter++ } + + If($counter -ne 1) + { Write-Host "Too many results for schedule!`r`n" } + Else + { $idArray += $schedule[0].id } + $counter = 0 + } + } + } + elseif($sid) + { + if($sid -like "*;*") + { $idArray = $sid.Spit(";") } + else + { + $idArray = @() + $idArray += $sid + } + } + else + { Write-Host "Schedule Name or Schedule Id not specified!" } + + # Only necessary for job actions + if($action -like "*jobs*") + { + # Only necessary if instance properties are specified + if($instanceProperties) + { + $properties = @() + + if($instanceProperties -like "*;*") + { $propertyArray = $instanceProperties.Split(";").Split("=") } + else + { $propertyArray = $instanceProperties.Split("=") } + + for($z=0;$z -lt $propertyArray.Count;$z++) + { + $properties += [PSCustomObject]@{ "name" = $propertyArray[$z];"value" = $propertyArray[($z+1)] } + + if(($z+2) -le $propertyArray.Count) + { $z++ } + } + } + + if($jname -like "*;*") + { $jobNames = $jname.Split(";") } + else + { + $jobNames = @() + $jobNames += $jname + } + + if($frequency -like "*;*") + { $jobFrequencies = $frequency.Split(";") } + else + { + $jobFrequencies = @() + $jobFrequencies += $frequency + } + + $jobObjects = @() + for($x=0;$x -lt $jobNames.Count;$x++) + { + $jobObjects += [PSCustomObject]@{ "id" = $jobNames[$x] + ;"frequency" = $jobFrequencies[$x] } + + if($properties) + { $jobObjects | Add-Member -MemberType NoteProperty -Name "instanceProperties" -Value $properties } + + if($applyExceptions) + { $jobObjects | Add-Member -MemberType NoteProperty -Name "applyExceptions" -Value $true } + + if($rebuildOnRestart -and ($action -like "*restart*")) + { $jobObjects | Add-Member -MemberType NoteProperty -Name "rebuildOnRestartIfContainer" -Value $true } + } + } + + $scheduleObjects = @() + for($y=0;$y -lt $idArray.Count;$y++) + { + $schedule = [PSCustomObject]@{ "id"= $idArray[$y] } + + if($action -like "*jobs*") + { $schedule | Add-Member -MemberType NoteProperty -Name "jobs" -Value $jobObjects } + + $scheduleObjects += $schedule + } + + if($statesArray) + { $body = [PSCustomObject]@{"scheduleActionItems" = $scheduleObjects;"action" = $action;"reason" = $reason;"states" = $statesArray } } + else + { $body = [PSCustomObject]@{"scheduleActionItems" = $scheduleObjects;"action" = $action;"reason" = $reason } } + + try + { + $submit = Invoke-RestMethod -Method POST -Uri ($url + "/api/ScheduleActions") -Body ($body | ConvertTo-Json -Depth 10) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + # Get action statuses + if(($submit.result -ne "success") -and ($submit.result -ne "failed")) + { + $timeout = 100 + While((($getAction.result -ne "success") -and ($getAction.result -ne "failed")) -and ($timeout -ne 0)) + { + $getAction = OpCon_GetScheduleAction -url $url -token $token -id $submit.id + Start-Sleep -Seconds 1 + $timeout-- + } + Write-Host "Request took"(100-$timeOut)"seconds" + Write-Host $action $getAction.result + } + else + { Write-Host $action $submit.result.result } +} +New-Alias "opc-scheduleaction" OpCon_ScheduleAction + +#Gets information about a daily job +function OpCon_GetDailyJob($url,$token,$sname,$jname,$date,$id) +{ + if($id) + { $uriget = $url + "/api/dailyjobs/" + $id } + else + { + if($date) + { $uriget = $url + "/api/dailyjobs?scheduleName=" + $sname + "&dates=" + $date } + else + { $uriget = $url + "/api/dailyjobs?scheduleName=" + $sname } + } + + try + { $jobs = Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + + if($jname) + { $jobs = $jobs.Where({ $_.name -like "*$jname*" }) } + + return $jobs +} +New-Alias "opc-getdailyjob" OpCon_GetDailyJob + +#Sends a job action to a job +function OpCon_JobAction($url,$token,$sname,$jname,$date,$action,$reason) +{ + if($action) + { + if($action.IndexOf(":") -ge 0) + { + $action = switch ($action) + { + "JOB:RELEASE" {"release"} + "JOB:START" {"start"} + "JOB:GOOD" {"markFinishedOk"} + "JOB:BAD" {"markFailed"} + "JOB:HOLD" {"hold"} + "JOB:CANCEL" {"cancel"} + "JOB:SKIP" {"skip"} + "JOB:KILL" {"kill"} + "JOB:RESTARTFORCE" {"forceRestart"} + "JOB:RESTART" {"restart"} + "JOB:RESTARTHLD" {"restartOnHold"} + "JOB:FIXED" {"markjobsfixed"} + "JOB:UNDERREVIEW" {"markjobsunderreview"} + } + } + + if($jname -and $sname) + { + if(!$date) + { + $date = Get-Date -Format "yyyy/MM/dd" + } + $job = OpCon_GetDailyJob -url $url -token $token -sname "$sname" -jname "$jname" -date $date + + $counter = 0 + $job | ForEach-Object{ $counter++ } + If($counter -ne 1) + { + Write-Host "Too many results for job!`r`n" + } + + $jobsArray = @() + $jobsArray += @{ id=$job[0].id; } + + $body = @{ + "action"=$action; + "jobs"=$jobsArray; + "reason"=$reason + } + + try + { + $jobaction = (Invoke-RestMethod -Method POST -Uri ($url + "/api/jobactions") -Body ($body | ConvertTo-JSON) -Headers @{"authorization" = $token} -ContentType "application/json") + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + if($jobaction.result -eq "success") + { + return $jobaction + } + elseif($jobaction.result -eq "error") + { + Write-Host "Job action attempt had an error" + } + else + { + for($x = 0;$x -lt 20;$x++) + { + $jobaction + $result = OpCon_GetJobAction -url $url -token $token -id $jobaction.id + + if($result.result -eq "success") + { $x = 20 } + elseif($result.result -eq "error") + { + Write-Host "Job action attempt had an error" + $result + } + + if($x -ne 20) + { Start-Sleep -s 3 } + } + return $result + } + } + Else + { Write-Host "Missing schedule or job name!" } + } + Else + { Write-Host "No action specified!" } +} +New-Alias "opc-jobaction" OpCon_JobAction + +#Get calendar +function OpCon_GetCalendar($url,$token,$name,$id) +{ + if($name -or $id) + { + if($name) + { $uriget = $url + "/api/calendars?name=" + $name } + + if($id) + { $uriget = $url + "/api/calendars/" + $id } + + try + { + $counter = 0 + $calendar = (Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json") + $calendar | ForEach-Object{ $counter++ } + + if($counter -eq 0) + { + Write-Host "No calendars found by supplied name/id!" + } + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $calendar + } + else + { Write-Host "No name or id specified!" } +} +New-Alias "opc-getcalendar" OpCon_GetCalendar + +#Updates a calendar +function OpCon_UpdateCalendar($url,$token,$name,$id,$date) +{ + if($name -or $id) + { + $counter = 0 + + if($name) + { $calendar = OpCon_GetCalendar -url $url -token $token -name $name } + if($id) + { $calendar = OpCon_GetCalendar -url $url -token $token -id $id } + + $calendar | ForEach-Object{ $counter++ } + + if($counter -ne 1) + { Write-Host "More than 1 or no calendars returned!" } + else + { + if($date) + { + if($calendar[0].dates) + { + if($date.IndexOf(";") -ge 0) + { + $date.Split(";") | ForEach-Object{ + if($_ -notin $calendar[0].dates) + { + if($null -eq $dateList) + { $dateList = $_ } + else + { $dateList = $dateList + ";" + $_ } + } + } + } + else + { + if($date -notin $calendar[0].dates) + { $dateList = $date } + } + + if($null -ne $dateList ) + { + $calendar[0].dates += $dateList + $body = $calendar[0] + + try + { $calendaradd = Invoke-RestMethod -Method PUT -Uri ($url + "/api/calendars/" + $calendar[0].id) -Body ($body | ConvertTo-JSON -Depth 7) -Headers @{"authorization" = $token} -ContentType "application/json" } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $calendaradd + } + else + { Write-Host "Date/s $date already in calendar $name !" } + } + else + { + if(!$calendar[0].description) + { $description = "" } + else + { $description = $calendar[0].description } + + if(!$calendar[0].schedule) + { + $body = @{ + "id" = $calendar[0].id; + "type" = $calendar[0].type; + "name" = $calendar[0].Name; + "dates" = @( $date ); + "description" = $description + } + } + else + { + $schedule = $calendar[0].schedule + $body = @{ + "id" = $calendar[0].id; + "type" = $calendar[0].type; + "schedule" = $schedule; + "name" = $calendar[0].Name; + "dates" = @( $date ); + "description" = $description + } + } + + try + { $calendaradd = Invoke-RestMethod -Method PUT -Uri ($url + "/api/calendars/" + $calendar[0].id) -Body ($body | ConvertTo-JSON -Depth 7) -Headers @{"authorization" = $token} -ContentType "application/json" } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $calendaradd + } + } + else + { Write-Host "No date specified!" } + } + } + else + { Write-Host "No name or id specified!" } +} +New-Alias "opc-updatecalendar" OpCon_UpdateCalendar + +#Creates a user calendar (api allows for holiday calendar based on a schedule too) +function OpCon_CreateCalendar($url,$token,$type,$name,$dates,$description) +{ + #Eventually could add in "holiday" calendars + $type = 1 + + $uripost = $url + "/api/calendars/" + $body = [pscustomobject]@{ + "type" = $type; + "name" = $name; + "dates" = $dates; + "description" = $description + } + + try + { $calendar = Invoke-RestMethod -Method POST -Uri $uripost -Body ($body | ConvertTo-Json -Depth 5) -Headers @{"authorization" = $token} -ContentType "application/json" } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $calendar +} +New-Alias "opc-createcalendar" OpCon_CreateCalendar + +#Checks the status of the SAM service +function OpCon_SAMStatus($url,$token) +{ + try + { + $status = Invoke-Restmethod -Method GET -Uri ($url + "/api/ServiceStatus") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + write-host $_.Exception.Message + } + + return $status +} +New-Alias "opc-sam" OpCon_SAMStatus + +#Checks the OpCon API Version +function OpCon_APIVersion($url) +{ + try + { + $version = Invoke-Restmethod -Method GET -Uri ($url + "/api/version") -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + write-host $_.Exception.Message + } + + return $version +} +New-Alias "opc-apiversion" OpCon_APIVersion + +#Function to remove an item from a Service Request choice dropdown +function OpCon_DeleteSSChoice($getdropdown,$url,$token,$buttonname,$removeitem,$id) +{ + if($id) + { $get = OpCon_GetSSButton -url $url -token $token -id $id } + else + { $get = OpCon_GetSSButton -button $buttonname -url $url -token $token } + if(@($get).Count -eq 1) + { + $get = $get[0] + + #Get XML information for adding/deleting + $details = [xml] $get.details + + $delete = ($details.request.variables.variable.choice.items.ChildNodes | Where-Object { $_.caption -like $removeitem }) | ForEach-Object { $_.ParentNode.RemoveChild($_) } + + #Shows list of entries + $details.request.variables.variable.choice.items.ChildNodes + + #Set XML back + $get.details = $details.InnerXml + + try + { + $update = Invoke-RestMethod -Method PUT -Uri ($url + "/api/ServiceRequests/" + $get.id) -Headers @{"authorization" = $token} -Body ($get | ConvertTo-Json -Depth 3) -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + + return $update + } + else + { Write-Host "No button named $button!" } +} +New-Alias "opc-deletesschoice" OpCon_DeleteSSChoice + +#Function to add entries to a Service Request choice selection +function OpCon_AddSSChoice($addname,$addvalue,$getdropdown,$url,$token,$buttonname,$id) +{ + if($id) + { $get = OpCon_GetSSButton -url $url -token $token -id $id } + else + { $get = OpCon_GetSSButton -button $buttonname -url $url -token $token } + + if(@($get).Count -eq 1) + { + $get = $get[0] + + #Get XML information for adding/deleting + $details = [xml] $get.details + + if(!($details.request.variables.variable.choice.items.ChildNodes | Where-Object{$_.caption -eq $addname})) + { + $xmlFrag = $details.CreateDocumentFragment() + $xmlFrag.InnerXml="$addname$addvalue" + $add = ($details.request.variables.variable | Where-Object{$_.name -eq $getdropdown}) | ForEach-Object{$_.choice.items.AppendChild($xmlFrag)} + $sorted = ($details.request.variables.variable | Where-Object{$_.name -eq $getdropdown}).choice.items.item | Sort caption + + For($x = 0;$x -lt $sorted.length;$x++) + { + $delete = ($details.request.variables.variable.choice.items.ChildNodes | Where-Object { $_.caption -like $sorted[$x].caption }) | ForEach-Object { $_.ParentNode.RemoveChild($_) } + $xmlFrag.InnerXml = "" + $sorted[$x].caption + "" + $sorted[$x].value + "" + $add = ($details.request.variables.variable | Where-Object{$_.name -eq $getdropdown}) | ForEach-Object{$_.choice.items.AppendChild($xmlFrag)} + } + + #Adds modified items back to original object + $get.details = $details.InnerXml + + try + { + $update = Invoke-RestMethod -Method PUT -Uri ($url + "/api/ServiceRequests/" + $get.id) -Headers @{"authorization" = $token} -Body ($get | ConvertTo-Json -Depth 3) -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + + return $update + } + else + { + Write-Host "Entry already exists!" + } + } + else + { Write-Host "No button named $button!" } +} +New-Alias "opc-addsschoice" OpCon_AddSSChoice + +#Gets information about a Self Service button +function OpCon_GetSSButton($url,$token,$id,$button) +{ + if($id -or $button) + { + if($id) + { $uriget = $url + "/api/ServiceRequests/" + $id } + else + { $uriget = $url + "/api/ServiceRequests?name=" + $button } + + try + { + $getbutton = Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + + if($button) + { + $getbutton = Invoke-RestMethod -Method GET -Uri ($url + "/api/ServiceRequests/" + $getbutton.id) -Headers @{"authorization" = $token} -ContentType "application/json" + } + } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + + return $getbutton + } + else + { Write-Host "No button name or id specified!" } +} +#New-Alias "opgssb" OpCon_GetSSButton + +#Gets a user from the OpCon database +function OpCon_GetUser($username,$url,$token) +{ + try + { + $user = Invoke-RestMethod -Method GET -Uri ($url + "/api/users?loginName=" + $username + "&includeDetails=true") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + + return $user +} +New-Alias "opc-getuser" OpCon_GetUser + +#Get a specific role +function OpCon_GetRole($url,$token,$id,$rolename) +{ + If($id) + { $uriget = $url + "/api/roles/" + $id } + ElseIf($rolename) + { $uriget = $url + "/api/roles?name=" + $rolename } + + if($rolename -or $id) + { + try + { $role = Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + } + Else + { Write-Host "No Id or Rolename specified" } + + return $role +} +New-Alias "opc-getrole" OpCon_GetRole + +#Adds a specific role to a user in OpCon +function OpCon_AddUserRole($user,$rolename,$url,$token) +{ + $userinfo = OpCon_GetUser -username $user -url $url -token $token + if($userinfo.Count -eq 0) + { Write-Host "User $user does not exist" } + else + { + $role = @(OpCon_GetRole -rolename $rolename -url $url -token $token) + if($role.Count -eq 1) + { + $role = $role[0] + if($userinfo[0].Roles -notcontains "$rolename") + { + $userinfo[0].Roles += ,@{id=$role.id;name=$rolename} + + try + { $user = Invoke-RestMethod -Method PUT -Uri ($url + "/api/users/" + $userinfo.id) -Headers @{"authorization" = $token} -Body ($userinfo[0] | ConvertTo-Json -Depth 4) -ContentType "application/json" } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + } + else + { Write-Host "Role $rolename already on user account, not adding" } + } + else + { Write-Host "Role $rolename not found or multiple rolenames found!" } + } + + return $user +} +New-Alias "opc-adduserrole" OpCon_AddUserRole + +#Creates an OpCon user +function OpCon_CreateUser($url,$token,$username,$password,$roleid,$rolename,$email,$notes,$comment) +{ + $get = OpCon_Getuser -url $url -token $token -username $username + if(@($get).Count -eq 1) + { Write-host "User " $username " already exists" } + else + { + if(!$roleid -and $rolename) + { + $role = OpCon_GetRole -url $url -token $token -rolename $rolename + if(@($role).Count -eq 1) + { $roleid = $role[0].id } + } + + #Create OpCon user account + $post = '{"loginName":"' + $username + '","name":"' + $username + '","password":"' + $password + '","externalPassword":"' + $password + '","details":"' + $notes + '","moreDetails":"' + $comment + '","roles":[{"Id":' + $roleid + '}],"email":"' + $email + '"}' + + try + { $create = Invoke-RestMethod -Method POST -Uri ($url + "/api/users") -Headers @{"authorization" = $token} -Body "$post" -ContentType "application/json" } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + } + + return $create +} +New-Alias "opc-createuser" OpCon_CreateUser + +#Sets up a job to disable a created user +function OpCon_DisableDemoUser($url,$token,$username,$userid) +{ + #Get "ADHOC" schedule information + $scheduleinfo = OpCon_GetSchedule -url $url -token $token -sname "ADHOC" -date (Get-Date -Format "MM/dd/yyyy") + + #Make sure only 1 Adhoc schedule was returned + If(@($scheduleinfo).Count -ne 1) + { Write-Host "Too many results for schedule" } + else + { + #Submit JobAdd to disable user in the future + $body = @{ + "scheduleActionItems"=@( + @{ + "id"=$scheduleinfo[0].id; + "jobs"=@( + @{ + "id"="DISABLE OPCON USER"; + "frequency"="OnRequest"; + "instanceProperties"=@( + @{ + "name"="USERNAME"; + "value"=$username + }; + @{ + "name"="id"; + "value"=$userid + } + ) + } + ) + } + ); + "action"="addjobs" + } + + try + { + $addjob = Invoke-RestMethod -Method POST -Uri ($url + "/api/ScheduleActions") -Body ($body | ConvertTo-Json -Depth 7) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + + return $addjob + } +} + +#Updates a field in an OpCon user +function OpCon_UpdateUser($url,$token,$username,$field,$value) +{ + if($username) + { + $getuser = OpCon_GetUser -username $username -url $url -token $token + if($getuser.length -eq 0) # length of 0 indicates no user record exists + { + Write-Host "User $username does not exist" + } + else + { + $user = $getuser[0] + $user.$field = $value + + try + { + $updateduser = Invoke-RestMethod -Method PUT -Uri ($url + "/api/users/" + $user.id) -Headers @{"authorization" = $token} -Body ($user | ConvertTo-Json) -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + + return $updateduser + } + } + else + { Write-Host "No username provided!" } +} +New-Alias "opc-updateuser" OpCon_UpdateUser + +#Get schedule information +function OpCon_GetDailyJobsCountByStatus($url,$token,$date = (Get-Date -format "yyyy-MM-dd"),$status) +{ + try + { + $count = Invoke-RestMethod -Method GET -Uri ($url + "/api/dailyjobs/count_by_status") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + + return $count +} +New-Alias "opc-dailyjobscountbystatus" OpCon_GetDailyJobsCountByStatus + +#Gets daily jobs by status and date (default todays date) +function OpCon_GetDailyJobsByStatus($url,$token,$date = (Get-Date -format "yyyy-MM-dd"),$status) +{ + try + { + $count = Invoke-RestMethod -Method GET -Uri ($url + "/api/dailyjobs?status=" + $status + "&dates=" + $date) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + + return $count +} +New-Alias "opc-dailyjobsbystatus" OpCon_GetDailyJobsByStatus + +function OpCon_GetDailyJobsBySchedule +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$schedule + ,[string] $date = (Get-Date -format "yyyy-MM-dd") + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/dailyjobs?scheduleName=" + $schedule) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-output $_.Exception.Message + } +} +New-Alias "opc-dailyjobsbyschedule" OpCon_GetDailyJobsBySchedule + +#Gets a specific daily job based on the jobs id +function OpCon_GetSpecificDailyJob +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$jid + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/dailyjobs/" + $jid) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} +New-Alias "opc-dailyjob" OpCon_GetSpecificDailyJob + +#Attempts to get an output file from a job run +function OpCon_SubmitJobInstanceFileAction +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$sname + ,[Parameter(Mandatory=$true)] [string]$jname + ,[Parameter(Mandatory=$true)] [string]$path + ,[Parameter(Mandatory=$true)] [string]$date + ,[string] $jobnumber + ) + + if(!$jobnumber) + { + $jobnumber = (OpCon_GetDailyJob -url $url -token $token -sname $sname -jname $jname -date $date).jobNumber + } + + $body = @{ + "action"="FILE"; + "jobInstanceActionItems"=@( + @{ + "id"=$jobnumber; + "jorsRequestParameters"=$path + } + ) + } + + try + { + return Invoke-RestMethod -Method POST -Uri ($url + "/api/jobinstanceactions") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json -Depth 5 ) -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-jobinstancefileaction" OpCon_SubmitJobInstanceFileAction + +#Attempts to get a list of output files from a job run +function OpCon_SubmitJobInstanceListAction +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$sname + ,[Parameter(Mandatory=$true)] [string]$jname + ,[Parameter(Mandatory=$true)] [string]$date + ) + + $jobnumber = (OpCon_GetDailyJob -url $url -token $token -sname $sname -jname $jname -date $date).jobNumber + + $body = @{ + "action"="LIST"; + "jobInstanceActionItems"=@( + @{ "id"=$jobnumber } + ) + } + + try + { + return Invoke-RestMethod -Method POST -Uri ($url + "/api/jobinstanceactions") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json -Depth 5) -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-jobinstancelistaction" OpCon_SubmitJobInstanceListAction + +#Gets information about a previously submitted job action +function OpCon_GetJobInstanceAction +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$id + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/jobinstanceactions/" + $id) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} +New-Alias "opc-jobinstanceaction" OpCon_GetJobInstanceAction + +#Standard function for returning job output, a custom function may be required if there are multiple output files +function OpCon_GetJobOutput($url,$token,$sname,$jname,$date) +{ + $list = OpCon_SubmitJobInstanceListAction -url $url -token $token -sname $sname -jname $jname -date $date + $liststatus = OpCon_GetJobInstanceAction -url $url -token $token -id $list.id + + while((($liststatus.result -ne "success") -and ($liststatus.result -ne "failed"))) + { $liststatus = OpCon_GetJobInstanceAction -url $url -token $token -id $list.id } + + if($liststatus.result -eq "success") + { + $path = $liststatus.jobInstanceActionItems.files | ConvertTo-Json + + $output = OpCon_SubmitJobInstanceFileAction -url $url -token $token -jobnumber $liststatus.jobInstanceActionItems.id -path $path + $outputstatus = OpCon_GetJobInstanceAction -url $url -token $token -id $output.id + while((($outputstatus.result -ne "success") -and ($outputstatus.result -ne "failed"))) + { + $outputstatus = OpCon_GetJobInstanceAction -url $url -token $token -id $output.id + } + + if($outputstatus.result -eq "failed") + { + Write-Host "Problem loading data from jors file" + } + + return $outputstatus + } + else + { + Write-Host "Problem getting job output file list" + } +} +New-Alias "opc-joboutput" OpCon_GetJobOutput + +#Gets a user from the OpCon database +function OpCon_GetUserByComment +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$comment + ) + + try + { + $user = Invoke-RestMethod -Method GET -Uri ($url + "/api/users?includeDetails=true") -Headers @{"authorization" = $token} -ContentType "application/json" + + return $user | Where-Object{ $_.moreDetails -like "*$comment*" } + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } + +} +New-Alias "opc-userbycomment" OpCon_GetUserByComment + +#Get vision tags +function OpCon_GetTags +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string]$date = (Get-Date -format "yyyy-MM-dd") + ) + + try + { + $schedule = Invoke-RestMethod -Method GET -Uri ($url + "/api/vision/cards?dates=" + $date) -Headers @{"authorization" = $token} -ContentType "application/json" + + if($schedule.Count -eq 0) + { Write-Output "No schedules found!" } + else + { return $schedule } + } + catch [Exception] + { + Write-Output $_.Exeption + Write-Output $_.Exception.Message + } +} +New-Alias "opc-gettags" OpCon_GetTags + +#Gets daily jobs by tag for a date +function OpCon_GetDailyJobsByTag +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string] $date = (Get-Date -format "yyyy-MM-dd") + ,[Parameter(Mandatory=$true)] [string]$tag + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/dailyjobs?tags=" + $tag + "&dates=" + $date) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} +New-Alias "opc-dailyjobbytag" OpCon_GetDailyJobsByTag + +#Get Agent count by status +function OpCon_GetAgentCountByStatus +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string] $date = (Get-Date -format "yyyy-MM-dd") + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/machines/count_by_status") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} +New-Alias "opc-agentcountbystatus" GetAgentCountByStatus + +#Get dependencies for a job +function OpCon_GetDependencyByJob +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string]$jid + ,[string]$sname + ,[string]$jname + ,[string]$date = (Get-Date -format "yyyy-MM-dd") + ) + + if(!$jid) + { + if(!$sname -or !$jname) + { + Write-Output "Error, if no job id supplied then schedule/job name required!" + Exit 1 + } + + $jid = (OpCon_GetDailyJob -url $url -token $token -sname $sname -jname $jname -date $date).id + } + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/dailygraphedges/" + $jid) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getdependency" OpCon_GetDependencyByJob + + +#DEPRECATED (use OpCon_GetServiceRequestChoice) Function to get a Service Request choice dropdown +function OpCon_GetSSChoice($dropdown,$url,$token,$button) +{ + $get = OpCon_GetSSButton -button $button -url $url -token $token + if(@($get).Count -eq 1) + { + $get = $get[0] + + #Get XML information for adding/deleting + $details = [xml] $get.details + + return $details.request.variables.variable.choice.items.ChildNodes + } + else + { Write-Host "No button named $button!" } +} +#New-Alias "opcssc" OpCon_GetSSChoice + +#DEPRECATED (renamed as GetServiceRequestInput) Function to get a Service Request input field +function OpCon_GetSSInput($url,$token,$button) +{ + $get = OpCon_GetSSButton -button $button -url $url -token $token + if(@($get).Count -eq 1) + { + $get = $get[0] + + #Get XML information for adding/deleting + $details = [xml] $get.details + + return @($details.request.variables.variable) + } + else + { Write-Host "No button named $button!" } +} + +#Creates an OpCon Role +function OpCon_CreateRole($url,$token,$rolename,$inheritSchedule,$inheritMach,$inheritMachGroup,$permissions) +{ + #Check if role already exists + if(OpCon_GetRole -url $url -token $token -rolename "$rolename") + { Write-Host "Role already exists" } + else + { + #Get role information + $body = New-Object System.Object + $body | Add-Member -type NoteProperty -name "name" -value "$rolename" + if($inheritSchedule) + { + $body | Add-Member -type NoteProperty -name "inheritAllSchedulePrivileges" -value $inheritSchedule + } + if($inheritMach) + { + $body | Add-Member -type NoteProperty -name "inheritAllMachinePrivileges" -value $inheritMach + } + if($inheritMachGroup) + { + $body | Add-Member -type NoteProperty -name "inheritAllMachineGroupPrivileges" -value $inheritMachGroup + } + if($permissions) + { + $body | Add-Member -type NoteProperty -name "permissions" -value $permissions + } + + try + { + $role = Invoke-Restmethod -Method POST -Uri ($url + "/api/roles") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json) -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + write-host $_.Exception.Message + } + + return $role + } +} +New-Alias "opc-createrole" OpCon_CreateRole + +#Creates a Service Request +function OpCon_CreateServiceRequest($url,$token,$name,$doc,$html,$details,$disable,$hide,$category,$categoryName,$roles,$object) +{ + try + { + if($object) + { $servicerequest = Invoke-Restmethod -Method POST -Uri ($url + "/api/ServiceRequests") -Headers @{"authorization" = $token} -Body ($object | ConvertTo-Json -Depth 5) -ContentType "application/json" } + else + { + if($categoryName) + { $categoryObject = OpCon_GetServiceRequestCategory -url $url -token $token -category "$categoryName" } + elseif($category) + { $categoryObject = $category } + + #Build Service Request object + $body = @{ + "name" = $name; + "documentation" = $doc; + "details" = $details; + "disableRule" = $disable; + "hideRule" = $hide; + "serviceRequestCategory" = $categoryObject; + "roles" = @($roles) # This is an array of role objects @{id,name} I have a function for getting roles if needed + } + + $servicerequest = Invoke-Restmethod -Method POST -Uri ($url + "/api/ServiceRequests") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json -Depth 5) -ContentType "application/json" + } + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } + + return $servicerequest +} +New-Alias "opc-createssbutton" OpCon_CreateServiceRequest + +#Deletes a Service Request +function OpCon_DeleteServiceRequest($url,$token,$name) +{ + $button = OpCon_GetSSButton -url $url -token $token -button "$name" + + #Check if button exists + if($button) + { + try + { + $servicerequest = Invoke-Restmethod -Method DELETE -Uri ($url + "/api/ServiceRequests/" + $button.id) -Headers @{"authorization" = $token} -Body "{}" -ContentType "application/json" + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } + + return $servicerequest + } + else + { Write-Host "Service Request does not exist" } +} +New-Alias "opc-deletebutton" OpCon_DeleteServiceRequest + +#Adds a role to a SS button +function OpCon_AddSSButtonRole($url,$token,$button,$rolename) +{ + $rolecheck = "true" + $getbutton = OpCon_GetSSButton -url $url -token $token -button $button + $getbutton.roles | ForEach-Object{ If($_.name -eq $rolename) + { $rolecheck = "false" } + } + If($rolecheck -eq "true") + { + $getrole = OpCon_GetRole -url $url -token $token -rolename $rolename + $getbutton.roles += $getrole + + try + { + $update = Invoke-RestMethod -Method PUT -Uri ($url + "/api/ServiceRequests/" + $getbutton.id) -Body ($getbutton | ConvertTo-JSON) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $update + } + Else + { Write-Host "Button already has role $rolename !" } +} +New-Alias "opc-addssbuttonrole" OpCon_AddSSButtonRole + +#Updates a particular field on a SS button +function OpCon_UpdateSSButton($url,$token,$button,$field,$value) +{ + $getbutton = OpCon_GetSSButton -url $url -token $token -button $button + $getbutton.$field = $value + + try + { + $update = Invoke-RestMethod -Method PUT -Uri ($url + "/api/ServiceRequests/" + $getbutton.id) -Body ($getbutton | ConvertTo-Json -Depth 7) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $update +} +New-Alias "opc-updatessbutton" OpCon_UpdateSSButton + +#Function to get a Service Request category/categories +function OpCon_GetServiceRequestCategory($url,$token,$category,$id) +{ + if($category) + { $uriget = $url + "/api/ServiceRequestCategories?name=" + $category } + elseif($id) + { $uriget = $url + "/api/ServiceRequestCategories/" + $id } + else + { $uriget = $url + "/api/ServiceRequestCategories" } + + try + { + $categories = Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + + if($category) + { $categories = Invoke-RestMethod -Method GET -Uri ($url + "/api/ServiceRequestCategories/" + $categories.id) -Headers @{"authorization" = $token} -ContentType "application/json" } + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $categories +} +New-Alias "opc-getsscategory" OpCon_GetServiceRequestCategory + +#Removes a specific role from a user in OpCon +function OpCon_RemoveUserRole($user,$rolename,$url,$token) +{ + $userinfo = OpCon_GetUser -username $user -url $url -token $token + $role = @(OpCon_GetRole -rolename $rolename -url $url -token $token) + if($role.Count -eq 1) + { + $role = $role[0] + + if($userinfo[0].Roles.name -contains "$rolename") + { + $userinfo[0].Roles = @($userinfo[0].Roles | Where-Object { $_.name -ne "$rolename" }) + $body = $userinfo[0] | ConvertTo-Json -Depth 4 + + try + { + $result = Invoke-RestMethod -Method PUT -Uri ($url + "/api/users/" + $userinfo.id) -Headers @{"authorization" = $token} -Body $body -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + } + else + { Write-Host "Role $rolename is not on user account, not removing" } + + return $result + } + else + { Write-Host "Role $rolename not found or multiple rolenames found!" } +} +New-Alias "opc-removerole" OpCon_RemoveUserRole + +#Handles schedule builds +function OpCon_ScheduleBuild($url,$token,$schedules,$dates,$logfile,$overwrite,$properties,$hold,$namedInstance,$machineName) +{ + #Checks that a schedule name was provided + if($schedules) + { + $scheduleArray = @() + if($schedules -like "*;*") + { $schedules.Split(";") | ForEach-Object{ $scheduleArray += [PSCustomObject]@{ "name" = $_ } } } + else + { $scheduleArray += [PSCustomObject]@{"name" = $schedules } } + + #Use todays date if none provided + if($dates) + { + $dateArray = @() + if($dates -like "*;*") + { $dates.Split(";") | ForEach-Object{ $dateArray += $_ } } + else + { $dateArray += $dates } + } + else + { $dateArray = @(Get-Date -Format "yyyy/MM/dd") } + + #Check to see if properties were provided + if($properties) + { + $propertyArray = @() + if($properties -like "*;*") + { + $properties.Split(";") | ForEach-Object{ + $splitter = $_.Split(",") + $propertyArray += @{ key=$splitter[0];value=$splitter[1] } + } + } + else + { + $splitter = $properties.Split(",") + $propertyArray += @{ key=$splitter[0];value=$splitter[1] } + } + } + + if(!$overwrite) + { $overwrite = $false } + + $body = New-Object System.Object + $body | Add-Member -type NoteProperty -name "schedules" -value $scheduleArray + $body | Add-Member -type NoteProperty -name "dates" -value $dateArray + $body | Add-Member -type NoteProperty -name "properties" -value $propertyArray + $body | Add-Member -type NoteProperty -name "logFile" -value $logfile + $body | Add-Member -type NoteProperty -name "overwrite" -value $overwrite + $body | Add-Member -type NoteProperty -name "hold" -value $hold + $body | Add-Member -type NoteProperty -name "namedInstance" -value $namedInstance + $body | Add-Member -type NoteProperty -name "machineName" -value $machineName + + try + { + $build = (Invoke-RestMethod -Method POST -Uri ($url + "/api/schedulebuilds") -Body ($body | ConvertTo-JSON -Depth 7) -Headers @{"authorization" = $token} -ContentType "application/json") + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + $wait = 15 + for($x=1;$x -lt $wait;$x++) + { + $status = OpCon_ScheduleBuildStatus -url $url -token $token -id $build.id + If($status.message -eq "Completed") + { $x = $wait } + Else + { Start-Sleep -Seconds 1 } + } + + If($status.error) + { Write-host $status.message } + else + { return $status } + } + else + { Write-Host "No schedule name/s provided!" } +} +New-Alias "opc-schbuild" OpCon_ScheduleBuild +New-Alias "opc-schedulebuild" OpCon_SCheduleBuild + +#Checks the status of a Schedule Build +function OpCon_ScheduleBuildStatus +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string] $id + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/schedulebuilds/" + $id) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-schbuildstatus" OpCon_ScheduleBuildStatus +New-Alias "opc-schedulebuildstatus" OpCon_ScheduleBuildStatus + +#Gets a count of schedules by status +function OpCon_ScheduleCountByStatus($url,$token,$dates,$name,$failedJobs,$categories) +{ + $uriget = $url + "/api/dailyschedules/count_by_status" + + #Get property information + If($dates) + { + If($uriget.IndexOf("?") -ge 0) + { $uriget = $uriget + "&dates=" + $dates } + Else + { $uriget = $uriget + "?dates=" + $dates } + } + + If($name) + { + If($uriget.IndexOf("?") -ge 0) + { $uriget = $uriget + "&name=" + $name } + Else + { $uriget = $uriget + "?name=" + $name } + } + + If($failedJobs) + { + If($uriget.IndexOf("?") -ge 0) + { $uriget = $uriget + "&failedJobs=" + $failedJobs } + Else + { $uriget = $uriget + "?failedJobs=" + $failedJobs } + } + + If($categories) + { + If($uriget.IndexOf("?") -ge 0) + { $uriget = $uriget + "&categories=" + $categories } + Else + { $uriget = $uriget + "?categories=" + $categories } + } + + try + { + $countByStatus = (Invoke-Restmethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json") + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } + + return $countByStatus +} +New-Alias "opc-schcountbystatus" OpCon_ScheduleCountByStatus +New-Alias "opc-schedulecountbystatus" OpCon_ScheduleCountByStatus + +#Gets schedule properties +function OpCon_GetScheduleProperty($url,$token,$id,$name,$schedule,$date = (Get-Date -Format "yyyy/MM/dd")) +{ + If($id -or $schedule) + { + $uriget = $url + "/api/dailyschedules/" + + if($id) + { $uriget = $uriget + $id + "/properties" } + else + { + $getsid = OpCon_GetSchedule -url $url -token $token -date $date -sname $schedule + $uriget = $uriget + $getsid.id + "/properties" + } + + If($name) + { $uriget = $uriget + "/" + $name } + + try + { + $properties = Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $properties + } + Else + { Write-Host "Not enough schedule information!" } +} +New-Alias "opc-getschprop" OpCon_GetScheduleProperty +New-Alias "opc-getscheduleprop" OpCon_GetScheduleProperty +New-Alias "opc-getscheduleproperty" OpCon_GetScheduleProperty + +#Gets access codes +function OpCon_GetAccessCode +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string] $id + ,[string] $name + ) + + #Get property information + If($id) + { $uriget = $url + "/api/AccessCodes/" + $id } + ElseIf($name) + { $uriget = $url + "/api/AccessCodes?name=" + $name } + Else + { $uriget = $url + "/api/AccessCodes" } + + try + { + return Invoke-Restmethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + write-output $_ + write-output $_.Exception.Message + } +} +New-Alias "opc-getaccesscode" OpCon_GetAccessCode + +#Creates a new access code +function OpCon_CreateAccessCode +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$name + ) + + #Setup body + $body = @{ "name" = $name } + + try + { + return Invoke-Restmethod -Method POST -Uri ($url + "/api/AccessCodes") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json) -ContentType "application/json" + } + catch [Exception] + { + write-output $_ + write-output $_.Exception.Message + } +} +New-Alias "opc-createaccesscode" OpCon_CreateAccessCode + +#Sets a new name for an access code +function OpCon_SetAccessCode($url,$token,$id,$oldName,$name) +{ + If($oldname -or $id) + { + $accessCode = OpCon_GetAccessCode -url $url -token $token -name $oldname -id $id + + $counter = 0 + $accessCode | ForEach-Object{ $counter++ } + + if($counter -ne 1) + { Write-Host "Too many or no access codes found!" } + else + { + #Set new name + If($name) + { + $accessCode[0].name = $name + + #Update access code + try + { + $update = Invoke-Restmethod -Method PUT -Uri ($url + "/api/AccessCodes/" + $accessCode[0].id) -Headers @{"authorization" = $token} -Body ($accessCode[0] | ConvertTo-Json) -ContentType "application/json" + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } + + return $update + } + Else + { Write-Host "Name not specified!" } + } + } + Else + { Write-Host "Id or Name not specified!" } +} +New-Alias "opc-updateaccesscode" OpCon_SetAccessCode + +#Gets a batch user or list of users +function OpCon_GetBatchUser($url,$token,$id,$ids,$loginName,$roleName,$includeRoles) +{ + #Get batchusers + If($ids -or $loginName -or $roleName -or $includeRoles) + { + $uriget = $url + "/api/batchusers?" + + If($ids) + { $uriget = $uriget + "ids=" + $ids } + ElseIf($loginName) + { $uriget = $uriget + "loginName=" + $loginName } + ElseIf($roleName) + { $uriget = $uriget + "roleName=" + $roleName } + ElseIf($includeRoles) + { $uriget = $uriget + "includeRoles=" + $includeRoles } + } + ElseIf($id) + { $uriget = $url + "/api/batchusers/" + $id } + Else + { $uriget = $url + "/api/batchusers" } + + try + { + $batchUsers = Invoke-Restmethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } + + return $batchUsers +} +New-Alias "opc-getbatchuser" OpCon_GetBatchUser + +#Creates a new batch user +function OpCon_CreateBatchUser($url,$token,$platformName,$loginName,$password,$roleNames) +{ + #Assign Agent type # based off OS name + If($platformName) + { + $platformArray = @("NA","FILE TRANSFER","HP NONSTOP","WINDOWS","OPENVMW","IBMI","UNIX","OS2200","VSE","MCP","NA","NA","ZOS","SAP R3","SAP BW","NA","JEE","JAVA","TUXEDOART","EASE","ASYSCO AMT","SQL") + for($x=0;$x -lt $platformArray.Count;$x++) + { + If($platformArray[$x] -eq $platformName) + { $platformId = $x } + } + + if((!$platformId) -or ($platformId -eq "NA")) + { Write-Host "Invalid platform" } + + $platformObject = @{ id=$platformId;name=$platformName } + } + Else + { + Write-Host "No platform name specified!" + } + + #Get role id + If($roleNames) + { + $roleIdArray = @() + $roleNameArray = $roleNames.Split(",") + for($x=0;$x -lt $roleNameArray.Count;$x++) + { + $roleObject= OpCon_GetRole -url $url -token $token -rolename $roleNameArray[$x] + if($roleObject) + { + $roleIdArray += @{ id=$roleObject.id;name=$roleObject.name } + } + else + { Write-Host "Role" $roleNameArray[$x] "not found!" } + } + } + + #Verify login name + If(!$loginName) + { Write-Host "No login name specified" } + ElseIf(!$password) + { Write-Host "Password not specified!" } + else + { + #Builds Batch User object + $body = New-Object System.Object + $body | Add-Member -type NoteProperty -name "loginName" -value $loginName + $body | Add-Member -type NoteProperty -name "roles" -value $roleIdArray + $body | Add-Member -type NoteProperty -name "password" -value $password + $body | Add-Member -type NoteProperty -name "platform" -value $platformObject + + try + { + $batchUser = Invoke-Restmethod -Method POST -Uri ($url + "/api/batchusers") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json -Depth 7) -ContentType "application/json" + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } + + return $batchUser + } +} +New-Alias "opc-newbatchuser" OpCon_CreateBatchUser + +#Allows for updating a batch use with new roles +function OpCon_SetBatchUser($url,$token,$loginName,$roleNames) +{ + If($loginName) + { + $user = OpCon_GetBatchUser -url $url -token $token -loginName $loginName + + $counter = 0 + $user | ForEach-Object{ $counter++ } + + if($counter -ne 1) + { Write-Host "Too many or no properties found!" } + } + Else + { Write-Host "loginName not specified!" } + + $hdr = @{"authorization" = $token} + + #Set Values + If($roleNames) + { + $roleIdArray = @() + $roleNameArray = $roleNames.Split(",") + for($x=0;$x -lt $roleNameArray.Count;$x++) + { + $roleObject= OpCon_GetRole -url $url -token $token -rolename $roleNameArray[$x] + if($roleObject) + { + $roleIdArray += @{ id=$roleObject.id;name=$roleObject.name } + } + else + { Write-Host "Role" $roleNameArray[$x] "not found!" } + } + $user[0] | Add-Member -type NoteProperty -name "roles" -value @($roleObject) + #$user[0].roles = $roleObject + } + Else + { + $user[0] | Add-Member -type NoteProperty -name "roles" -value @() + } + + #Update property value + $uriput = $url + "/api/batchusers/" + $user[0].id + try + { + $update = (Invoke-Restmethod -Method PUT -Uri $uriput -Headers $hdr -Body ($user[0] | ConvertTo-Json) -ContentType "application/json") + } + catch [Exception] + { + write-host $_ + write-host $_.Exception.Message + } + + return $update +} +New-Alias "opc-updatebatchuser" OpCon_SetBatchUser + +#Starts or stops an OpCon agent based on parameters *New version of ChangeAgentStatus* +function OpCon_MachineAction($url,$token,$agentName,$action) +{ + $machine = OpCon_GetAgent -agentname $agentName -url $url -token $token + + $count = 0 + $machine | ForEach-Object{ $count++ } + + if($count -eq 0) + { Write-Host "No agent by that name!" } + else + { $machine = $machine[0] } + + #Enable/Disable the machine + $machinesArray = @() + $machinesArray += @{ id=$machine.id } + + $body = @{ + "machines" = $machinesArray; + "action" = $action + } + + try + { + $machineaction = (Invoke-Restmethod -Method POST -Uri ($url + "/api/machineactions") -Headers @{"authorization" = $token} -Body ($body | ConvertTo-Json) -ContentType "application/json") + } + catch [Exception] + { + Write-Host $_ + write-host $_.Exception.Message + } + + if($machineaction.result -eq "success") + { return $machineaction } + elseif($machineaction.result -eq "error") + { Write-Host "Machine action attempt had an error" } + else + { + for($x = 0;$x -lt 20;$x++) + { + $result = OpCon_GetMachineAction -url $url -token $token -id $machineaction.id + + if($result.result -eq "success") + { $x = 20 } + elseif($result.result -eq "error") + { + Write-Host "Machine action attempt had an error" + $result + } + + if($x -ne 20) + { Start-Sleep -s 3 } + } + return $result + } +} +New-Alias "opc-machaction" OpCon_MachineAction +New-Alias "opc-machineaction" OpCon_MachineAction + +#Gets information about an OpCon Agent +function OpCon_GetMachineAction +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$id + ) + + #Validates id is passed + try + { + return Invoke-Restmethod -Method GET -Uri ($url + "/api/machineactions/" + $id) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getmachaction" OpCon_GetMachineAction +New-Alias "opc-getmachineaction" OpCon_GetMachineAction + +#Gets information about a submitted Job Action +function OpCon_GetJobAction +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$id + ) + + #Validates id is passed + try + { + return Invoke-Restmethod -Method GET -Uri ($url + "/api/jobactions/" + $id) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } +} +New-Alias "opc-getjobaction" OpCon_GetJobAction + +#Function to get a Service Request choice dropdown +function OpCon_GetServiceRequestChoice($url,$token,$button,$dropdown) +{ + $details = OpCon_GetServiceRequestInput -url $url -token $token -button $button + + if($dropdown) + { + $result = $details | Where-Object{ $_.type -eq "CHOICE" -and $_.name -eq "$dropdown" } + if($result) + { + return $result.choice.items.ChildNodes + } + else + { Write-Host "No dropdowns called $dropdown" } + } + else + { Write-Host "No dropdown specified!" } +} +New-Alias "opc-getsschoice" OpCon_GetServiceRequestChoice + +#Function to get all Service Request choice dropdowns +function OpCon_GetAllServiceRequestChoice($url,$token,$button) +{ + $details = OpCon_GetServiceRequestInput -url $url -token $token -button $button + + $result = $details | Where-Object{ $_.type -eq "CHOICE" } + if($result) + { + $choices = @() + $result | ForEach-Object{ + $choiceName = $_.name + ($result | Where-Object{$_.name -eq $choiceName}).choice.items.ChildNodes | ForEach-Object{ + $choices += [pscustomobject]@{"id"=$choices.Count;"name"=$choiceName;"caption"=$_.caption;"value"=$_.value} + } + } + + #return $result.choice.items.ChildNodes + return $choices + } + else + { Write-Host "No dropdowns found for $button" } +} +New-Alias "opc-getallsschoice" OpCon_GetAllServiceRequestChoice + +#Function to get a Service Request input field +function OpCon_GetServiceRequestInput($url,$token,$button,$input) +{ + $get = OpCon_GetSSButton -button $button -url $url -token $token + if(@($get).Count -eq 1) + { + $get = $get[0] + } + else + { + Write-Host "No button named $button!" + } + + #Get XML information for adding/deleting + $details = [xml] $get.details + + return @($details.request.variables.variable) +} +New-Alias "opc-getssinput" OpCon_GetServiceRequestInput + +#Gets information about all Self Service button +function OpCon_GetAllSSButtons($url,$token) +{ + try + { + $getbutton = Invoke-RestMethod -Method GET -Uri ($url + "/api/ServiceRequests") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $getbutton +} + +#Gets information about a Self Service button +function OpCon_GetServiceRequest($url,$token,$id,$button) +{ + if($id) + { $uriget = $url + "/api/ServiceRequests/" + $id } + elseif($button) + { $uriget = $url + "/api/ServiceRequests?name=" + $button } + else + { $uriget = $url + "/api/ServiceRequests" } + + try + { + $getbutton = Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + + if($button) + { $getbutton = Invoke-RestMethod -Method GET -Uri ($url + "/api/ServiceRequests/" + $getbutton.id) -Headers @{"authorization" = $token} -ContentType "application/json" } + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $getbutton +} +New-Alias "opc-getssbutton" OpCon_GetServiceRequest + +#Function to get all Service Request categories +function OpCon_GetAllServiceRequestCategories($url,$token) +{ + try + { $categories = Invoke-RestMethod -Method GET -Uri ($url + "/api/ServiceRequestCategories?name=") -Headers @{"authorization" = $token} -ContentType "application/json" } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $categories +} +New-Alias "opc-getallcategories" OpCon_GetAllServiceRequestCategories + +#Updates a Self Service category +function OpCon_OverwriteServiceRequestCategory($url,$token,$category,$destCategory,$destCategoryId) +{ + if($destCategory) + { + $oldCategory = (OpCon_GetServiceRequestCategory -url $url -token $token -category $destCategory).id + } + elseif($destCategoryId) + { + $oldCategory = (OpCon_GetServiceRequestCategory -url $url -token $token -id $destCategoryId).id + } + else + { + $oldCategory = $category.id + } + + $category.id = $oldCategory + try + { + $update = Invoke-RestMethod -Method PUT -Uri ($url + "/api/ServiceRequestCategories/" + $oldCategory) -Body ($category | ConvertTo-Json -Depth 7) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + If($_.Exception.Message -like "*Not Found*") + { + Write-Host "Category "$category.name" not found in destination, skipping" + } + Else + { + Write-Host $_ + Write-Host $_.Exception.Message + } + } + + return $update +} +New-Alias "opc-overwritesscategory" OpCon_OverwriteServiceRequestCategory + +#Updates a particular field on a SS button +function OpCon_OverwriteServiceRequest($url,$token,$button,$destButton,$destButtonId) +{ + if($destButton) + { $oldButton = (OpCon_GetServiceRequest -url $url -token $token -button $destButton).id } + elseif($destButtonId) + { $oldButton = (OpCon_GetServiceRequest -url $url -token $token -id $destButtonId).id } + else + { $oldButton = $button.id } + + $button.id = $oldButton + try + { + $update = Invoke-RestMethod -Method PUT -Uri ($url + "/api/ServiceRequests/" + $oldButton) -Body ($button | ConvertTo-Json -Depth 7) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + If($_.Exception.Message -like "*Not Found*") + { + Write-Host "Source button "$button.name" not found in destination, skipping" + } + Else + { + Write-Host $_ + Write-Host $_.Exception.Message + } + } + + return $update +} +New-Alias "opc-overwritessbutton" OpCon_OverwriteServiceRequest + +#Gets information about all Self Service button +function OpCon_GetAllServiceRequests($url,$token) +{ + try + { + $getbutton = Invoke-RestMethod -Method GET -Uri ($url + "/api/ServiceRequests?name=") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $getbutton +} +New-Alias "opc-getssbuttons" OpCon_GetAllServiceRequests + +# Gets Daily Vision Workspaces +function OpCon_GetDailyVisionWorkspaces +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ) + + try + { + return Invoke-Restmethod -Method GET -Uri ($url + "/api/dailyvisionworkspaces") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getdailyvision" OpCon_GetDailyVisionWorkspaces + +# Gets Master Vision Workspaces +function OpCon_GetMasterVisionWorkspaces +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ) + + try + { + return Invoke-Restmethod -Method GET -Uri ($url + "/api/mastervisionworkspaces") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getmastervision" OpCon_GetMasterVisionWorkspaces + +# Updates Master Vision workspaces based on passed in object +function OpCon_UpdateMasterVisionWorkspaces +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$id + ,[Parameter(Mandatory=$true)] [string]$workspaceObj + ) + + try + { + return Invoke-Restmethod -Method PUT -Uri ($url + "/api/mastervisionworkspaces/" + $id) -Body ($workspaceObj | ConvertTo-Json -Depth 15) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-updatemastervision" OpCon_UpdateMasterVisionWorkspaces + +# Gets OpCon server options +function OpCon_GetServerOptions +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ) + + try + { + return Invoke-Restmethod -Method GET -Uri ($url + "/api/serverOptions") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-serveroptions" OpCon_GetServerOptions + +# Updates Server Options +function OpCon_UpdateServerOptions +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$optionsObj + ) + + try + { + return Invoke-Restmethod -Method PUT -Uri ($url + "/api/serverOptions") -Body ($optionsObj | ConvertTo-Json -Depth 5) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-updateserveroptions" OpCon_UpdateServerOptions + +#Gets information about a submitted Schedule Action +function OpCon_GetScheduleAction +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$id + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/ScheduleActions/" + $id) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} + +#Function to add entries to a Service Request choice selection +function OpCon_AddSSChoiceMassImport($addname,$addvalue,$getdropdown,$url,$token,$buttonname) +{ + $get = OpCon_GetSSButton -button $buttonname -url $url -token $token + if(@($get).Count -eq 1) + { + $get = $get[0] + + #Get XML information for adding/deleting + $details = [xml] $get.details + $xmlFrag = $details.CreateDocumentFragment() + + # Creates one big list of all the items for the dropdown + For($x=0;$x -lt $addname.Count;$x++) + { $newEntries = $newEntries + "" + $addname[$x] + "" + $addvalue[$x] + "" } + + $xmlFrag.InnerXml = $newEntries + $add = ($details.request.variables.variable | Where-Object{$_.name -eq $getdropdown}) | ForEach-Object{$_.choice.items.AppendChild($xmlFrag)} + + #Adds modified items back to original object + $get.details = $details.InnerXml + + $uriput = $url + "/api/ServiceRequests/" + $get.id + $body = $get | ConvertTo-Json -Depth 3 + + try + { + $update = Invoke-RestMethod -Method PUT -Uri $uriput -Headers @{"authorization" = $token} -Body $body -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $update + } + else + { Write-Host "No button named $button!" } +} +New-Alias "opc-ssaddmasschoice" OpCon_AddSSChoiceMassImport + +#Updates all the calendar dates +function OpCon_UpdateAllCalendarDates($url,$token,$name,$id,$dates) +{ + if($name -or $id) + { + $counter = 0 + + if($name) + { $calendar = OpCon_GetCalendar -url $url -token $token -name $name } + if($id) + { $calendar = OpCon_GetCalendar -url $url -token $token -id $id } + + $calendar | ForEach-Object{ $counter++ } + + if($counter -ne 1) + { + Write-Host "More than 1 or no calendars returned!" + } + else + { + if($dates) + { + $dates = $dates | Select-Object -Unique + $uriput = $url + "/api/calendars/" + $calendar[0].id + $calendar[0].dates = $dates + + try + { + $calendaradd = Invoke-RestMethod -Method PUT -Uri $uriput -Body ($calendar[0] | ConvertTo-JSON -Depth 7) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_ + Write-Host $_.Exception.Message + } + + return $calendaradd + } + else + { Write-Host "No date/s specified!" } + } + } + else + { Write-Host "No name or id specified!" } +} +New-Alias "opc-updateallcalendars" OpCon_ReadLogErrors + +#Gets daily jobs +function OpCon_GetDailyJobs +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string] $filter + ) + + if($filter) + { $uriget = $url + "/api/dailyjobs?" + $filter } + else + { $uriget = $url + "/api/dailyjobs" } + + try + { + return Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getdailyjobs" OpCon_GetDailyJobs + +# Gets scripts by name +function OpCon_GetScripts +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$scriptname + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/scripts?ScriptName=" + $scriptname.Replace(" ","%20")) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getscripts" OpCon_GetScripts + +# Gets all the versions of a script +function OpCon_GetScriptVersions +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$id + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/scripts/" + $id) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getscriptversion" OpCon_GetScriptVersions + +# Gets the details of a specific script version +function OpCon_GetScript +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$versionId + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/scriptVersions/" + $versionId) -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getscript" OpCon_GetScript + +function OpCon_GetDailyJobFiltered +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string] $id + ,[string] $filter + ) + + if($id) + { $uriget = $url + "/api/dailyjobs/" + $id + $filter } + elseif($filter) + { $uriget = $url + "/api/dailyjobs?" + $filter } + else + { $uriget = $url + "/api/dailyjobs" } + + try + { return Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} +New-Alias "opc-getdailyjobfiltered" OpCon_GetDailyJobFiltered + +function OpCon_UpdateBatchUser +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$field + ,[Parameter(Mandatory=$true)] [string]$value + ,[string] $id + ) + + $user = OpCon_GetBatchUser -url $url -token $token -id $id + + if($field -eq "password") + { $user | Add-Member -type NoteProperty -name "password" -value $value } + else + { $user.$field = $value } + + #Update batch user + try + { + return Invoke-Restmethod -Method PUT -Uri ($url + "/api/batchusers/" + $id) -Headers @{"authorization" = $token} -Body ($user | ConvertTo-JSON -Depth 5) -ContentType "application/json" + } + catch [Exception] + { + write-output $_ + write-output $_.Exception.Message + } +} + +#Get a specific role +function OpCon_GetRoles +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ) + + try + { + return Invoke-RestMethod -Method GET -Uri ($url + "/api/roles?name=") -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} + +function OpCon_PropertyExpression +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$expression + ) + + try + { return Invoke-RestMethod -Method POST -Uri ($url + "/api/PropertyExpression") -Body (@{"Expression" = $expression} | ConvertTo-JSON) -Headers @{"authorization" = $token} -ContentType "application/json" } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} + +function OpCon_Reports +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$limit + ,[Parameter(Mandatory=$true)] [string]$status + ) + + try + { return Invoke-RestMethod -Method GET -Uri ($url + "/api/dailyjobs?&status=$status&limit=$limit") -Headers @{"authorization" = $token} -ContentType "application/json" } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} + +function OpCon_EventToAPI +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$opconUser + ,[Parameter(Mandatory=$true)] [string]$opconEvent + ) + + try + { + $body = @{ + "loginName"=$opconUser; + "events"= @( + @{ + "id"=0; + "eventString"=$opconEvent + } + ) + } + invoke-restmethod -uri ($url + "/api/opconEventsCollection") -Body ($body | ConvertTo-Json -Depth 5) -Headers @{"Authorization"=$token} -ContentType "application/json" -Method POST + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} + +function OpCon_RunScriptRepositoryScript +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$script + ,[string]$version + ) + + try + { + $versions = (Invoke-RestMethod -Method GET -Uri ($url + "/api/scripts?IncludeVersions=true&scriptname=" + $script) -Headers @{"authorization" = $token} -ContentType "application/json").versions + + if($versions) + { + # Set the "latest" to highest number of version + if($version -eq "latest"){ $versions = ((($versions).version | Measure-Object -Maximum).Maximum) } + + # Run the script + Invoke-Expression ((Invoke-RestMethod -uri ($url + "/api/scriptVersions/" + $versions.Where({ $_.version -eq $version }).id) -method GET -headers @{"authorization" = $token }).content) + } + } + catch [Exception] + { + Write-Output $_ + Write-Output $_.Exception.Message + } +} + + +function OpCon_GetIncidents +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$job + ,[Parameter(Mandatory=$true)] [string]$schedule + ,[Parameter(Mandatory=$true)] [string]$date + ) + + try + { + $jobID = (invoke-restmethod -Uri ($url + "/dailyjobs?JobName=" + $job + "&ScheduleName=" + $schedule + "&Dates=" + $date) -Headers @{"Authorization"=$token} -Method GET).uid + + return Invoke-RestMethod -Uri ($url + "/dailyjobs/" + $jobID + "/incidentTickets") -Method GET -Headers @{"authorization"=$token} + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} + +function OpCon_ManageIncident +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$job + ,[Parameter(Mandatory=$true)] [string]$schedule + ,[Parameter(Mandatory=$true)] [string]$date + ,[Parameter(Mandatory=$true)] [string]$ticketId + ,[Parameter(Mandatory=$true)] [string]$ticketUrl + ,[Parameter(Mandatory=$true)] [string]$option + ,[string] $incidentId + ) + + try + { + $jobID = (invoke-restmethod -Uri ($url + "/dailyjobs?JobName=" + $job + "&ScheduleName=" + $schedule + "&Dates=" + $date) -Headers @{"Authorization"=$token} -Method GET).uid + + if($option -eq "add") + { + $body = @{ + "id"=0; + "ticketId"=$ticketId; + "ticketUrl"=$ticketUrl + } + + return invoke-restmethod -Uri ($url + "/dailyjobs/" + $jobID + "/incidentTickets") -Body ($body | ConvertTo-Json) -Method POST -Headers @{"Authorization"=$token} -ContentType "application/json" + } + elseif($option -eq "update") + { + $body = @{ + "id"=$id; + "ticketId"=$ticketId; + "ticketUrl"=$ticketUrl + } + + return invoke-restmethod -Uri ($url + "/dailyjobs/" + $jobID + "/incidentTickets/" + $id) -Body ($body | ConvertTo-Json) -Method PUT -Headers @{"Authorization"=$token} -ContentType "application/json" + } + elseif($option -eq "delete") + { + return invoke-restmethod -Uri ($url + "/dailyjobs/" + $jobID + "/incidentTickets/" + $id) -Method Delete -Headers @{"Authorization"=$token} -ContentType "application/json" + } + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} + +#Gets information about a Self Service button +function OpCon_GetServiceRequest +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[string]$button + ,[int]$id + ) + + if($id -or $button) + { + if($id) + { $uriget = $url + "/api/selfServiceRequests/" + $id.ToString() } + elseif($button) + { $uriget = $url + "/api/selfServiceRequests?name=" + $button } + + try + { + return Invoke-RestMethod -Method GET -Uri $uriget -Headers @{"authorization" = $token} -ContentType "application/json" + } + catch [Exception] + { + Write-Host $_.Exception + Write-Host $_.Exception.Message + } + } + else + { + Write-Host "No button name or id specified!" + Exit 1 + } +} + +function OpCon_ManageServiceRequestChoice +{ + Param( + [Parameter(Mandatory=$true)] [string]$url + ,[Parameter(Mandatory=$true)] [string]$token + ,[Parameter(Mandatory=$true)] [string]$button + ,[Parameter(Mandatory=$true)] [string]$option + ,[Parameter(Mandatory=$true)] [string]$dropdown + ,[array] $items + ) + + $buttonDetails = OpCon_GetServiceRequest -url $url -token $token -button "$button" + $newItems = New-object -TypeName System.Collections.ArrayList + + if($option -eq "add") + { + ($buttonDetails.request.variables.Where({ $_.type -eq "CHOICE" -and $_.name -eq "$dropdown" })).choice.items | ForEach-Object{ + $newItems.Add([pscustomobject]@{ "caption"=$_.caption;"value"=$_.value } ) | Out-Null + } + $items | ForEach-Object{ $newItems.Add([pscustomobject]@{"caption"=$_.caption;"value"=$_.value} ) | Out-Null } + } + elseif($option -eq "update") + { + $items | ForEach-Object{ $newItems.Add([pscustomobject]@{"caption"=$_.caption;"value"=$_.value} ) | Out-Null } + } + elseIf($option -eq "remove") + { + ($buttonDetails.request.variables.Where({ $_.type -eq "CHOICE" -and $_.name -eq "$dropdown" })).choice.items | ForEach-Object{ + if($_.caption -notin $items.caption ) + { $newItems.Add([pscustomobject]@{ "caption"=$_.caption;"value"=$_.value } ) | Out-Null } + } + } + else + { + Write-Output "Invalid -option specified only add, remove, or update are valid" + Exit 1 + } + + ($buttonDetails.request.variables.Where({ $_.type -eq "CHOICE" -and $_.name -eq "$dropdown" })).choice.items = $newItems | Sort-Object -Property caption -Unique + + try + { + Invoke-RestMethod -uri ($url + "/api/selfServiceRequests/" + $buttonDetails.id) -method PUT -body ($buttonDetails | ConvertTo-Json -Depth 7) -headers @{"Authorization"=$token} -ContentType "application/json" + } + catch [Exception] + { + Write-Output $_.Exception + Write-Output $_.Exception.Message + } +} \ No newline at end of file diff --git a/Opcon/README.md b/Opcon/README.md new file mode 100644 index 0000000..e69de29 diff --git a/POP3/Binaries/.keep b/POP3/Binaries/.keep new file mode 100644 index 0000000..e69de29 diff --git a/POP3/Binaries/OpenPop.dll b/POP3/Binaries/OpenPop.dll new file mode 100644 index 0000000..7cb4125 Binary files /dev/null and b/POP3/Binaries/OpenPop.dll differ diff --git a/POP3/Examples/Test-Message.eml b/POP3/Examples/Test-Message.eml new file mode 100644 index 0000000..da516d1 --- /dev/null +++ b/POP3/Examples/Test-Message.eml @@ -0,0 +1,12 @@ +To: recipient.example@gmail.com +From: sender.example@gmail.com +Subject: Test Message +Date: Thu, 29 Mar 2018 02:21:04 +1100 +User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 + Thunderbird/52.6.0 +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8; format=flowed +Content-Language: en-AU +Content-Transfer-Encoding: 7bit + +This is a test message loaded from a file. diff --git a/POP3/README.md b/POP3/README.md new file mode 100644 index 0000000..e69de29 diff --git a/POP3/Source/FetchMail.ps1 b/POP3/Source/FetchMail.ps1 new file mode 100644 index 0000000..c34315b --- /dev/null +++ b/POP3/Source/FetchMail.ps1 @@ -0,0 +1,359 @@ +<#--------------------------------------------------------------------------- + Using POP3 in PowerShell + + Dominik Deak , DEAK Software + + This sample code demonstrates how to take advantage of .NET libraries in + PowerShell to facilitate email communications without using an actual + email client. + + Prerequisites: + + Before using the demo code, the following tools and libraries are + required: + + * PowerShell 6: + * OpenPOP.NET (SourceForge): + * OpenPOP.NET (NuGet): + + Instructions: + + 1. Download the OpenPOP.NET library, either from SourceForge, or NuGet. + + 2. Extract OpenPop.dll binary file from the .zip package into the + .\Binaries subdirectory. + + 3. Supply the incoming email server configuration below, including the + credentials needed for authentication. + + Supporting Resources: + + * Article: + * GitHub: + + Legal and Copyright: + + Released under the MIT License. Copyright 2018, DEAK Software. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + ---------------------------------------------------------------------------#> + +Write-Host "Using POP3 in PowerShell - Dominik Deak , DEAK Software" -ForegroundColor Yellow + +<#--------------------------------------------------------------------------- + Configuration data. + ---------------------------------------------------------------------------#> +# Path configurations +$openPopLibraryURL = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath( "..\Binaries\OpenPop.dll" ) +$tempBaseURL = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath( "..\Temp\" ) # Or use system temp dir via [System.IO.Path]::GetTempPath() +$testMessageURL = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath( "..\Examples\Test-Message.eml" ) + +# Incoming email configuration used for fetching messages +$incomingUsername = "QRCODE-59251" +$incomingPassword = "F1ch0rg@PM$" +$incomingServer = "10.101.10.2" +$incomingPortPOP3 = 110 # Normally 110 (not secure), or 995 (SSL) +$incomingEnableSSL = $false + +<#--------------------------------------------------------------------------- + Construct an POP3 client for the specified host name and credentials. + ---------------------------------------------------------------------------#> +function makePOP3Client + { + Param + ( + [string] $server, + [int] $port, + [bool] $enableSSL, + [string] $username, + [string] $password + ) + + $pop3Client = New-Object OpenPop.Pop3.Pop3Client + + $pop3Client.connect( $server, $port, $enableSSL ) + + if (!$pop3Client.connected) + { + throw "Unable to create POP3 client. Connection failed with server $server" + } + + $pop3Client.authenticate( $username, $password ) + + return $pop3Client + } + +<#--------------------------------------------------------------------------- + Fetch $count messages from the POP3 server and list them in the console. + ---------------------------------------------------------------------------#> +function fetchAndListMessages + { + Param + ( + [OpenPop.Pop3.Pop3Client] $pop3Client, + [int] $count + ) + + $messageCount = $pop3Client.getMessageCount() + + Write-Host "Messages available:" $messageCount + + $messagesEnd = [math]::max( $messageCount - $count, 0 ) + + Write-Host "Fetching messages" $messageCount "to" ($messagesEnd + 1) "..." + + for ( $messageIndex = $messageCount; $messageIndex -gt $messagesEnd; $messageIndex-- ) + { + $incomingMessage = $pop3Client.getMessage( $messageIndex ) + + Write-Host "Message $messageIndex`:" + Write-Host "`tFrom:" $incomingMessage.headers.from + Write-Host "`tSubject:" $incomingMessage.headers.subject + Write-Host "`tDate:" $incomingMessage.headers.dateSent + } + } + +<#--------------------------------------------------------------------------- + Save a single OpenPop.Mime.Message message class to the specified URL. + ---------------------------------------------------------------------------#> +function saveMessage + { + Param + ( + [OpenPop.Mime.Message] $incomingMessage, + [string] $outURL + ) + + New-Item -Path $outURL -ItemType "File" -Force | Out-Null + + $outStream = New-Object IO.FileStream $outURL, "Create" + + $incomingMessage.save( $outStream ) + + $outStream.close() + } + +<#--------------------------------------------------------------------------- + Fetch $count messages from the POP3 server and save them to the specified + $tempURL. + ---------------------------------------------------------------------------#> +function fetchAndSaveMessages + { + Param + ( + [OpenPop.Pop3.Pop3Client] $pop3Client, + [int] $count, + [string] $tempURL + ) + + $messageCount = $pop3Client.getMessageCount() + + Write-Host "Messages available:" $messageCount + + $messagesEnd = [math]::max( $messageCount - $count, 0 ) + + Write-Host "Saving messages" $messageCount "to" ($messagesEnd + 1) "..." + + for ( $messageIndex = $messageCount; $messageIndex -gt $messagesEnd; $messageIndex-- ) + { + $uid = $pop3Client.getMessageUid( $messageIndex ) + + $emailURL = Join-Path -Path $tempURL -ChildPath ($uid + ".eml") + + Write-Host "Saving message $messageIndex to:" $emailURL + + $incomingMessage = $pop3Client.getMessage( $messageIndex ) + + saveMessage $incomingMessage $emailURL + + DeleteMessage $incomingMessage $pop3Client + } + } + +<#--------------------------------------------------------------------------- + + ---------------------------------------------------------------------------#> +function DeleteMessage + { + Param + ( + [OpenPop.Mime.Message] $incomingMessage, + [OpenPop.Pop3.Pop3Client] $pop3Client + #[string] $outURL + ) + Write-Host "Delete message $messageIndex " + $messageDelete = $pop3Client.DeleteMessage($messageIndex) + + } + +<#--------------------------------------------------------------------------- + Save an attachment to the specified URL. + ---------------------------------------------------------------------------#> +function saveAttachment + { + Param + ( + [System.Net.Mail.Attachment] $attachment, + [string] $outURL + ) + + New-Item -Path $outURL -ItemType "File" -Force | Out-Null + + $outStream = New-Object IO.FileStream $outURL, "Create" + + $attachment.contentStream.copyTo( $outStream ) + + $outStream.close() + } + +<#--------------------------------------------------------------------------- + Fetch $count messages from the POP3 server and save their attachments to + the specified $tempURL. + ---------------------------------------------------------------------------#> +function fetchAndSaveAttachments + { + Param + ( + [OpenPop.Pop3.Pop3Client] $pop3Client, + [int] $count, + [string] $tempURL + ) + + $messageCount = $pop3Client.getMessageCount() + + Write-Host "Messages available:" $messageCount + + $messagesEnd = [math]::max( $messageCount - $count, 0 ) + + Write-Host "Saving attachments for messages" $messageCount "to" ($messagesEnd + 1) "..." + + for ( $messageIndex = $messageCount; $messageIndex -gt $messagesEnd; $messageIndex-- ) + { + $uid = $pop3Client.getMessageUid( $messageIndex ) + + $incomingMessage = $pop3Client.getMessage( $messageIndex ).toMailMessage() + + Write-Host "Processing message $messageIndex..." + + foreach ( $attachment in $incomingMessage.attachments ) + { + $attachmentURL = Join-Path -Path $tempURL -ChildPath $uid | Join-Path -ChildPath $attachment.name + + Write-Host "`tSaving attachment to:" $attachmentURL + + saveAttachment $attachment $attachmentURL + } + } + } + +<#--------------------------------------------------------------------------- + Load a single OpenPop.Mime.Message message from the specified URL. + ---------------------------------------------------------------------------#> +function loadMessage + { + Param ( [string] $inURL ) + + $inStream = New-Object IO.FileStream $inURL, "Open" + + $message = [OpenPop.Mime.Message]::load( $inStream ) + + $inStream.close() + + return $message + } + +<#--------------------------------------------------------------------------- + Load the message from the specified URL, convert it to a + System.Net.Mail.MailMessage object, then display its contents in the + console. + + Note: The System.Net.Mail.MailMessage object can be sent via SMTP using + the System.Net.Mail.SmtpClient class. See .NET Frameworks documentation + for details. + ---------------------------------------------------------------------------#> +function loadAndListMessage + { + Param ( [string] $inURL ) + + Write-Host "`Loading message from:" $inURL + + $message = (loadMessage $inURL).toMailMessage() + + Write-Host "`tFrom:" $message.from + Write-Host "`tTo:" $message.to + + if ($message.cc) + { + Write-Host "`tCC:" $message.cc + } + + if ($message.bcc) + { + Write-Host "`tBCC:" $message.bcc + } + + if ($message.replyToList) + { + Write-Host "`tReply To:" $message.replyToList + } + + if ($message.subject) + { + Write-Host "`tSubject:" $message.subject + } + + if ($message.body) + { + Write-Host "`tBody:" $message.body + } + } + + +<#--------------------------------------------------------------------------- + Run the demo. + ---------------------------------------------------------------------------#> +[Reflection.Assembly]::LoadFile( $openPopLibraryURL ) + +try { + Write-Host "Connecting to POP3 server: $incomingServer`:$incomingPortPOP3" + + $pop3Client = makePOP3Client ` + $incomingServer $incomingPortPOP3 $incomingEnableSSL ` + $incomingUsername $incomingPassword + + Remove-Variable -Name incomingPassword + + fetchAndListMessages $pop3Client 10 + fetchAndSaveMessages $pop3Client 10 $tempBaseURL + fetchAndSaveAttachments $pop3Client 10 $tempBaseURL + loadAndListMessage $testMessageURL + + Write-Host "Disconnecting from POP3 server: $incomingServer`:$incomingPortPOP3" + + if ($pop3Client.connected) + { + $pop3Client.disconnect() + } + + $pop3Client.dispose() + + Remove-Variable -Name pop3Client + } + +catch { Write-Error "Caught exception:`n`t$PSItem" } diff --git a/Qlik/API.ps1 b/Qlik/API.ps1 new file mode 100644 index 0000000..868e59f --- /dev/null +++ b/Qlik/API.ps1 @@ -0,0 +1,276 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +param( + [string] $serverUrl = "https://srvtst.acme.com", + [string] $QlikUser = "user@domain", + [string] $TaskId = "xxxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx", + [int] $PollingInterval = 5 + ) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +# Initial Setup +Initial-Setup -serverUrl $serverUrl -QlikUser $QlikUser + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- + +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +function Ignore-SelfSignedCerts { + add-type -TypeDefinition @" + using System.Net; + using System.Security.Cryptography.X509Certificates; + public class TrustAllCertsPolicy : ICertificatePolicy { + public bool CheckValidationResult( + ServicePoint srvPoint, X509Certificate certificate, + WebRequest request, int certificateProblem) { + return true; + } + } +"@ + [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy +} + +function LogConsole($string) +{ + + $TimeStamp = (Get-date -Format dd-MM-yyyy) + " " + (get-date -format HHMMsstt) + $TimeStamp += " " + $string + + write-host $TimeStamp +} + +function Invoke-QlikRestMethod { + param( + [ValidateNotNullorEmpty()] + [String]$Uri, + [ValidateNotNullorEmpty()] + [String]$Method, + [object]$Body = $null + ) + + $uriFull = $Global:QlikProxyRESTApiUrl + $Uri + + #LogConsole ( "Sending Web Request... : $($uriFull)") + + try + { + if ($null -eq $Body) + { + $response = Invoke-RestMethod -Method $Method -Uri $uriFull -Headers $Global:QlikRESTApiAuthHeader -ErrorVariable $RestException + } + else + { + $Body = ConvertTo-Json $Body -Depth 99 + $response = Invoke-RestMethod -Method $Method -Uri $uriFull -Headers $Global:QlikRESTApiAuthHeader -Body $Body -ContentType 'application/json; charset=utf-8' -ErrorVariable $RestException + } + return $response + } + catch + { + Write-Warning ("Error") + Write-Warning ("StatusCode: " + $_.Exception.Response.StatusCode.value__) + Write-Warning ("StatusDescription: " + $_.Exception.Response.StatusDescription) + Write-Warning ("Message: " + $_.Exception.Message) + + throw + ##exit $_.Exception.Response.StatusCode.value__ + } +} + +function Get-QlikApiAuthHeader { + param( + [string] $Token + ) + $authHeader = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" + $authHeader.Add("X-Qlik-xrfkey", ("ABCDEFG123456789")) + $authHeader.Add("opcon-usr", ($QlikUser)) + + return $authHeader + } + + function Initial-Setup { + [cmdletbinding()] + param( + [string] $serverUrl , + [string] $QlikUser + ) + LogConsole ("") + LogConsole ("*********************************************************") + LogConsole (" OpCon Start Task on Qlik") + LogConsole (" QlikUser : " + $QlikUser) + + $serverUrl = $serverUrl.ToLower().TrimEnd("/") + $serverUrl = -join($serverUrl, "/opcon/qrs") + + LogConsole (" Qlik API server url : " + $serverUrl) + LogConsole (" Polling interval : " + $PollingInterval) + LogConsole (" TaskID : " + $TaskId) + + LogConsole ("*********************************************************") + + $Global:QlikProxyRESTApiUrl = $serverUrl + + $Global:QlikRESTApiAuthHeader = Get-QlikApiAuthHeader + + } + + function GetQlikAboutInfo + { + [cmdletbinding()] + param( ) + + LogConsole ("Get Infos from Qlik Server") + + + + $infoUri = "/about?xrfkey=ABCDEFG123456789" + $response = Invoke-QlikRestMethod -Uri $infoUri -Method GET -ContentType "application/json" + + LogConsole ($response) + +} + + +function SubmitQlikTaskAndGetSessionID +{ +[cmdletbinding()] +param( [string] $TaskID ) + + LogConsole ("Submit Task : $($TaskID) and retrieve SessionID") + $sessionID = "" + + try + { + + $infoUri = "/task/" + $TaskID + "/start/synchronous/?xrfkey=ABCDEFG123456789" + #LogConsole ($infoUri) + $response = Invoke-QlikRestMethod -Uri $infoUri -Method POST -ContentType "application/json"-Headers $Global:QlikRESTApiAuthHeader + + #$response = Invoke-QlikRestMethod -Uri $infoUri -Method GET -ContentType "application/json" + + $sessionID = $response.value + + + } + catch { + LogConsole ( "Problem on Tasks' submission") + Exit 100; + } + return $sessionID +} + +function CheckTaskSessionStatus +{ +[cmdletbinding()] +param( [string] $SessionID ) + + LogConsole ("Check Status for Session: $($SessionID)") + $bCompleted = $false; + $bExitCode = 1; + + do { + try + { + $infoUri = "/executionresult?filter=ExecutionId eq $($SessionID) &xrfkey=ABCDEFG123456789" + $response = Invoke-QlikRestMethod -Uri $infoUri -Method GET -ContentType "application/json"-Headers $Global:QlikRESTApiAuthHeader -ErrorVariable $RestException; + + + switch ( $response.status ) + { + 0 { $result = 'NeverStarted' } + 1 { $result = 'Triggered' } + 2 { $result = 'Started' } + 3 { $result = 'Queued' } + 4 { $result = 'AbortInitiated' } + 5 { $result = 'Aborting' } + 6 { $result = 'Aborted' + $bCompleted = $true } + 7 { + $result = 'FinishedSuccess' + $bCompleted = $true + $bExitCode = 0; + } + 8 { + $result = 'FinishedFail' + $bCompleted = $true + } + 9 { $result = 'Skipped' } + 10 { $result = 'Retry' } + 11 { $result = 'Error' + $bCompleted = $true } + 12 { $result = 'Reset' + $bCompleted = $true } + + } + LogConsole ("SessionID: $($SessionID) -> Job Status: $($result)" ) + + } + catch { + LogConsole ( "SessionID: $($SessionID) Problems while checking job stasut, exiting 100") + Exit 100; + } + if ($bCompleted -eq $false) { + Start-Sleep -s $PollingInterval + } + + } while ($bCompleted -eq $false) + return $bExitCode; +} + + + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +# Check for connectivity +#GetQlikAboutInfo + +# Task Submission +Ignore-SelfSignedCerts +$sSessID= "" +$sSessID = SubmitQlikTaskAndGetSessionID -TaskID $TaskId +if ($sSessID.Length -gt 0 ){ + $exitCode = CheckTaskSessionStatus -SessionID $sSessID + LogConsole ( "Exiting from Task Submission e Check Running :$($exitCode)") + +} diff --git a/Qlik/README.md b/Qlik/README.md new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index 6a3c890..f8cd308 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,2 @@ -# Template +# Powershell -dépôt Template \ No newline at end of file diff --git a/Réseau/Ping.ps1 b/Réseau/Ping.ps1 new file mode 100644 index 0000000..8a05db5 --- /dev/null +++ b/Réseau/Ping.ps1 @@ -0,0 +1,19 @@ +#Fonctionne avec PowerShell 7 + +#Ping d'un plage d'IP de 192.168.1.1 à 192.168.1.254 +1..254 | ForEach-Object -ThrottleLimit 50 -Parallel { + Test-Connection "192.168.1.$_" -Count 1 -TimeoutSeconds 2 -ErrorAction SilentlyContinue -ErrorVariable e + if ($e) + { + [PSCustomObject]@{ Destination = $_; Status = $e.Exception.Message } + } +} | Group-Object Destination | Select-Object Name, @{n = 'Status'; e = { $_.Group.Status } } | Where-Object Status -eq "Success" | Sort-Object { [system.version[]]($_.Name) } + +#Ping à partir d'une liste d'IP dans un CSV +Import-Csv -path Ping.csv -Encoding UTF8 | ForEach-Object -ThrottleLimit 5 -Parallel { + Test-Connection $_.IP -Count 1 -TimeoutSeconds 2 -ErrorAction SilentlyContinue -ErrorVariable e + if ($e) + { + [PSCustomObject]@{ Destination = $_; Status = $e.Exception.Message } + } +} | Group-Object Destination | Select-Object Name, @{n = 'Status'; e = { $_.Group.Status } } | Sort-Object { [system.version[]]($_.Name) } \ No newline at end of file diff --git a/Réseau/README.md b/Réseau/README.md new file mode 100644 index 0000000..25d09b6 --- /dev/null +++ b/Réseau/README.md @@ -0,0 +1 @@ +# Réseau diff --git a/Réseau/Templates/Ping.csv b/Réseau/Templates/Ping.csv new file mode 100644 index 0000000..7f3e8eb --- /dev/null +++ b/Réseau/Templates/Ping.csv @@ -0,0 +1,4 @@ +Name, IP +Client 1, 1.1.1.1 +Client 2, 8.8.8.8 +Client 3, 8.8.4.4 diff --git a/Serveur Microsoft/Configuration-serveur.ps1 b/Serveur Microsoft/Configuration-serveur.ps1 new file mode 100644 index 0000000..a2fa691 --- /dev/null +++ b/Serveur Microsoft/Configuration-serveur.ps1 @@ -0,0 +1,131 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + Permet de : + - Renommer le serveur + - Changer la configuration reseau du serveur + - Desactiver la configuration de securite renforer pour IE (admins et/ou les users) + - Desactiver l'ouverture automatique du gestionnaire de serveur au demarrage + + Teste sur : Windows Server 2008 R2 / Windows Server 2012 / Windows Server 2012R2 / Windows Server 2016 / Windows Server 2019 / Windows Server 2022 + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Configuration-serveur.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +$serverIp = "10.0.4.100" +$serverMask = "255.255.255.0" +$serverInterfaceAlias = "Ethernet0" +$serverDefaultGateway = "10.0.4.1" +$serverDnsServers = "10.0.4.4","10.0.4.2" +$serverName = "SWRDSP01" +$desactivateIeEsc = $true +$ieEscUsers = @("admins", "users") # valeurs possible @("admins"), @("users") ou @("admins", "users") +$doNotOpenServerManagerAtLogon = $false +$JoinDomain = $false +$Domain = "Tips-Of-Mine.local" +$pw = "Password123" | ConvertTo-SecureString -asPlainText –Force # Specify the password for the domain admin. +$usr = "$Domain\administrateur" # Specify the domain admin account. +$creds = New-Object System.Management.Automation.PSCredential($usr,$pw) +$RemoteDesktop = $true + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + + # fonction permettant de renommer le serveur + Function Set-ServerName { + param( + [string]$name + ) + + Rename-Computer -NewName $name +} + +Function Set-ServerIpConfiguration { + param( + [string]$ip, + [string]$mask, + [string]$defaultGateway, + [string]$interfaceAlias, + [string[]]$dnsServers + ) + + $nicIndex = (Get-WMIObject Win32_NetworkAdapter | where {$_.netconnectionid -eq $interfaceAlias}).InterfaceIndex + $nic = Get-WmiObject Win32_NetworkAdapterConfiguration | where {$_.InterfaceIndex -eq $nicIndex} + $nic.EnableStatic($ip, $mask) + $nic.SetGateways($defaultGateway) + $nic.SetDNSServerSearchOrder($dnsServers) + } + + # fonction permettant de desactiver la securite renforcée pour ie + Function Disable-IeEscForUsers { + param( + [string[]]$users + ) + + If($ieEscUsers.Contains("admins")) { + $adminKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}" + Set-ItemProperty -Path $adminKey -Name "IsInstalled" -Value 0 + } + If($ieEscUsers.Contains("users")) { + $userKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}" + Set-ItemProperty -Path $userKey -Name "IsInstalled" -Value 0 + } + } + + # fonction permettant de desactiver l'ouverture automatique au demarrage du gestionnaire de serveur + Function Disable-OpenServerManagerAtLogon { + $serverManagerKey = "HKLM:\SOFTWARE\Microsoft\ServerManager" + Set-ItemProperty -Path $serverManagerKey -Name "DoNotOpenServerManagerAtLogon" -Value 1 + } + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +Set-ServerName -name $serverName +Set-ServerIpConfiguration -ip $serverIp -mask $serverMask -defaultGateway $serverDefaultGateway -interfaceAlias $serverInterfaceAlias -dnsServers $serverDnsServers + +If ($desactivateIeEsc -eq $true) { Disable-IeEscForUsers -users $ieEscUsers } +If ($doNotOpenServerManagerAtLogon -eq $true) { Disable-OpenServerManagerAtLogon } +If ($JoinDomain -eq $true) { add-computer –domainname $Domain -Credential $creds -restart -force -verbose } +If ($RemoteDesktop -eq $true) { + Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\" -Name "fDenyTSConnections" -Value 0 + Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\" -Name "UserAuthentication" -Value 1 + Enable-NetFirewallRule -DisplayGroup "Remote Desktop" +} + +Restart-Computer diff --git a/Serveur Microsoft/Import-Module-Offline.ps1 b/Serveur Microsoft/Import-Module-Offline.ps1 new file mode 100644 index 0000000..1c0bcfa --- /dev/null +++ b/Serveur Microsoft/Import-Module-Offline.ps1 @@ -0,0 +1,58 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Import-Module-Offline.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +Find-Module –Name *ReportHTML*| Select Name, Version, Repository + +Save-Module –Name ReportHTML –Path C:\Automation\ + + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/Serveur Microsoft/Install-Service-RDS.ps1 b/Serveur Microsoft/Install-Service-RDS.ps1 new file mode 100644 index 0000000..3269d3b --- /dev/null +++ b/Serveur Microsoft/Install-Service-RDS.ps1 @@ -0,0 +1,76 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Install-Service-RDS.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +Add-WindowsFeature RDS-RD-Server -Restart + +Import-Module RemoteDesktop +Get-Command -Module RemoteDesktop + +New-RDSessionDeployment -ConnectionBroker SRV-RDS-01.it-connect.local -SessionHost SRV-RDS-01.it-connect.local -WebAccessServer SRV-RDS-01.it-connect.local + +Add-RDServer -Server SRV-RDS-01.it-connect.local -Role RDS-LICENSING -ConnectionBroker SRV-RDS-01.it-connect.local + +Set-RDLicenseConfiguration -LicenseServer SRV-RDS-01.it-connect.local -Mode PerUser -ConnectionBroker SRV-RDS-01.it-connect.local + +Get-RDLicenseConfiguration + +New-RDSessionCollection -CollectionName "RdsApps" -CollectionDescription "Collection RDS pour accéder aux apps IT-Connect" -ConnectionBroker SRV-RDS-01.it-connect.local -SessionHost SRV-RDS-01.it-connect.local + +Set-RDSessionCollectionConfiguration -CollectionName "RdsApps" -TemporaryFoldersPerSession $false -TemporaryFoldersDeletedOnExit $false + +Set-RDSessionCollectionConfiguration -CollectionName "RdsApps" -DisconnectedSessionLimitMin 360 -IdleSessionLimitMin 120 + +Get-RDSessionCollectionConfiguration -CollectionName "RdsApps" -Connection + +New-RDRemoteApp -Alias WordPad -DisplayName WordPad -FilePath "C:\Program Files\Windows NT\Accessories\wordpad.exe" -ShowInWebAccess 1 -CollectionName "RdsApps" -ConnectionBroker SRV-RDS-01.it-connect.local + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/Serveur Microsoft/Install-Service-SNMP.ps1 b/Serveur Microsoft/Install-Service-SNMP.ps1 new file mode 100644 index 0000000..94a0003 --- /dev/null +++ b/Serveur Microsoft/Install-Service-SNMP.ps1 @@ -0,0 +1,123 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +#Import ServerManger Module (adds Add-WindowsFeature cmdlet) +Import-Module ServerManager + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Install-Service-SNMP.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber + +$pmanagers = @("10.0.4.57","centreon.tips-of-mine.local") # ADD YOUR MANAGER(s) in format @("manager1","manager2") +$CommString = @("Public","SUP-MON-PRIV") # ADD YOUR COMM STRING(s) in format @("Community1","Community2") + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +# Verifiez si les services SNMP sont deja installes (il doit y en avoir entre 2 et 3 services) +$CheckSNMPServices = Get-WindowsFeature -Name *SNMP* + +#Si il y a au moins un service alors nous allons controler l'ensemble des services +If ($checkSNMPServices.Installed -eq "True") { + Write-Output "Les services SNMP ont été trouvés sur ce systéme. Vérification de l'installation des sous-composants." + + #Vérifier si le service SNMP est installé (note : "Service SNMP" et non "Services") + $CheckSNMPService = Get-WindowsFeature | Where-Object { $_.Name -eq "SNMP-Service" } + + If ($CheckSNMPService.Installed -ne "True") { + + #Install/activation SNMP Service + Write-output "Le service SNMP n'est pas actuellement installé : Installation" + Install-WindowsFeature SNMP-Service -IncludeAllSubFeature -IncludeManagementTools | Out-Null + } + Else { + Write-Output "Service SNMP non nécessaire" + } + + #Check If SNMP-WMI-Provider is Installed + $CheckWMIProvider = Get-WindowsFeature | Where-Object { $_.Name -eq "SNMP-WMI-Provider" } + + If ($CheckWMIProvider.Installed -ne "True") { + + #Installation/Activation des services SNMP + Write-output "SNMP WMI Provider n'est pas actuellement installé : Installation" + Install-WindowsFeature SNMP-WMI-Provider -IncludeAllSubFeature -IncludeManagementTools | Out-Null + } + Else { + Write-Output "SNMP WMI Provider non nécessaire" + } + + $check = Get-WindowsFeature -Name SNMP-Service + + ##Verify Windows Services Are Enabled + If($check.Installed -eq "True") { + Write-Host "Configuring SNMP Services..." + + #Set SNMP Permitted Manager(s) ** WARNING : This will over write current settings ** + reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v 1 /t REG_SZ /d localhost /f | Out-Null + + #Set SNMP Traps and SNMP Community String(s) - *Read Only* + Foreach ($String in $CommString) { + reg add ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\" + $String) /f | Out-Null + # Set the Default value to be null + reg delete ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\" + $String) /ve /f | Out-Null + reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\ValidCommunities" /v $String /t REG_DWORD /d 4 /f | Out-Null + $i = 2 + Foreach ($Manager in $PManagers) { + reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v $i /t REG_SZ /d $manager /f | Out-Null + reg add ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\" + $String) /v $i /t REG_SZ /d $manager /f | Out-Null + $i++ + } + } + } +} +#Sinon nous installatons l'ensemble des composants +Else { + Write-Output "Aucun service SNMP n'a été trouvé installé sur ce systéme. Installation de SNMP et de ses sous-composants" + + #Installation/Activation des services SNMP + Install-WindowsFeature SNMP-Service -IncludeAllSubFeature -IncludeManagementTools | Out-Null +} + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/Serveur Microsoft/Key 2022/Key-Activation.ps1 b/Serveur Microsoft/Key 2022/Key-Activation.ps1 new file mode 100644 index 0000000..671a779 --- /dev/null +++ b/Serveur Microsoft/Key 2022/Key-Activation.ps1 @@ -0,0 +1,58 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : 26/11/2022 + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Key-Activation.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +DISM /online /Set-Edition:ServerStandard /ProductKey:VDYBN-27WPP-V4HQT-9VMD4-VMK7H /AcceptEula + +#DISM /online /Set-Edition:ServerDatacenter /ProductKey:WX4NM-KYWYW-QJJR4-XV3QB-6VM33 /AcceptEula + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript + diff --git a/Serveur Microsoft/Liste-Partage-Reseau.ps1 b/Serveur Microsoft/Liste-Partage-Reseau.ps1 new file mode 100644 index 0000000..6e0d17d --- /dev/null +++ b/Serveur Microsoft/Liste-Partage-Reseau.ps1 @@ -0,0 +1,234 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +Param +( + [Parameter(Mandatory=$false)] + [Alias('Computer')][String[]]$ComputerName=$Env:COMPUTERNAME, + + [Parameter(Mandatory=$false)] + [Alias('NTFS')][Switch]$NTFSPermission, + + [Parameter(Mandatory=$false)] + [Alias('Cred')][System.Management.Automation.PsCredential]$Credential +) + +$Database = @() +$DatabaseNTFS = @() + +$RecordErrorAction = $ErrorActionPreference + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +Function GetSharedFolderPermission($ComputerName) { + #test server connectivity + $PingResult = Test-Connection -ComputerName $ComputerName -Count 1 -Quiet + If($PingResult) { + #check the credential whether trigger + If($Credential) { + $SharedFolderSecs = Get-WmiObject -Class Win32_LogicalShareSecuritySetting -ComputerName $ComputerName -Credential $Credential -ErrorAction SilentlyContinue + } + Else { + $SharedFolderSecs = Get-WmiObject -Class Win32_LogicalShareSecuritySetting -ComputerName $ComputerName -ErrorAction SilentlyContinue + } + + Foreach ($SharedFolderSec in $SharedFolderSecs) { + $Objs = @() #define the empty array + + $SecDescriptor = $SharedFolderSec.GetSecurityDescriptor() + Foreach($DACL in $SecDescriptor.Descriptor.DACL) { + $DACLDomain = $DACL.Trustee.Domain + $DACLName = $DACL.Trustee.Name + + If($DACLDomain -ne $null) { + $UserName = "$DACLDomain\$DACLName" + } + Else { + $UserName = "$DACLName" + } + + #customize the property + $Properties = @{'ComputerName' = $ComputerName + 'ConnectionStatus' = "Success" + 'SharedFolderName' = $SharedFolderSec.Name + 'SharedFolderPath' = $SharedFolder.Path + 'SecurityPrincipal' = $UserName + 'FileSystemRights' = [Security.AccessControl.FileSystemRights]$($DACL.AccessMask -as [Security.AccessControl.FileSystemRights]) + 'AccessControlType' = [Security.AccessControl.AceType]$DACL.AceType} + $SharedACLs = New-Object -TypeName PSObject -Property $Properties + $Objs += $SharedACLs + } + $Objs|Select-Object ComputerName,ConnectionStatus,SharedFolderName,SharedFolderPath,SecurityPrincipal, FileSystemRights,AccessControlType + } + } + Else { + $Properties = @{'ComputerName' = $ComputerName + 'ConnectionStatus' = "Fail" + 'SharedFolderName' = "Not Available" + 'SecurityPrincipal' = "Not Available" + 'FileSystemRights' = "Not Available" + 'AccessControlType' = "Not Available"} + $SharedACLs = New-Object -TypeName PSObject -Property $Properties + $Objs += $SharedACLs + $Objs|Select-Object ComputerName,ConnectionStatus,SharedFolderName,SharedFolderPath,SecurityPrincipal, FileSystemRights,AccessControlType + } +} + +Function GetSharedFolderNTFSPermission($ComputerName) { + #test server connectivity + $PingResult = Test-Connection -ComputerName $ComputerName -Count 1 -Quiet + If($PingResult) { + #check the credential whether trigger + If($Credential) { + $SharedFolders = Get-WmiObject -Class Win32_Share -ComputerName $ComputerName -Credential $Credential -ErrorAction SilentlyContinue + } + Else { + $SharedFolders = Get-WmiObject -Class Win32_Share -ComputerName $ComputerName -ErrorAction SilentlyContinue + } + + Foreach($SharedFolder in $SharedFolders) { + $Objs = @() + + $SharedFolderPath = [regex]::Escape($SharedFolder.Path) + If($Credential) { + $SharedNTFSSecs = Get-WmiObject -Class Win32_LogicalFileSecuritySetting -Filter "Path='$SharedFolderPath'" -ComputerName $ComputerName -Credential $Credential + } + Else { + $SharedNTFSSecs = Get-WmiObject -Class Win32_LogicalFileSecuritySetting -Filter "Path='$SharedFolderPath'" -ComputerName $ComputerName + } + + $SecDescriptor = $SharedNTFSSecs.GetSecurityDescriptor() + Foreach($DACL in $SecDescriptor.Descriptor.DACL) { + $DACLDomain = $DACL.Trustee.Domain + $DACLName = $DACL.Trustee.Name + If($DACLDomain -ne $null) { + $UserName = "$DACLDomain\$DACLName" + } + Else { + $UserName = "$DACLName" + } + + #customize the property + $Properties = @{'ComputerName' = $ComputerName + 'ConnectionStatus' = "Success" + 'SharedFolderName' = $SharedFolder.Name + 'SharedFolderPath' = $SharedFolder.Path + 'SecurityPrincipal' = $UserName + 'FileSystemRights' = [Security.AccessControl.FileSystemRights]$($DACL.AccessMask -as [Security.AccessControl.FileSystemRights]) + 'AccessControlType' = [Security.AccessControl.AceType]$DACL.AceType + 'AccessControlFalgs' = [Security.AccessControl.AceFlags]$DACL.AceFlags } + + $SharedNTFSACL = New-Object -TypeName PSObject -Property $Properties + $Objs += $SharedNTFSACL + } + $Objs |Select-Object ComputerName,ConnectionStatus,SharedFolderName,SharedFolderPath,SecurityPrincipal,FileSystemRights, ` + AccessControlType,AccessControlFalgs -Unique + } + } + Else { + $Properties = @{'ComputerName' = $ComputerName + 'ConnectionStatus' = "Fail" + 'SharedFolderName' = "Not Available" + 'SecurityPrincipal' = "Not Available" + 'FileSystemRights' = "Not Available" + 'AccessControlType' = "Not Available" + 'AccessControlFalgs' = "Not Available" } + + $SharedNTFSACL = New-Object -TypeName PSObject -Property $Properties + $Objs += $SharedNTFSACL + $Objs |Select-Object ComputerName,ConnectionStatus,SharedFolderName,SharedFolderPath,SecurityPrincipal,FileSystemRights, ` + AccessControlType,AccessControlFalgs -Unique + } +} + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +Clear-Host + +$Table = New-Object 'System.Collections.Generic.List[System.Object]' + +$ListServeur = Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server*'} + +Foreach ($Serveur in $ListServeur) { + Try { + Test-Connection -computername $Serveur.DNSHostName -Count 1 -ErrorAction stop | Out-Null + Write-host $Serveur.DNSHostName + + $ListePartage = GetSharedFolderPermission -ComputerName $Serveur.DNSHostName + + #$ListePartageNFTS = GetSharedFolderNTFSPermission -ComputerName $Serveur.DNSHostName + + If (($ListePartage).Count -eq 0) { + + } + Else { + $Database += $ListePartage + } + + #If (($ListePartageNFTS).Count -eq 0) { +# + #} + #Else { + # $DatabaseNFTS += $ListePartageNFTS + #} + } + Catch [System.Net.NetworkInformation.PingException] { + Write-Warning "$Serveur.DNSHostName ne répond pas" + } +} + +$Database | Out-GridView +#$DatabaseNFTS | Out-GridView + +#restore the error action +$ErrorActionPreference = $RecordErrorAction + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcriptg \ No newline at end of file diff --git a/Serveur Microsoft/Modification-Fichier.ps1 b/Serveur Microsoft/Modification-Fichier.ps1 new file mode 100644 index 0000000..ca60eed --- /dev/null +++ b/Serveur Microsoft/Modification-Fichier.ps1 @@ -0,0 +1,87 @@ +<# +.SYNOPSIS + Lorsque l'on doit modifier un ou plusieur fichier sur des serveurs de facon rapide et relancer le service associé à l'application + +.NOTES + Version: 1.0 + Author: Hubert CORNET + Creation Date: 15/11/2022 + Purpose/Change: + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + Permet de modifier le contenu d'un fichier et relancer le service assosié + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +cls + +# Liste l'ensemble des serveurs d'un domaine +$ListServer = Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server*'} + +Foreach ($ServerName in $ListServer) { + Try { + Test-Connection -computername $ServerName.DNSHostName -Count 1 -ErrorAction stop | Out-Null + + Write-host $ServerName.DNSHostName + + $ServerFolder = Invoke-Command -ComputerName $ServerName.DNSHostName -ScriptBlock{ + $FileToCheck = "C:\Program Files\CYBERWATCH SAS\CyberwatchAgent\agent.conf" + + If (Test-Path $FileToCheck -PathType leaf) { + Write-host " - Fichier present" + + # Ouvre le fichier + $content = Get-Content $FileToCheck + + # Modifie la ligne 12 + $content[11] = "enabled = True" + + # Sauvegarde le fichier + $content | Set-Content -Path $FileToCheck + + # relance le service + Restart-Service -Name CyberwatchService + } + Else { + Write-host " - pas de fichier" + } + } + } + Catch [System.Net.NetworkInformation.PingException] { + Write-Warning "$ServerName ne répond pas" + } +} \ No newline at end of file diff --git a/Serveur Microsoft/README.md b/Serveur Microsoft/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Serveur Microsoft/Remote-Reboot-Computer.ps1 b/Serveur Microsoft/Remote-Reboot-Computer.ps1 new file mode 100644 index 0000000..88b110f --- /dev/null +++ b/Serveur Microsoft/Remote-Reboot-Computer.ps1 @@ -0,0 +1,60 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : 18/11/2022 + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +Param( + [Parameter(Mandatory=$True,Position=1)] + [int]$ComputerName + ) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Reboot-Cumputer-Remote.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +Restart-Computer -ComputerName $ComputerName -force + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript diff --git a/Serveur Microsoft/logoff-rdp.ps1 b/Serveur Microsoft/logoff-rdp.ps1 new file mode 100644 index 0000000..8cae3b3 --- /dev/null +++ b/Serveur Microsoft/logoff-rdp.ps1 @@ -0,0 +1,4 @@ +Invoke-Command -ComputerName 'localhost' -ScriptBlock { logoff 1 } +Invoke-Command -ComputerName 'localhost' -ScriptBlock { logoff 2 } +Invoke-Command -ComputerName 'localhost' -ScriptBlock { logoff 3 } +Invoke-Command -ComputerName 'localhost' -ScriptBlock { logoff 4 } \ No newline at end of file diff --git a/Serveur Microsoft/service.ps1 b/Serveur Microsoft/service.ps1 new file mode 100644 index 0000000..e943abc --- /dev/null +++ b/Serveur Microsoft/service.ps1 @@ -0,0 +1,22 @@ +# +# Change service user name and password +# www.sivarajan.com +# +clear +$UserName = "CONNECT\Tomcat" +$Password = "Password" +$Service = "TomcatCPT16073" #Change service name with your service name +$Cred = Get-Credential #Prompt you for user name and password +Import-CSV C:\Scripts\input.csv | % { +$ServerN = $_.ServerName +$svcD=gwmi win32_service -computername $ServerN -filter "name='$service'" -Credential $cred +$StopStatus = $svcD.StopService() +If ($StopStatus.ReturnValue -eq "0") # validating status - http://msdn.microsoft.com/en-us/library/aa393673(v=vs.85).aspx + {write-host "$ServerN -> Service Stopped Successfully"} +$ChangeStatus = $svcD.change($null,$null,$null,$null,$null,$null,$UserName,$Password,$null,$null,$null) +If ($ChangeStatus.ReturnValue -eq "0") + {write-host "$ServerN -> Sucessfully Changed User Name"} +$StartStatus = $svcD.StartService() +If ($ChangeStatus.ReturnValue -eq "0") + {write-host "$ServerN -> Service Started Successfully"} +} \ No newline at end of file diff --git a/SharePoint Online/Get-ExternalSharingReport.ps1 b/SharePoint Online/Get-ExternalSharingReport.ps1 new file mode 100644 index 0000000..7f05733 --- /dev/null +++ b/SharePoint Online/Get-ExternalSharingReport.ps1 @@ -0,0 +1,223 @@ +<# +============================================================================================= +Name: Office 365 external user file access report +Description: This script exports SharePoint Online external user file access report to CSV +Version: 1.0 +Website: o365reports.com +Script by: O365Reports Team +For detailed script execution: https://o365reports.com/2021/05/20/audit-sharepoint-online-external-sharing-using-powershell +============================================================================================ +#> + +Param +( + [Parameter(Mandatory = $false)] + [Nullable[DateTime]]$StartDate, + [Nullable[DateTime]]$EndDate, + [switch]$SharePointOnline, + [switch]$OneDrive, + [string]$AdminName, + [string]$Password +) + +Function Connect_Exo { + #Check for EXO v2 module inatallation + $Module = Get-Module ExchangeOnlineManagement -ListAvailable + if ($Module.count -eq 0) { + Write-Host Exchange Online PowerShell V2 module is not available -ForegroundColor yellow + $Confirm = Read-Host Are you sure you want to install module? [Y] Yes [N] No + if ($Confirm -match "[yY]") { + Write-host "Installing Exchange Online PowerShell module" + Install-Module ExchangeOnlineManagement -Repository PSGallery -AllowClobber -Force + } + else { + Write-Host EXO V2 module is required to connect Exchange Online.Please install module using Install-Module ExchangeOnlineManagement cmdlet. + Exit + } + } + Write-Host Connecting to Exchange Online... + if (($AdminName -ne "") -and ($Password -ne "")) { + $SecuredPassword = ConvertTo-SecureString -AsPlainText $Password -Force + $Credential = New-Object System.Management.Automation.PSCredential $AdminName, $SecuredPassword + Connect-ExchangeOnline -Credential $Credential + } + else { + Connect-ExchangeOnline + } +} + +$MaxStartDate = ((Get-Date).AddDays(-89)).Date + +#Getting external user file access for past 90 days +if (($StartDate -eq $null) -and ($EndDate -eq $null)) { + $EndDate = (Get-Date).Date + $StartDate = $MaxStartDate +} +$startDate +#Getting start date to generate external sharing report +While ($true) { + if ($StartDate -eq $null) { + $StartDate = Read-Host Enter start time for report generation '(Eg:04/28/2021)' + } + Try { + $Date = [DateTime]$StartDate + if ($Date -ge $MaxStartDate) { + break + } + else { + Write-Host `nExternal sharing report can be retrieved only for past 90 days. Please select a date after $MaxStartDate -ForegroundColor Red + return + } + } + Catch { + Write-Host `nNot a valid date -ForegroundColor Red + } +} + + +#Getting end date to generate external sharing report +While ($true) { + if ($EndDate -eq $null) { + $EndDate = Read-Host Enter End time for report generation '(Eg: 04/28/2021)' + } + Try { + $Date = [DateTime]$EndDate + if ($EndDate -lt ($StartDate)) { + Write-Host End time should be later than start time -ForegroundColor Red + return + } + break + } + Catch { + Write-Host `nNot a valid date -ForegroundColor Red + } +} + +Connect_Exo +$OutputCSV = ".\ExternalSharingReport_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv" +$IntervalTimeInMinutes = 1440 #$IntervalTimeInMinutes=Read-Host Enter interval time period '(in minutes)' +$CurrentStart = $StartDate +$CurrentEnd = $CurrentStart.AddMinutes($IntervalTimeInMinutes) + +#Check whether CurrentEnd exceeds EndDate +if ($CurrentEnd -gt $EndDate) { + $CurrentEnd = $EndDate +} + +if ($CurrentStart -eq $CurrentEnd) { + Write-Host Start and end time are same.Please enter different time range -ForegroundColor Red + Exit +} + +$AggregateResults = @() +$CurrentResult = @() +$CurrentResultCount = 0 +$AggregateResultCount = 0 +Write-Host `nRetrieving external sharing events from $StartDate to $EndDate... +$ProcessedAuditCount = 0 +$OutputEvents = 0 +$ExportResult = "" +$ExportResults = @() + +while ($true) { + #Getting exteranl sharing audit data for given time range + $Results = Search-UnifiedAuditLog -StartDate $CurrentStart -EndDate $CurrentEnd -Operations "Sharinginvitationcreated,AnonymousLinkcreated,AddedToSecureLink" -SessionId s -SessionCommand ReturnLargeSet -ResultSize 5000 + $ResultCount = ($Results | Measure-Object).count + foreach ($Result in $Results) { + $ProcessedAuditCount++ + $MoreInfo = $Result.auditdata + $Operation = $Result.Operations + $AuditData = $Result.auditdata | ConvertFrom-Json + $Workload = $AuditData.Workload + + #Filter for SharePointOnline external Sharing events + If ($SharePointOnline.IsPresent -and ($Workload -eq "OneDrive")) { + continue + } + + If ($OneDrive.IsPresent -and ($Workload -eq "SharePoint")) { + continue + } + + #Check for Guest sharing + if ($Operation -ne "AnonymousLinkcreated") { + If ($AuditData.TargetUserOrGroupType -ne "Guest") { + continue + } + $SharedWith = $AuditData.TargetUserOrGroupName + } + else { + $SharedWith = "Anyone with the link can access" + } + + $ActivityTime = Get-Date($AuditData.CreationTime) -format g + $SharedBy = $AuditData.userId + $SharedResourceType = $AuditData.ItemType + $sharedResource = $AuditData.ObjectId + $SiteURL = $AuditData.SiteURL + + + #Export result to csv + $OutputEvents++ + $ExportResult = @{'Shared Time' = $ActivityTime; 'Sharing Type' = $Operation; 'Shared By' = $SharedBy; 'Shared With' = $SharedWith; 'Shared Resource Type' = $SharedResourceType; 'Shared Resource' = $SharedResource; 'Site url' = $Siteurl; 'Workload' = $Workload; 'More Info' = $MoreInfo } + $ExportResults = New-Object PSObject -Property $ExportResult + $ExportResults | Select-Object 'Shared Time', 'Shared By', 'Shared With', 'Shared Resource Type', 'Shared Resource', 'Site URL', 'Sharing Type', 'Workload', 'More Info' | Export-Csv -Path $OutputCSV -Notype -Append + } + Write-Progress -Activity "`n Retrieving external sharing events from $CurrentStart to $CurrentEnd.."`n" Processed audit record count: $ProcessedAuditCount" + $currentResultCount = $CurrentResultCount + $ResultCount + if ($CurrentResultCount -ge 50000) { + Write-Host Retrieved max record for current range.Proceeding further may cause data loss or rerun the script with reduced time interval. -ForegroundColor Red + $Confirm = Read-Host `nAre you sure you want to continue? [Y] Yes [N] No + if ($Confirm -match "[Y]") { + Write-Host Proceeding audit log collection with data loss + [DateTime]$CurrentStart = $CurrentEnd + [DateTime]$CurrentEnd = $CurrentStart.AddMinutes($IntervalTimeInMinutes) + $CurrentResultCount = 0 + $CurrentResult = @() + if ($CurrentEnd -gt $EndDate) { + $CurrentEnd = $EndDate + } + } + else { + Write-Host Please rerun the script with reduced time interval -ForegroundColor Red + Exit + } + } + + + if ($Results.count -lt 5000) { + #$AggregateResultCount +=$CurrentResultCount + if ($CurrentEnd -eq $EndDate) { + break + } + $CurrentStart = $CurrentEnd + if ($CurrentStart -gt (Get-Date)) { + break + } + $CurrentEnd = $CurrentStart.AddMinutes($IntervalTimeInMinutes) + $CurrentResultCount = 0 + $CurrentResult = @() + if ($CurrentEnd -gt $EndDate) { + $CurrentEnd = $EndDate + } + } +} + +If ($OutputEvents -eq 0) { + Write-Host No records found +} +else { + Write-Host `nThe output file contains $OutputEvents audit records + if ((Test-Path -Path $OutputCSV) -eq "True") { + Write-Host `nThe Output file availble in $OutputCSV -ForegroundColor Green + $Prompt = New-Object -ComObject wscript.shell + $UserInput = $Prompt.popup("Do you want to open output file?", ` + 0, "Open Output File", 4) + If ($UserInput -eq 6) { + Invoke-Item "$OutputCSV" + } + } +} + +#Disconnect Exchange Online session +Disconnect-ExchangeOnline -Confirm:$false -InformationAction Ignore -ErrorAction SilentlyContinue \ No newline at end of file diff --git a/SharePoint Online/Get-SharePointReport.ps1 b/SharePoint Online/Get-SharePointReport.ps1 new file mode 100644 index 0000000..3ada226 --- /dev/null +++ b/SharePoint Online/Get-SharePointReport.ps1 @@ -0,0 +1,80 @@ +# Before using this script you must register the PNP App with the Cmdlet : Register-PnPManagementShellAccess + +$creduser = Read-Host "Admin email" +$credpassword = Read-Host "Admin Password" +$SiteURL = Read-Host "Site library URL" +$ListName = Read-Host "List Name" + +[securestring]$secStringPassword = ConvertTo-SecureString $credpassword -AsPlainText -Force +[pscredential]$credObject = New-Object System.Management.Automation.PSCredential ($creduser, $secStringPassword) + +Connect-AzureAD -Credential $credObject + +Connect-PnPOnline -Url $SiteURL -Credentials $credObject + +$Table2 = New-Object 'System.Collections.Generic.List[System.Object]' + +$SpFolderList = Get-PnPFolderItem -FolderSiteRelativeUrl $ListName -ItemType Folder + +foreach ($Folder in $SpFolderList) { + + $context = Get-PnPContext + $file = Get-PnPFolder -Url $Folder.ServerRelativeUrl -Includes ListItemAllFields.RoleAssignments, ListItemAllFields.HasUniqueRoleAssignments + $context.Load($file); + $context.ExecuteQuery(); + + if ($file.ListItemAllFields.HasUniqueRoleAssignments -eq $True) { + foreach ($roleAssignments in $file.ListItemAllFields.RoleAssignments) { + Get-PnPProperty -ClientObject $roleAssignments -Property RoleDefinitionBindings, Member + $PermissionType = $roleAssignments.Member.PrincipalType + $PermissionLevels = $roleAssignments.RoleDefinitionBindings | Select-Object -ExpandProperty Name + $PermissionLevels = ($PermissionLevels | Where-Object { $_ -notlike "Acc*s limit*" }) -join ", " + If ($PermissionLevels.Length -eq 0) { Continue } + if ($PermissionType -eq "SecurityGroup") { + + $Group = Get-AzureAdGroup -Filter "DisplayName eq '$($roleAssignments.Member.Title)'" | Where-Object { $_.MailEnabled -eq $false -and $_.SecurityEnabled -eq $true } + + if (!$Group) { + $Users = "Groupe Introuvable: Erreur" + } + else { + $Users = (Get-AzureADGroupMember -ObjectId $Group.ObjectID | Sort-Object DisplayName | Select-Object -ExpandProperty DisplayName) -join ", " + } + + + $obj2 = [PSCustomObject]@{ + 'Dossier' = $Folder.Name + 'Type' = $PermissionType + 'Nom' = $roleAssignments.Member.Title + 'Membres' = $Users + 'Droit' = $PermissionLevels + } + } + else { + $obj2 = [PSCustomObject]@{ + 'Dossier' = $Folder.Name + 'Type' = $PermissionType + 'Nom' = $roleAssignments.Member.Title + 'Membres' = "" + 'Droit' = $PermissionLevels + } + } + $table2.add($obj2) + } + } + +} + +$table2 | Export-Csv -Path "Dossier-SharePoint.csv" -Delimiter ";" -Encoding UTF8 -NoTypeInformation + +try { + Import-Module -Name PSWriteHTML + New-HTML { + New-HTMLTable -DataTable $table2 -Title 'SharePoint Library Rights' -HideFooter -PagingLength 25 -AlphabetSearch { + New-TableAlphabetSearch -ColumnName 'Name' + } + } -ShowHTML -FilePath "SharePointReport.html" -Online +} +catch { + { Write-Host "PSWriteHTLM module is not present" } +} diff --git a/SharePoint Online/New-SpoLibrary.ps1 b/SharePoint Online/New-SpoLibrary.ps1 new file mode 100644 index 0000000..83ef16a --- /dev/null +++ b/SharePoint Online/New-SpoLibrary.ps1 @@ -0,0 +1,54 @@ +$creduser = Read-Host "Admin email" +$credpassword = Read-Host "Admin Password" + +[securestring]$secStringPassword = ConvertTo-SecureString $credpassword -AsPlainText -Force +[pscredential]$credObject = New-Object System.Management.Automation.PSCredential ($creduser, $secStringPassword) + +Connect-AzureAD -Credential $credObject + +$SiteURL = "Site library URL" +$Library = "List Name" + +Connect-PnPOnline -Url $SiteURL -UseWebLogin + +$MemberGroup = Get-PnPGroup -Identity "Site de partage - Membres" + +$CsvFolderList = Import-csv "SharePoint_Config_Sub.csv" -Delimiter ";" -Encoding UTF8 + +foreach ($folder in $CsvFolderList) { + + $NewFolder = Add-PnPFolder -Name $folder.name -Folder $Library + + $NewFolderUrl = Get-PnPFolder -Url ($Library + "/" + $NewFolder.name) -Includes ListItemAllFields.HasUniqueRoleAssignments + + If ($NewFolderUrl.ListItemAllFields.HasUniqueRoleAssignments) { + Write-host "Folder is already with broken permissions!" -f Yellow + } + Else { + Write-Host $NewFolderUrl + + $NewFolderUrl.ListItemAllFields.BreakRoleInheritance($True, $True) + + Invoke-PnPQuery + + Write-host "Folder's Permission Inheritance is broken!!" -f Green + } + +} + +foreach ($folder in $CsvFolderList) { + + $ADgroupname = (Get-AzureADGroup | where { $_.displayname -eq $folder.Group } ).objectid + + $SpFolder = Get-PnPFolder -Url ("/sites/partage" + $Library + "/" + $folder.name) + + Set-PnPListItemPermission -List $Library -Identity ($folder.ListItemAllFields) -Group $MemberGroup -RemoveRole 'Lecture' + + Set-PnPfolderPermission -list $Library -identity $SpFolder -user "c:0t.c|tenant|$ADGroupName" -AddRole 'Collaboration' +} + +foreach ($folder in $CsvFolderList) { + + Add-PnPFolder -Name $folder.name -Folder ($Library + "/" + $folder.parent) + +} \ No newline at end of file diff --git a/SharePoint Online/README.md b/SharePoint Online/README.md new file mode 100644 index 0000000..dddffc0 --- /dev/null +++ b/SharePoint Online/README.md @@ -0,0 +1 @@ +# SharePoint Online diff --git a/SharePoint Online/Set-SpoLanguage.ps1 b/SharePoint Online/Set-SpoLanguage.ps1 new file mode 100644 index 0000000..83c8040 --- /dev/null +++ b/SharePoint Online/Set-SpoLanguage.ps1 @@ -0,0 +1,37 @@ +#Load SharePoint CSOM Assemblies +Add-Type -Path CProgram FilesCommon FilesMicrosoft SharedWeb Server Extensions16ISAPIMicrosoft.SharePoint.Client.dll +Add-Type -Path CProgram FilesCommon FilesMicrosoft SharedWeb Server Extensions16ISAPIMicrosoft.SharePoint.Client.Runtime.dll + +#function to change Locale in regional settings of a SharePoint Online site +Function Set-SPOLocale([String]$SiteURL, [String]$LocaleID, [PSCredential]$Cred) { + Try { + #Set up the context + $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) + $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) + + #Get Regional Settings of the Web + $Web = $Ctx.Web + $Ctx.Load($web) + $Ctx.Load($Web.RegionalSettings) + $ctx.ExecuteQuery() + + #Update the LocaleID of the site + $Web.RegionalSettings.LocaleId = $LocaleID + $Web.Update() + $Ctx.ExecuteQuery() + + Write-host -f Green Locale has been updated for $Web.Url + + #Get all subsites of the web + $Ctx.Load($Web.Webs) + $Ctx.executeQuery() + #Iterate through each subsites and call the function recursively + Foreach ($Subweb in $Web.Webs) { + #Call the function to set Locale for the web + Set-SPOLocale -SiteURL $Subweb.URL -LocaleID $LocaleID -Cred $Cred + } + } + Catch [System.Exception] { + Write-Host -f Red Error$_.Exception.Message + } +} diff --git a/Système de fichiers/Compare-Csv.ps1 b/Système de fichiers/Compare-Csv.ps1 new file mode 100644 index 0000000..f16ff58 --- /dev/null +++ b/Système de fichiers/Compare-Csv.ps1 @@ -0,0 +1,38 @@ +param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + $Csv1, + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + $Csv2, + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + $Property +) + +#Importer les 2 fichiers CSV +$File1 = Import-Csv -Path $Csv1 -Delimiter ";" -Encoding utf8 +$File2 = Import-Csv -Path $Csv2 -Delimiter ";" -Encoding utf8 + +#Comparer les 2 objets importés +$Results = Compare-Object $File1 $File2 -Property $Property -IncludeEqual + +#Parcourir le tableau pour trouver les valeurs identiques +$Array = @() +Foreach ($R in $Results) { + If ( $R.sideindicator -eq "==" ) { + $Object = [pscustomobject][ordered] @{ + + "Valeurs identiques" = $R.$($Property) + + } + $Array += $Object + } +} + +#Retourner le résultat +$Array + +<# +.\Compare-Csv.ps1 -csv1 ".\templates\Compare-Csv-1.csv" -csv2 ".\Templates\Compare-Csv-2.csv" -property "Nom" +#> \ No newline at end of file diff --git a/Système de fichiers/Connect-PsDrive.ps1 b/Système de fichiers/Connect-PsDrive.ps1 new file mode 100644 index 0000000..cb85dc1 --- /dev/null +++ b/Système de fichiers/Connect-PsDrive.ps1 @@ -0,0 +1,13 @@ +#Commande basique +net use L: UNC_DU_PARTAGE /PERSISTENT:NO /user:USER PASSWORD + +##Créer un lecteur avec PowerShell + +##Créer un objet Credential avec nom d'utilisateur et mot de passe +$Credential = New-Object System.Management.Automation.PsCredential("USER", (ConvertTo-SecureString -String "PASSWORD" -AsPlainText -Force)) + +##Créer le lecteur PowerShell non persistent +New-PSDrive -Name "NOM_DU_LECTEUR" -Root "UNC_DU_PARTAGE" -PSProvider "FileSystem" -Credential $Credential + +##Créer le lecteur PowerShell persistent +New-PSDrive -Name "NOM_DU_LECTEUR" -Root "UNC_DU_PARTAGE" -PSProvider "FileSystem" -Credential $Credential -Persist \ No newline at end of file diff --git a/Système de fichiers/Copy-Files.ps1 b/Système de fichiers/Copy-Files.ps1 new file mode 100644 index 0000000..42e6e33 --- /dev/null +++ b/Système de fichiers/Copy-Files.ps1 @@ -0,0 +1,27 @@ +#Copier un fichier +Copy-Item "SOURCE" -Destination "DESTINATION" + +#Télécharger un fichier depuis le Web +Invoke-WebRequest 'https://aka.ms/WACDownload' -OutFile "DESTINATION.msi" + +#Copier des fichiers et dossiers avec BITS +Start-BitsTransfer -Source "SOURCE\*" -Destination "DESTINATION" + +#Copier des fichiers et dossiers avec Robocopy et PowerShell en mode miroir + +##La commande de base +robocopy "SOURCE" "DEST" /MIR /NDL /NP /FFT /Z /R:3 /W:10 /LOG+:C:\Lab\Log.txt + +##Importer le CSV qui contient les sources et destinations +$Files = Import-Csv "Copy-Files.csv" -Encoding "UTF8" -Delimiter ";" + +##Définir le dossier de logs +$RootLogs = "C:\Lab" + +##Parcourir les lignes du CSV et créer des tâches Robocopy +foreach ($Item in $Files) { + $Logs = $RootLogs + "\Logs_" + (Get-Date -UFormat "%d-%m-%Y") + ".log" + $RobocopyParams = "/MIR /NDL /NP /FFT /Z /R:1 /W:5 /LOG+:$Logs" + New-Item -Path $Item.Destination -ItemType Directory -Force + Start-Process "robocopy.exe" -Argumentlist `"$($Item.Source)`", `"$($Item.Destination)`", $RobocopyParams -Wait +} \ No newline at end of file diff --git a/Système de fichiers/New-SharedFolders.ps1 b/Système de fichiers/New-SharedFolders.ps1 new file mode 100644 index 0000000..5011194 --- /dev/null +++ b/Système de fichiers/New-SharedFolders.ps1 @@ -0,0 +1,112 @@ +Import-Module activedirectory + +$Partages = Import-csv "Templates\New-SharedFolders.csv" -Delimiter ";" -Encoding UTF8 +$BaseDir = "D:\Partages\" + +$searchbase = Get-ADDomain | ForEach-Object { $_.DistinguishedName } +$netbios = Get-ADDomain | ForEach-Object { $_.NetBIOSName } + +ForEach ($item In $Partages) { + + if ($item.AccessType -eq "Write") { + $Rights = "Modify, Synchronize" + $Inheritance = "ContainerInherit, ObjectInherit" + $Propagation = "None" + $AccessControlType = "Allow" + } + elseif ($item.AccessType -eq "Read") { + $Rights = "ReadAndExecute" + $Inheritance = "ContainerInherit, ObjectInherit" + $Propagation = "None" + $AccessControlType = "Allow" + } + elseif ($item.AccessType -eq "Access") { + $Rights = "ReadAndExecute" + $Inheritance = "None" + $Propagation = "None" + $AccessControlType = "Allow" + } + else { + Write-Host "AccessType is empty" + Return + } + + $Shared_Folder = Join-Path $BaseDir $item.Name + + try { + if (Test-Path $Shared_Folder) { + Write-Host "Folder $($Shared_Folder) alread exists! Folder creation skipped!" + } + else { + New-Item -ItemType Directory -Path $Shared_Folder + Write-Host "Folder $($Shared_Folder) created!" + } + } + catch { + Write-Host "Error, Folder $($Shared_Folder) not created!" + } + + if (($item.IsShared -eq $true) -and (!(Get-SmbShare -Name $item.Name -ErrorAction SilentlyContinue))) { + try { + New-SmbShare -Name $item.Name -Path $Shared_Folder -FullAccess "Tout le monde" + Set-SmbShare -Name $item.Name -FolderEnumerationMode AccessBased -Force + Write-Host "$($Shared_Folder) is shared now!" + } + catch { + Write-Host "Error, $($Shared_Folder) not shared!" + } + } + else { + Write-Host "Folder $($Shared_Folder) is already shared or IsShared is not set to true!" + } + + $check = [ADSI]::Exists("LDAP://$($item.GroupLocation),$($searchbase)") + + $Group = (($item.name -replace " ", "-" -replace "\\", "_" -replace ",", "-") + "_" + $item.AccessType) + + If ($check -eq $True) { + Try { + $TheGroup = Get-ADGroup $Group + Write-Host "Group $($Group) alread exists! Group creation skipped! SID: $($TheGroup.SID)" + } + Catch { + + $TheGroup = New-ADGroup -Name $Group -Path ($($item.GroupLocation) + "," + $($searchbase)) -GroupCategory Security -GroupScope $item.GroupType -PassThru -Verbose + Write-Host "Group $($Group) created! SID: $($TheGroup.SID)" + } + + try { + $acl = Get-Acl $Shared_Folder + + if ($acl.Access.IdentityReference -notcontains ($($netbios) + "\" + $Group)) { + + $acl.SetAccessRuleProtection($true, $true) + + $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($TheGroup.SID, $Rights, $Inheritance, $Propagation, $AccessControlType) + $acl.AddAccessRule($AccessRule) + + Set-Acl -Path $Shared_Folder -AclObject $acl -ea Stop + + Write-Host "ACL for $($Shared_Folder) created!" + } + else { + Write-Host "ACL for $($Shared_Folder) alread exists! Folder ACL skipped!" + } + $acl = Get-Acl $Shared_Folder + $objUser = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-545") + $objACE = New-Object System.Security.AccessControl.FileSystemAccessRule($objUser, "FullControl", "None", "None", "Allow") + $acl.RemoveAccessRuleAll($objACE) + + Set-Acl -Path $Shared_Folder -AclObject $acl -ea Stop + + } + catch { + Write-Host "Error, ACL for folder $($Shared_Folder) not modified!" + } + + } + Else { + Write-Host "Target OU can't be found! Group creation skipped!" + } + +} diff --git a/Système de fichiers/README.md b/Système de fichiers/README.md new file mode 100644 index 0000000..e5c13ab --- /dev/null +++ b/Système de fichiers/README.md @@ -0,0 +1,11 @@ +# Système de fichiers + +- Mapper un lecteur réseau en Batch vs PowerShell. + + + +- Copier des fichiers et dossiers avec Robocopy et PowerShell + + diff --git a/Système de fichiers/Templates/Compare-Csv-1.csv b/Système de fichiers/Templates/Compare-Csv-1.csv new file mode 100644 index 0000000..802fac1 --- /dev/null +++ b/Système de fichiers/Templates/Compare-Csv-1.csv @@ -0,0 +1,5 @@ +Prénom;Nom +David;Dupont +Bertrand;Torte +Ugo;Lotti +Sébastien;Concas diff --git a/Système de fichiers/Templates/Compare-Csv-2.csv b/Système de fichiers/Templates/Compare-Csv-2.csv new file mode 100644 index 0000000..65cc157 --- /dev/null +++ b/Système de fichiers/Templates/Compare-Csv-2.csv @@ -0,0 +1,6 @@ +Prénom;Nom +Cécile;Duprat +Bertrand;Tamac +Mickael;Mickael +Sébastien;Concas +Anaîs;Dupont diff --git a/Système de fichiers/Templates/Copy-Files.csv b/Système de fichiers/Templates/Copy-Files.csv new file mode 100644 index 0000000..dfafc91 --- /dev/null +++ b/Système de fichiers/Templates/Copy-Files.csv @@ -0,0 +1,3 @@ +Source;Destination +\\SERVER\Source1;C:\Partages\Dest1 +\\SERVER\Source2;C:\Partages\Dest2 diff --git a/Système de fichiers/Templates/New-SharedFolders.csv b/Système de fichiers/Templates/New-SharedFolders.csv new file mode 100644 index 0000000..05d1d5c --- /dev/null +++ b/Système de fichiers/Templates/New-SharedFolders.csv @@ -0,0 +1,13 @@ +Name;GroupType;IsShared;AccessType;GroupLocation +Commun;Global;true;Read;OU=Groupes,OU=Agen +Commerce;Global;true;Read;OU=Groupes,OU=Agen +Achats;Global;true;Read;OU=Groupes,OU=Agen +Direction;Global;true;Read;OU=Groupes,OU=Agen +Marketing;Global;true;Read;OU=Groupes,OU=Agen +Technique;Global;true;Read;OU=Groupes,OU=Agen +Commun;Global;true;Write;OU=Groupes,OU=Agen +Commerce;Global;true;Write;OU=Groupes,OU=Agen +Achats;Global;true;Write;OU=Groupes,OU=Agen +Direction;Global;true;Write;OU=Groupes,OU=Agen +Marketing;Global;true;Write;OU=Groupes,OU=Agen +Technique;Global;true;Write;OU=Groupes,OU=Agen diff --git a/Teams/Invoke-Webhook.ps1 b/Teams/Invoke-Webhook.ps1 new file mode 100644 index 0000000..80a95ed --- /dev/null +++ b/Teams/Invoke-Webhook.ps1 @@ -0,0 +1,33 @@ +#Définir l'adresse Webhook du canal Teams +$webhook = "" + +#Créer le message +$body = ConvertTo-Json -depth 3 @{ + summary = 'Message Teams' + themeColor = '0055DD' + sections = @( + @{ + activityTitle = "Titre du message `n" + activityText = "Ceci est un message généré en PowerShell" + } + ) +} + +#autre exemple de message card +$body = @{ + "@type" = "MessageCard" + "@context" = "" + "title" = 'Titre' + "themeColor" = '0055DD' + "text" = "Description" + "sections" = @( + @{ + "activityTitle" = 'Titre section' + "activitySubtitle" = 'Sous titre' + "activityText" = 'Texte de la section' + } + ) + } | ConvertTo-JSON + +#Envoyer le message sur Teams +Invoke-RestMethod -Method post -ContentType 'Application/Json' -Body $body -Uri $webhook \ No newline at end of file diff --git a/Teams/README.md b/Teams/README.md new file mode 100644 index 0000000..c7c8373 --- /dev/null +++ b/Teams/README.md @@ -0,0 +1 @@ +# Teams \ No newline at end of file diff --git a/Teams/Start-SecondTeams.ps1 b/Teams/Start-SecondTeams.ps1 new file mode 100644 index 0000000..6b4e0ad --- /dev/null +++ b/Teams/Start-SecondTeams.ps1 @@ -0,0 +1,8 @@ +if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrateur")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } + +$username = '.\Username' +$password = 'Password' + +$securePassword = ConvertTo-SecureString $password -AsPlainText -Force +$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword +Start-Process 'C:\Users\Username\AppData\Local\Microsoft\Teams\Update.exe' '--processStart "Teams.exe"' -Credential $credential \ No newline at end of file diff --git a/WSUS/Maintenace.ps1 b/WSUS/Maintenace.ps1 new file mode 100644 index 0000000..87ee162 --- /dev/null +++ b/WSUS/Maintenace.ps1 @@ -0,0 +1,58 @@ +<# +.SYNOPSIS + + +.NOTES + Version: 1.0 + Author: Hubert CORNET + Creation Date: + Purpose/Change: Initial script development + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +cls + +Invoke-WsusServerCleanup -CleanupObsoleteUpdates +Invoke-WsusServerCleanup -CleanupUnneededContentFiles +Invoke-WsusServerCleanup -DeclineExpiredUpdates +Invoke-WsusServerCleanup -DeclineSupersededUpdates + +Invoke-WsusServerCleanup -CompressUpdates + +Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase \ No newline at end of file diff --git a/WSUS/README.md b/WSUS/README.md new file mode 100644 index 0000000..e69de29 diff --git a/WSUS/Update-Approuve-Crit.ps1 b/WSUS/Update-Approuve-Crit.ps1 new file mode 100644 index 0000000..260d667 --- /dev/null +++ b/WSUS/Update-Approuve-Crit.ps1 @@ -0,0 +1,85 @@ +<# +.SYNOPSIS + + +.NOTES + Version: 1.0 + Author: Hubert CORNET + Creation Date: + Purpose/Change: Initial script development + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Argument à définir au lancement du script pour la sélection des serveurs +Param( + [string]$group + ) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +# Définition du Timestamp du fichier de log +$Timestamp = Get-Date -Format FileDate + +# Définition du fichier de log +$log = "C:\Exploit\Logs\Approved_Updates_$group.$Timestamp.txt" + +$date = Get-Date + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +cls + +# Connection au serveur WSUS +$wsusserver = "SWADMAPPP01.fr.dgs.group" +[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") +$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($wsusserver,$False,8530) + +# Définition des updates a approuver +$updates = $wsus.GetUpdates() | ? {($_.Title -notmatch "Itanium" -and $_.Title -notmatch ".net Framework" -and $_.PublicationState -ne "Expired" ) -and ($_.ProductFamilyTitles -eq "Windows") -and ($_.UpdateClassificationTitle -eq "Critical Updates")} + +# Approbation des packages pour la sélection de serveur +$wgroup = $wsus.GetComputerTargetGroups() | where {$_.Name -eq $group} +foreach ($update in $updates) + { + $update.Approve(“Install”,$wgroup) + } + +# Ecriture du fichier de log +"Approved updates on $date : " | Out-File $log -append +"Updates have been approved for following groups: (" + $group + ")" | Out-File $log -append +"Following updates have been approved:" | Out-File $log -append +$updates | Select Title,ProductTitles,KnowledgebaseArticles,CreationDate | Out-File $log –append + diff --git a/WSUS/Update-Approuve-Prod.ps1 b/WSUS/Update-Approuve-Prod.ps1 new file mode 100644 index 0000000..b813c62 --- /dev/null +++ b/WSUS/Update-Approuve-Prod.ps1 @@ -0,0 +1,77 @@ +<# +.SYNOPSIS + + +.NOTES + Version: 1.0 + Author: Hubert CORNET + Creation Date: + Purpose/Change: Initial script development + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +$WsusServerFqdn='SWADMAPPP01' +$WsusSourceGroup = 'ServersPREPRD' +$WsusTargetGroup = 'ServersPRD' +$LOG = 'C:\Exploit\Logs\Approved_Updates_ServersPRD' +$Timestamp = Get-Date -Format FileDate +$LOGFILE = "$LOG.$Timestamp.log" +$i = 0 + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +cls + +[void][reflection.assembly]::LoadWithPartialName( “Microsoft.UpdateServices.Administration”) +$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer( $WsusServerFqdn, $False, ‘8530’) +$Groups = $wsus.GetComputerTargetGroups() +$WsusSourceGroupObj = $Groups | Where {$_.Name -eq $WsusSourceGroup} +$WsusTargemtGroupObj = $Groups | Where {$_.Name -eq $WsusTargetGroup} + +$Updates = $wsus.GetUpdates() + +ForEach ($Update in $Updates) { + If ($Update.GetUpdateApprovals($WsusSourceGroupObj).Count -ne 0 -and $Update.GetUpdateApprovals($WsusTargetGroupObj).Count -eq 0) { + $i ++ + Write-Output (“Approving ” + $Update.Title) | Out-File $LOGFILE -Append + $Update.Approve(‘Install’,$WsusTargetGroupObj) | Out-Null + } +} + +Write-Output (“Approved {0} updates for target group {1}” -f $i, $WsusTargetGroup) + + diff --git a/WSUS/Update-MailReport.ps1 b/WSUS/Update-MailReport.ps1 new file mode 100644 index 0000000..def3cdf --- /dev/null +++ b/WSUS/Update-MailReport.ps1 @@ -0,0 +1,200 @@ +<# +.SYNOPSIS + + +.NOTES + Version: 1.0 + Author: Hubert CORNET + Creation Date: + Purpose/Change: Initial script development + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +Param ( + # Nom du serveur + [string]$UpdateServer = 'SWADMAPPP01', + # Port TCP WSUS, par défaut 8530 + [int]$Port = 8530, + [bool]$Secure = $False # Set this to TRUE if you use HTTPS to access WSUS service. + ) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +cls + +# Variable pour l'envoi de mail + + # Adresse du serveur SMTP + $smtp = "relaissmtp.fr.dgs.group" + # Destinataire 1 + $to1 = "vianney.lavoillotte-ext@saint-maclou.com" + # Destinataire 1 + $to2 = "production@saint-maclou.com" + # Adresse de l'émeteur, définit par le nom du serveur + $from = $UpdateServer + "<" + $UpdateServer + "@saint-maclou.com>" + +$MsgBody = "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "Rapport des machines du serveur WSUS :" + $UpdateServer + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" + +$MsgBody= $MsgBody + "

Rapport des machines du serveur WSUS : " + $UpdateServer + "

" +$intLineCounter = 0 # To count computers. + +Remove-Item -force PcStatusReport.txt # This is a small log file to keep track of the last run results. It needs to be removed before start reading the list. + +If (-Not (Import-Module UpdateServices -PassThru)) { +Add-Type -Path "$Env:ProgramFiles\Update Services\Api\Microsoft.UpdateServices.Administration.dll" -PassThru +} + +$Wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($UpdateServer,$Secure,$Port) # With this we get connected to the WSUS server. + +$CTScope = New-Object Microsoft.UpdateServices.Administration.ComputerTargetScope #This will the our scope, it includes all computers registered in the WSUS server. + + +# Now, lets write the HTML table headers. +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" + + +# This is the main part: Here we will sort the list of computers by name, and get details for each one of them. + +$wsus.GetComputerTargets($CTScope) | Sort -Property FullDomainName | ForEach { + +$objSummary = $_.GetUpdateInstallationSummary() # This is an intermediate object that contains the details. +$Down = $objSummary.DownloadedCount # This is the amount of updates that has been downloaded already. +$Fail = $objSummary.FailedCount # This is the count for the failed updates. +$Pend = $objSummary.InstalledPendingRebootCount # This is the number of updates that need to reboot to complete installation. +$NotI = $objSummary.NotInstalledCount # These are the needed updates for this computer. +$Unkn = $objSummary.UnknownCount # These are the updates that are waiting for detection on the first search. +$Total = $Down + $Fail + $Pend + $NotI + $Unkn # Total amount of updates for this computer. + +$intLineCounter = $intLineCounter + 1 # Increase the table line counter. +$IntStr = [Convert]::ToString($intLineCounter) # convert it to string to put it on the HTML code. + +if ($Total -eq 0) {$Estado="OK"; $bgcolor="LightGreen"} +elseif ($Pend -ne 0) {$Estado="Reboot needed"; $bgcolor="LightSalmon"} +elseif ($Down -ne 0) {$Estado="Ready to install"; $bgcolor="Cyan"} +elseif ($NotI -ne 0) {$Estado="Pending"; $bgcolor="Yellow"} +elseif ($Fail -ne 0) {$Estado="Error"; $bgcolor="IndianRed"} +elseif ($Unkn -ne 0) {$Estado="Not reported yet"; $bgcolor="Silver"} +else {$Estado=""; $bgcolor="White"} + +Write-Verbose ($IntStr + " : " + $_.FullDomainName) -Verbose # Show task progress on screen. + +$LastContact = $_.LastReportedStatusTime # This is the last time when the computer reported to the wsus. +$days = [Math]::Ceiling((New-TimeSpan -Start $LastContact).TotalDays) # This is the number of days since last time. + +if ($days -gt 14) {$Color="Red"} # Computer is away for too long. +elseif ($days -gt 7) {$Color="Orange"} # Computer may be in trouble. +elseif ($days -gt 2) {$Color="Yellow"} # Computer may be off. +else {$Color="White"} # Computer is ok. + +# Reformat days to a more human-readable form. +if ($days -eq 0) {$Dias="Today"} +elseif ($days -eq 1) {$Dias="Yesterday"} +else {$Dias="Since " + $days + " days."} + +if ($LastContact -eq [DateTime]::MinValue) {$Dias="Never"; $Color="Silver"} + +# Now write the table row with all the info. +$MsgBody = $MsgBody + " " +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" + +$_.FullDomainName >> PcStatusReport.txt # And append a new line on the log file. +} + +$MsgBody = $MsgBody + "
IndexStatusComputer NameIP AddressLast ContactTotal updatesAwaiting rebootReady to installDownload pendingFailedUnknown State
" + $IntStr +" " + $Estado + " " + $_.FullDomainName+ " " + $_.IPAddress + " " + $Dias +"" + $Total + "" + $Pend + "" + $Down + "" + $NotI + "" + $Fail + "" + $Unkn + "

" # Finish the HTML table. + +if ($intLineCounter -eq 0) { +Write-Verbose ("You must run this script from as administrator to read WSUS database.") -Verbose # Display a warning if not run with admin privileges. +$MsgBody = $MsgBody + " You must run this script from as administrator to read WSUS database.
" +} else { +$MsgBody = $MsgBody + "
" +} + +#This is a footnote for the report readers. +$MsgBody = $MsgBody + "

Note:

The updates are applied in a sequential three-steps process: Search, Download and Install.
Each computer has to go through these three stages to be updated.
    " +$MsgBody = $MsgBody + "
  • Before the first time a search is run, it is unknown whether the computer will need some updating, thats why in this case all updates appear in Unknown State.
  • " +$MsgBody = $MsgBody + "
  • Once the search is complete, the updates appear as Download pending, which are the updates that the computer specifically needs.
  • " +$MsgBody = $MsgBody + "
  • When the computer has downloaded pending updates, these are counted as Ready to install.
  • " +$MsgBody = $MsgBody + "
  • At the end of the installation stage you can get one of these results:
    • " +$MsgBody = $MsgBody + "
    • OK: All necessary updates were installed correctly.
    • " +$MsgBody = $MsgBody + "
    • ERROR: One or more required updates were not installed correctly.
    • " +$MsgBody = $MsgBody + "
    • Reboot needed: The installation ended the first part, but you must restart the computer to complete the second part.
    • " +$MsgBody = $MsgBody + "

" +$MsgBody = $MsgBody + "If a computer is not connected to the server for more than 14 days is highlighted with color red.
" +$MsgBody = $MsgBody + "If a computer is not connected to the server from 7 to 14 days is highlighted with color orange.
" +$MsgBody = $MsgBody + "If a computer is not connected to the server from 2 to 6 days is highlighted with color yellow.
" +$MsgBody = $MsgBody + "
" + +$MsgBody = $MsgBody + "
" + [System.DateTime]::Now + "
" # This is a timestamp at the end of the message, taking into account the SMTP delivery delay. + +$IntStr = [Convert]::ToString($intLineCounter) # convert the line counter to string +$subject = $IntStr + " ordinateurs enregistres sur le serveur WSUS " + $UpdateServer # This will be the subject of the message. + +# Closing Body and HTML tags +$MsgBody = $MsgBody + "" +$MsgBody = $MsgBody + "" + +# Now send the email message and thats all. +send-MailMessage -SmtpServer $smtp -To $to1, $to2 -From $from -Subject $subject -Body $MsgBody -BodyAsHtml -Priority high diff --git a/WSUS/update-Approuve.ps1 b/WSUS/update-Approuve.ps1 new file mode 100644 index 0000000..8fd2eac --- /dev/null +++ b/WSUS/update-Approuve.ps1 @@ -0,0 +1,84 @@ +<# +.SYNOPSIS + + +.NOTES + Version: 1.0 + Author: Hubert CORNET + Creation Date: + Purpose/Change: Initial script development + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Argument à définir au lancement du script pour la sélection des serveurs +Param( + [string]$group + ) + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +# Définition du Timestamp du fichier de log +$Timestamp = Get-Date -Format FileDate + +# Définition du fichier de log +$log = "C:\Exploit\Logs\Approved_Updates_$group.$Timestamp.txt" + +$date = Get-Date + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +cls + +# Connection au serveur WSUS +$wsusserver = "SWADMAPPP01.fr.dgs.group" +[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") +$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($wsusserver,$False,8530) + +# Définition des updates a approuver +$updates = $wsus.GetUpdates() | ? {($_.Title -notmatch "Itanium" -and $_.PublicationState -ne "Expired" ) -and ($_.ProductFamilyTitles -eq "Windows") -and ($_.UpdateClassificationTitle -eq "Security Updates" -or $_.UpdateClassificationTitle -eq "Critical Updates" -or $_.UpdateClassificationTitle -eq "Updates" -or $_.UpdateClassificationTitle -eq "Update Rollups")} + +# Approbation des packages pour la sélection de serveur +$wgroup = $wsus.GetComputerTargetGroups() | where {$_.Name -eq $group} +Foreach ($update in $updates) { + $update.Approve(“Install”,$wgroup) +} + +# Ecriture du fichier de log +"Approved updates on $date : " | Out-File $log -append +"Updates have been approved for following groups: (" + $group + ")" | Out-File $log -append +"Following updates have been approved:" | Out-File $log -append +$updates | Select Title,ProductTitles,KnowledgebaseArticles,CreationDate | Out-File $log –append + diff --git a/Windows 10/Activation-BitLocker.ps1 b/Windows 10/Activation-BitLocker.ps1 new file mode 100644 index 0000000..787c294 --- /dev/null +++ b/Windows 10/Activation-BitLocker.ps1 @@ -0,0 +1,113 @@ +<# +.SYNOPSIS + + +.NOTES + Version: 1.0 + Author: Hubert CORNET + Creation Date: + Purpose/Change: Initial script development + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = "Activation-BitLocker.log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +cls + + +# The script may fail because of race condition? Add a sleep : +Start-Sleep -Seconds 300 + +# Nous detectons si le disque C dispose de BitLocker. +# Si la condition n'est pas remplie, nous arretons le script. +$CdriveStatus = Get-BitLockerVolume -MountPoint 'c:' + +If ($CdriveStatus.volumeStatus -eq 'FullyDecrypted') { + # On execute un systeme de logging. Il ne servira en cas de debuggage + New-EventLog -LogName "BitLocker" -Source "GPO - BitLocker" -ErrorAction Ignore + write-eventlog -LogName "BitLocker" -Source "GPO - BitLocker" -EntryType Information -Category 1 -Message "BitLocker non detecté sur le disque systeme.`nDémarrage du script." -EventId 1 + + # On lance notre BitLocker + $result = Enable-BitLocker -MountPoint $env:SystemDrive -SkipHardwareTest -RecoveryPasswordProtector + + If ($result) { + # Si BitLocker a bien accepté notre clé + Write-EventLog -LogName "BitLocker" -Source "GPO - BitLocker" -EntryType Information -Category 1 -Message "Démarrer le cryptage BitLocker.`nCréer le CSV à extraire.`nCode de sortie de la commande pour BitLocker : $result" -EventId 2 + + # On recupere notre clé ici + $Key = ([string](Get-BitLockerVolume -MountPoint 'c:').keyprotector.recoverypassword) + + If ($key -match [regex]"[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}"){ + + Write-EventLog -LogName "BitLocker" -Source "GPO - BitLocker" -EntryType Information -Category 1 -Message "PowerShell a la clé de récupération. Démarrage de la sortie vers le réseau." -EventId 3 + + If ($CdriveStatus.volumeStatus -eq 'FullyDecrypted') { + $info = $true + } + Else { + $info = $false + } + + $result = [PSCustomObject]@{ + ComputerName = ($env:COMPUTERNAME); + Date = (get-date -Format 'dd/MM/yy HH:mm'); + Result = $info; + } + + $result | export-csv -NoTypeInformation -Path "\\swfilevep01\logs$\BitLocker\BitLocker-$($env:COMPUTERNAME).csv" + + Write-EventLog -LogName "BitLocker" -Source "GPO - BitLocker" -EntryType Information -Category 1 -Message "Exportation the CSV file to \\fr.dgs.group\systeme$\Logs\BitLocker\BitLocker-$($env:COMPUTERNAME).csv" -EventId 4 + } + else { + # Si nous n'avons pas de clé de récupération, nous exportons un log. + $Status = (Get-BitLockerVolume -MountPoint 'c:').volumeStatus + + Write-EventLog -LogName "BitLocker" -Source "GPO - BitLocker" -EntryType Error -Category 1 -Message "PowerShell n'a pas la clé de récupération.`nÉtat du disque : $Status" -EventId 5 + } + } + Else { + Write-EventLog -LogName "BitLocker" -Source "GPO - BitLocker" -EntryType Error -Category 1 -Message "Nous ne pouvons pas lancer le cryptage.`nCode de sortie de la commande pour BitLocker : $result `nRésultat de Manage-Bde : $verbose `nCommencé par : $($env:USERNAME)" -EventId 6 + } +} +Else { + New-EventLog -LogName "BitLocker" -Source "GPO - BitLocker" -ErrorAction Ignore + Write-EventLog -LogName "BitLocker" -Source "GPO - BitLocker" -EntryType Information -Category 1 -Message "Pas entièrement décrypté. Statut: $CdriveStatus.volumeStatus" -EventId 7 +} + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file diff --git a/Windows 10/Debloat/.gitattributes b/Windows 10/Debloat/.gitattributes new file mode 100644 index 0000000..a021040 --- /dev/null +++ b/Windows 10/Debloat/.gitattributes @@ -0,0 +1,5 @@ +* text=auto +*.bat text eol=crlf +*.ps1 text eol=crlf +*.psm1 text eol=crlf +*.reg text eol=crlf diff --git a/Windows 10/Debloat/LICENSE b/Windows 10/Debloat/LICENSE new file mode 100644 index 0000000..b129789 --- /dev/null +++ b/Windows 10/Debloat/LICENSE @@ -0,0 +1,9 @@ +"THE BEER-WARE LICENSE" (Revision 42): + +As long as you retain this notice you can do whatever you want with this +stuff. If we meet some day, and you think this stuff is worth it, you can +buy us a beer in return. + +This project is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. diff --git a/Windows 10/Debloat/README.md b/Windows 10/Debloat/README.md new file mode 100644 index 0000000..3866e35 --- /dev/null +++ b/Windows 10/Debloat/README.md @@ -0,0 +1,153 @@ +# Debloat Windows 10 + +**Note about Windows 11:** +This project does not directly support Windows 11. +Things might work, or might not work - find out if you are brave. +Do not expect this project to transition to Windows 11 as the maintainer lacks the time to do so. + +This project collects PowerShell scripts which help to *debloat* Windows 10, +tweak common settings and install basic software components. + +I test these scripts on a Windows 10 Professional 64-Bit (English) virtual +machine. Please let me know if you encounter any issues. Home Edition and +different languages are not supported. These scripts are intended for +tech-savvy administrators, who know what they are doing and just want to +automate this phase of their setup. If this profile does not fit you, I +recommend using a different (more interactive) tool -- and there are a lot of +them out there. + +Also, note that gaming-related apps and services will be removed/disabled. If +you intend to use your system for gaming, adjust the scripts accordingly. + +**There is no undo**, I recommend only using these scripts on a fresh +installation (including Windows Updates). Test everything after running them +before doing anything else. Also, there is no guarantee that everything will +work after future updates since I cannot predict what Microsoft will do next. + +## Translations + +- [Fork with German version](https://github.com/MagicLike/Debloat-Windows-10/blob/master/README.de-de.md) + +## Interactivity + +The scripts are designed to run without any user interaction. Modify them +beforehand. If you want a more interactive approach check out +[DisableWinTracking](https://github.com/10se1ucgo/DisableWinTracking) from +[10se1ucgo](https://github.com/10se1ucgo). + +## Download Latest Version + +Code located in the `master` branch is always considered under development, but +you'll probably want the most recent version anyway. + +- [Download [zip]](https://github.com/W4RH4WK/Debloat-Windows-10/archive/master.zip) + +## Execution + +Enable execution of PowerShell scripts: + + PS> Set-ExecutionPolicy Unrestricted -Scope CurrentUser + +Unblock PowerShell scripts and modules within this directory: + + PS> ls -Recurse *.ps*1 | Unblock-File + +## Usage + +Scripts can be run individually, pick what you need. + +1. Install all available updates for your system. +2. Edit the scripts to fit your need. +3. Run the scripts you want to apply from a PowerShell with administrator privileges (Explorer + `Files > Open Windows PowerShell > Open Windows PowerShell as + administrator`) +4. `PS > Restart-Computer` +5. Run `disable-windows-defender.ps1` one more time if you ran it in step 3 +6. `PS > Restart-Computer` + +## Start menu + +In the past I included small fixes to make the start menu more usable, like +removing default tiles, disabling web search and so on. This is no longer the +case since I am fed up with it. This fucking menu breaks for apparently +no reason, is slow, is a pain to configure / script and even shows ads out of +the box! + +Please replace it with something better, either use [Open Shell] or [Start +is Back], but stop using that shit. + +[Open Shell]: +[Start is Back]: + +## Known Issues + +### Start menu Search + +After running the scripts, the start menu search-box may no longer work on newly +created accounts. It seems like there is an issue with account initialization +that is triggered when disabling the GeoLocation service. Following workaround +has been discovered by BK from Atlanta: + +1. Delete registry key `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lfsvc\TriggerInfo\3` +2. Re-enable GeoLocation service (set startup type to `Automatic`) +3. Reboot +4. Login with the account having the stated issue +5. Start Cortana and set your preferences accordingly (web search and whatnot) + +You may now disable the GeoLocation service again, the search box should remain +functional. + +### Sysprep will hang + +If you are deploying images with MDT and running these scripts, the sysprep +step will hang unless `dmwappushservice` is active. + +### Xbox Wireless Adapter + +Apparently running the stock `remove-default-apps` script will cause Xbox +Wireless Adapters to stop functioning. I suspect one should not remove the Xbox +App when wanting to use one. But I haven't confirmed this yet, and there is a +workaround to re-enable it afterwards. See +[#78](https://github.com/W4RH4WK/Debloat-Windows-10/issues/78). + +### Issues with Skype + +Some of the domains blocked by adding them to the hosts-file are required for +Skype. I highly discourage using Skype, however some people may not have +the option to use an alternative. See the +[#79](https://github.com/W4RH4WK/Debloat-Windows-10/issues/79). + +### Fingerprint Reader / Facial Detection not Working + +Ensure *Windows Biometric Service* is running. See +[#189](https://github.com/W4RH4WK/Debloat-Windows-10/issues/189). + +## Liability + +**All scripts are provided as-is and you use them at your own risk.** + +## Contribute + +I would be happy to extend the collection of scripts. Just open an issue or +send me a pull request. + +### Thanks To + +- [10se1ucgo](https://github.com/10se1ucgo) +- [Plumebit](https://github.com/Plumebit) +- [aramboi](https://github.com/aramboi) +- [maci0](https://github.com/maci0) +- [narutards](https://github.com/narutards) +- [tumpio](https://github.com/tumpio) + +## License + + "THE BEER-WARE LICENSE" (Revision 42): + + As long as you retain this notice you can do whatever you want with this + stuff. If we meet someday, and you think this stuff is worth it, you can + buy us a beer in return. + + This project is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. diff --git a/Windows 10/Debloat/Win10ScriptCLI.ps1 b/Windows 10/Debloat/Win10ScriptCLI.ps1 new file mode 100644 index 0000000..3a57440 --- /dev/null +++ b/Windows 10/Debloat/Win10ScriptCLI.ps1 @@ -0,0 +1,52 @@ +function Main() { + Clear-Host + Request-AdminPrivilege # Check admin rights + Get-ChildItem -Recurse $PSScriptRoot\*.ps*1 | Unblock-File + + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"open-file.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"set-console-style.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"show-dialog-window.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"start-logging.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"title-templates.psm1" -Force + + Set-ConsoleStyle # Makes the console look cooler + Start-Logging -File (Split-Path -Path $PSCommandPath -Leaf).Split(".")[0] + Write-Caption "$((Split-Path -Path $PSCommandPath -Leaf).Split('.')[0]) v$((Get-Item "$(Split-Path -Path $PSCommandPath -Leaf)").LastWriteTimeUtc | Get-Date -Format "yyyy-MM-dd")" + Write-Host "Your Current Folder $pwd" + Write-Host "Script Root Folder $PSScriptRoot" + Use-WindowsForm + Open-Script # Run all scripts inside 'scripts' folder + Stop-Logging + Write-ScriptLogo # Thanks Figlet + Request-PcRestart # Prompt options to Restart the PC +} + +function Request-AdminPrivilege() { + # Used from https://stackoverflow.com/a/31602095 because it preserves the working directory! + If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } +} + +function Open-Script() { + $DoneTitle = "Information" + $DoneMessage = "Process Completed!" + + $Scripts = @( + # [Recommended order] + "backup-system.ps1", + "install-package-managers.ps1", + "silent-debloat-softwares.ps1", + "optimize-task-scheduler.ps1", + "optimize-services.ps1", + "remove-bloatware-apps.ps1", + "optimize-privacy.ps1", + "optimize-performance.ps1", + "personal-tweaks.ps1", + "optimize-security.ps1", + #"remove-onedrive.ps1", + "optimize-windows-features.ps1" + ) + + Open-PowerShellFilesCollection -RelativeLocation "src\scripts" -Scripts $Scripts -DoneTitle $DoneTitle -DoneMessage $DoneMessage -OpenFromGUI $false +} + +Main \ No newline at end of file diff --git a/Windows 10/Debloat/Win10ScriptGUI.ps1 b/Windows 10/Debloat/Win10ScriptGUI.ps1 new file mode 100644 index 0000000..3461d0d --- /dev/null +++ b/Windows 10/Debloat/Win10ScriptGUI.ps1 @@ -0,0 +1,1541 @@ +# Learned from: https://docs.microsoft.com/en-us/powershell/scripting/samples/creating-a-custom-input-box?view=powershell-7.1 +# Adapted majorly from https://github.com/ChrisTitusTech/win10script and https://github.com/Sycnex/Windows10Debloater +# Take Ownership tweak from: https://www.howtogeek.com/howto/windows-vista/add-take-ownership-to-explorer-right-click-menu-in-vista/ + +function Main() { + Clear-Host + Request-AdminPrivilege # Check admin rights + Get-ChildItem -Recurse $PSScriptRoot\*.ps*1 | Unblock-File + + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"download-web-file.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"get-hardware-info.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"ui-helper.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"open-file.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"manage-software.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"set-console-style.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"show-dialog-window.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"start-logging.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\lib\"title-templates.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\utils\"individual-tweaks.psm1" -Force + Import-Module -DisableNameChecking $PSScriptRoot\src\utils\"install-individual-system-apps.psm1" -Force + + Set-ConsoleStyle # Makes the console look cooler + $CurrentFileName = (Split-Path -Path $PSCommandPath -Leaf).Split('.')[0] + $CurrentFileLastModified = (Get-Item "$(Split-Path -Path $PSCommandPath -Leaf)").LastWriteTimeUtc | Get-Date -Format "yyyy-MM-dd" + (Get-Item "$(Split-Path -Path $PSCommandPath -Leaf)").LastWriteTimeUtc | Get-Date -Format "yyyy-MM-dd" + Start-Logging -File $CurrentFileName + Write-Caption "$CurrentFileName v$CurrentFileLastModified" + Write-Host "Your Current Folder $pwd" + Write-Host "Script Root Folder $PSScriptRoot" + Open-PowerShellFilesCollection -RelativeLocation "src\scripts" -Scripts "install-package-managers.ps1" -NoDialog # Install Winget and Chocolatey at the beginning + Write-ScriptLogo # Thanks Figlet + Show-GUI # Load the GUI + + Write-Verbose "Restart: $Script:NeedRestart" + If ($Script:NeedRestart) { + Request-PcRestart # Prompt options to Restart the PC + } + Stop-Logging +} + +function Request-AdminPrivilege() { + # Used from https://stackoverflow.com/a/31602095 because it preserves the working directory! + If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } +} + +function Show-GUI() { + Write-Status -Types "@" -Status "Loading GUI Layout..." + # Loading System Libs + Add-Type -AssemblyName System.Windows.Forms + Add-Type -AssemblyName System.Drawing + [System.Windows.Forms.Application]::EnableVisualStyles() # Rounded Buttons :3 + + Set-UIFont # Load the Layout Font + $ScreenWidth, $ScreenHeight = Get-CurrentResolution # Get the Screen Size + $ScreenProportion = $ScreenWidth / $ScreenHeight # 16:9 ~1.777... + + $Script:NeedRestart = $false + $DoneTitle = "Information" + $DoneMessage = "Process Completed!" + + # <===== PERSONAL LAYOUT =====> + + # To Scroll + $VerticalScrollWidth = 17 + + # To Forms + If ($ScreenProportion -lt 1.5) { + $FormWidth = ($ScreenWidth * 0.99) + $VerticalScrollWidth # Small Resolution Width + Scroll Width + $FormHeight = $ScreenHeight * 0.85 + } ElseIf ($ScreenProportion -lt 2.0) { + $FormWidth = ($ScreenWidth * 0.85) + $VerticalScrollWidth # Scaled Resolution Width + Scroll Width + $FormHeight = $ScreenHeight * 0.85 + } ElseIf ($ScreenProportion -ge 2.0) { + $FormWidth = ($ScreenWidth * 0.65) + $VerticalScrollWidth # Scaled Resolution Width + Scroll Width + $FormHeight = $ScreenHeight * 0.85 + } + + # To Panels + $NumOfPanels = 4 + $PanelWidth = ($FormWidth / $NumOfPanels) - (2 * ($VerticalScrollWidth / $NumOfPanels)) # - Scroll Width per Panel + $TotalWidth = $PanelWidth * $NumOfPanels + $PanelElementMarginWidth = 0.025 + $PanelElementWidth = $PanelWidth - ($PanelWidth * (2 * $PanelElementMarginWidth)) + $PanelElementX = $PanelWidth * $PanelElementMarginWidth + # To Labels + $TitleLabelHeight = 45 + $CaptionLabelHeight = 40 + # To Buttons + $ButtonHeight = 30 + $DistanceBetweenElements = 5 + # To CheckBox + $CheckBoxHeight = 35 + # To Fonts + $Header1 = 20 + $Header3 = 14 + + $TitleLabelY = 0 + + $BBHeight = ($ButtonHeight * 2) + $DistanceBetweenElements + + $WarningYellow = "#EED202" + $White = "#FFFFFF" + $WinBlue = "#08ABF7" + $WinDark = "#252525" + + # Miscellaneous colors + + $AmdRyzenPrimaryColor = "#E4700D" + $IntelPrimaryColor = "#0071C5" + $NVIDIAPrimaryColor = "#76B900" + + # <===== Specific Layout =====> + + $SystemTweaksHeight = 1050 + $SoftwareInstallHeight = 1700 + + # <===== UI =====> + + # Main Window: + $Form = New-Form -Width $FormWidth -Height $FormHeight -Text "Win Debloat Tools (LeDragoX) | $(Get-SystemSpec)" -BackColor "$WinDark" -Maximize $false # Loading the specs takes longer time to load the GUI + + $Form = New-FormIcon -Form $Form -ImageLocation "$PSScriptRoot\src\assets\windows-11-logo.png" + + $FormTabControl = New-TabControl -Width ($FormWidth - 8) -Height ($FormHeight - 35) -LocationX -4 -LocationY 0 + $TabSystemTweaks = New-TabPage -Name "Tab1" -Text "System Tweaks" + $TabSoftwareInstall = New-TabPage -Name "Tab2" -Text "Software Install" + + $TlSystemTweaks = New-Label -Text "System Tweaks" -Width $TotalWidth -Height $TitleLabelHeight -LocationX 0 -LocationY $TitleLabelY -FontSize $Header1 -FontStyle "Bold" -ForeColor $WinBlue + $ClSystemTweaks = New-Label -Text "$CurrentFileName v$CurrentFileLastModified" -Width $TotalWidth -Height $CaptionLabelHeight -LocationX 0 -ElementBefore $TlSystemTweaks -MarginTop $DistanceBetweenElements -ForeColor $White + + # ==> Tab 1 + $CurrentPanelIndex = 1 + $T1Panel1 = New-Panel -Width $PanelWidth -Height $SystemTweaksHeight -LocationX ($PanelWidth * $CurrentPanelIndex) -ElementBefore $ClSystemTweaks + $CurrentPanelIndex++ + $T1Panel2 = New-Panel -Width $PanelWidth -Height $SystemTweaksHeight -LocationX ($PanelWidth * $CurrentPanelIndex) -ElementBefore $ClSystemTweaks + + # ==> T1 Panel 1 + $ClDebloatTools = New-Label -Text "System Debloat Tools" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -LocationY 0 + $ApplyTweaks = New-Button -Text "✔ Apply Tweaks" -Width $PanelElementWidth -Height $BBHeight -LocationX $PanelElementX -ElementBefore $ClDebloatTools -FontSize $Header3 -ForeColor $WinBlue + $UndoTweaks = New-Button -Text "❌ Undo Tweaks" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $ApplyTweaks -MarginTop $DistanceBetweenElements -ForeColor $WarningYellow + $RemoveMSEdge = New-Button -Text "Remove Microsoft Edge" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $UndoTweaks -MarginTop $DistanceBetweenElements -ForeColor $WarningYellow + $RemoveOneDrive = New-Button -Text "Remove OneDrive" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $RemoveMSEdge -MarginTop $DistanceBetweenElements -ForeColor $WarningYellow + $RemoveXbox = New-Button -Text "Remove Xbox" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $RemoveOneDrive -MarginTop $DistanceBetweenElements -ForeColor $WarningYellow + $PictureBox1 = New-PictureBox -ImageLocation "$PSScriptRoot\src\assets\script-logo.png" -Width $PanelElementWidth -Height (($BBHeight * 2) + $DistanceBetweenElements) -LocationX $PanelElementX -ElementBefore $RemoveXbox -MarginTop $DistanceBetweenElements -SizeMode 'Zoom' + + $ClInstallSystemApps = New-Label -Text "Install System Apps" -Width $PanelWidth -Height $CaptionLabelHeight -LocationX 0 -ElementBefore $PictureBox1 + $EnableHEVCSupport = New-Button -Text "Get H.265 video codec" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClInstallSystemApps + $InstallCortana = New-Button -Text "Cortana" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $EnableHEVCSupport -MarginTop $DistanceBetweenElements + $InstallDolbyAudio = New-Button -Text "Dolby Audio" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $InstallCortana -MarginTop $DistanceBetweenElements + $InstallMicrosoftEdge = New-Button -Text "Microsoft Edge" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $InstallDolbyAudio -MarginTop $DistanceBetweenElements + $InstallOneDrive = New-Button -Text "OneDrive" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $InstallMicrosoftEdge -MarginTop $DistanceBetweenElements + $InstallPaintPaint3D = New-Button -Text "Paint + Paint 3D" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallOneDrive + $InstallPhoneLink = New-Button -Text "Phone Link" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPaintPaint3D + $InstallSoundRecorder = New-Button -Text "Sound Recorder" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPhoneLink + $InstallTaskbarWidgets = New-Button -Text "Taskbar Widgets" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallSoundRecorder + $InstallUWPWMediaPlayer = New-Button -Text "Windows Media Player (UWP)" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $InstallTaskbarWidgets -MarginTop $DistanceBetweenElements + $InstallXbox = New-Button -Text "Xbox" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $InstallUWPWMediaPlayer -MarginTop $DistanceBetweenElements + + $ClOtherTools = New-Label -Text "Other Tools" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -LocationY 0 -ElementBefore $InstallXbox + $RandomizeSystemColor = New-Button -Text "Randomize System Color" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $ClOtherTools -MarginTop $DistanceBetweenElements + $ReinstallBloatApps = New-Button -Text "Reinstall Pre-Installed Apps" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $RandomizeSystemColor -MarginTop $DistanceBetweenElements + $RepairWindows = New-Button -Text "Repair Windows" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $ReinstallBloatApps -MarginTop $DistanceBetweenElements + $ShowDebloatInfo = New-Button -Text "Show Debloat Info" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -ElementBefore $RepairWindows -MarginTop $DistanceBetweenElements + + # ==> T1 Panel 2 + $ClCustomizeFeatures = New-Label -Text "Customize System Features" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -LocationY 0 + $CbDarkTheme = New-CheckBox -Text "Enable Dark Theme" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClCustomizeFeatures -MarginTop $DistanceBetweenElements + $CbActivityHistory = New-CheckBox -Text "Enable Activity History" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbDarkTheme + $CbBackgroundsApps = New-CheckBox -Text "Enable Background Apps" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbActivityHistory + $CbClipboardHistory = New-CheckBox -Text "Enable Clipboard History" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbBackgroundsApps + $CbClipboardSyncAcrossDevice = New-CheckBox -Text "Enable Clipboard Sync Across Devices" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbClipboardHistory + $CbCortana = New-CheckBox -Text "Enable Cortana" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbClipboardSyncAcrossDevice + $CbOldVolumeControl = New-CheckBox -Text "Enable Old Volume Control" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbCortana + $CbOnlineSpeechRecognition = New-CheckBox -Text "Enable Online Speech Recognition" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbOldVolumeControl + $CbPhoneLink = New-CheckBox -Text "Enable Phone Link" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbOnlineSpeechRecognition + $CbPhotoViewer = New-CheckBox -Text "Enable Photo Viewer" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbPhoneLink + $CbSearchAppForUnknownExt = New-CheckBox -Text "Enable Search App for Unknown Ext." -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbPhotoViewer + $CbTelemetry = New-CheckBox -Text "Enable Telemetry" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbSearchAppForUnknownExt + $CbWSearchService = New-CheckBox -Text "Enable WSearch Service" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbTelemetry + $CbXboxGameBarDVRandMode = New-CheckBox -Text "Enable Xbox Game Bar/DVR/Mode" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbWSearchService + + $ClOptionalFeatures = New-Label -Text "Optional Features" -Width $PanelWidth -Height $CaptionLabelHeight -LocationX 0 -ElementBefore $CbXboxGameBarDVRandMode + $CbInternetExplorer = New-CheckBox -Text "Internet Explorer" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClOptionalFeatures + $CbPrintToPDFServices = New-CheckBox -Text "Printing-PrintToPDFServices-Features" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbInternetExplorer + $CbPrintingXPSServices = New-CheckBox -Text "Printing-XPSServices-Features" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbPrintToPDFServices + $CbWindowsMediaPlayer = New-CheckBox -Text "Windows Media Player" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbPrintingXPSServices + + $ClMiscFeatures = New-Label -Text "Miscellaneous Features" -Width $PanelWidth -Height $CaptionLabelHeight -LocationX 0 -ElementBefore $CbWindowsMediaPlayer + $CbEncryptedDNS = New-CheckBox -Text "Enable Encrypted DNS" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClMiscFeatures + $CbGodMode = New-CheckBox -Text "Enable God Mode" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbEncryptedDNS + $CbMouseNaturalScroll = New-CheckBox -Text "Enable Mouse Natural Scroll" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbGodMode + $CbTakeOwnership = New-CheckBox -Text "Enable Take Ownership menu" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbMouseNaturalScroll + $CbFastShutdownPCShortcut = New-CheckBox -Text "Enable Fast Shutdown shortcut" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $CbTakeOwnership + + # ==> Tab 2 + $TlSoftwareInstall = New-Label -Text "Software Install" -Width $TotalWidth -Height $TitleLabelHeight -LocationX 0 -LocationY $TitleLabelY -FontSize $Header1 -FontStyle "Bold" -ForeColor $WinBlue + $ClSoftwareInstall = New-Label -Text "Package Managers: Winget and Chocolatey" -Width $TotalWidth -Height $CaptionLabelHeight -LocationX 0 -ElementBefore $TlSoftwareInstall -MarginTop $DistanceBetweenElements -ForeColor $White + + $CurrentPanelIndex = 0 + $T2Panel1 = New-Panel -Width $PanelWidth -Height $SoftwareInstallHeight -LocationX ($PanelWidth * $CurrentPanelIndex) -ElementBefore $ClSoftwareInstall + $CurrentPanelIndex++ + $T2Panel2 = New-Panel -Width $PanelWidth -Height $SoftwareInstallHeight -LocationX ($PanelWidth * $CurrentPanelIndex) -ElementBefore $ClSoftwareInstall + $CurrentPanelIndex++ + $T2Panel3 = New-Panel -Width $PanelWidth -Height $SoftwareInstallHeight -LocationX ($PanelWidth * $CurrentPanelIndex) -ElementBefore $ClSoftwareInstall + $CurrentPanelIndex++ + $T2Panel4 = New-Panel -Width $PanelWidth -Height $SoftwareInstallHeight -LocationX ($PanelWidth * $CurrentPanelIndex) -ElementBefore $ClSoftwareInstall + + # ==> T2 Panel 1 + $UpgradeAll = New-Button -Text "Upgrade All Softwares" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -LocationY 0 + + $ClCpuGpuDrivers = New-Label -Text "CPU/GPU Drivers" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $UpgradeAll + $InstallAmdRyzenChipsetDriver = New-CheckBox -Text "AMD Ryzen Chipset Driver" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClCpuGpuDrivers -ForeColor $AmdRyzenPrimaryColor + $InstallIntelDSA = New-CheckBox -Text "Intel® DSA" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallAmdRyzenChipsetDriver -ForeColor $IntelPrimaryColor + $InstallNvidiaGeForceExperience = New-CheckBox -Text "NVIDIA GeForce Experience" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallIntelDSA -ForeColor $NVIDIAPrimaryColor + $InstallNVCleanstall = New-CheckBox -Text "NVCleanstall" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallNvidiaGeForceExperience + + $ClApplicationRequirements = New-Label -Text "Application Requirements" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallNVCleanstall + $InstallDirectX = New-CheckBox -Text "DirectX End-User Runtime" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClApplicationRequirements + $InstallMsDotNetFramework = New-CheckBox -Text "Microsoft .NET Framework" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallDirectX + $InstallMsVCppX64 = New-CheckBox -Text "MSVC Redist 2005-2022 (x64)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallMsDotNetFramework + $InstallMsVCppX86 = New-CheckBox -Text "MSVC Redist 2005-2022 (x86)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallMsVCppX64 + + $ClFileCompression = New-Label -Text "File Compression" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallMsVCppX86 + $Install7Zip = New-CheckBox -Text "7-Zip" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClFileCompression + $InstallWinRar = New-CheckBox -Text "WinRAR (Trial)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $Install7Zip + + $ClDocuments = New-Label -Text "Document Editors/Readers" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallWinRar + $InstallAdobeReaderDC = New-CheckBox -Text "Adobe Reader DC (x64)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClDocuments + $InstallLibreOffice = New-CheckBox -Text "LibreOffice" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallAdobeReaderDC + $InstallOnlyOffice = New-CheckBox -Text "ONLYOFFICE DesktopEditors" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallLibreOffice + $InstallPDFCreator = New-CheckBox -Text "PDFCreator (PDF Converter)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallOnlyOffice + $InstallPowerBi = New-CheckBox -Text "Power BI" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPDFCreator + $InstallSumatraPDF = New-CheckBox -Text "Sumatra PDF" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPowerBi + + $ClTorrent = New-Label -Text "Torrent" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallSumatraPDF + $InstallqBittorrent = New-CheckBox -Text "qBittorrent" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClTorrent + + $ClAcademicResearch = New-Label -Text "Academic Research" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallqBittorrent + $InstallZotero = New-CheckBox -Text "Zotero" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClAcademicResearch + + $Cl2fa = New-Label -Text "2-Factor Authentication" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallZotero + $InstallTwilioAuthy = New-CheckBox -Text "Twilio Authy" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $Cl2fa + + $ClBootableUsb = New-Label -Text "Bootable USB" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallTwilioAuthy + $InstallBalenaEtcher = New-CheckBox -Text "Etcher" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClBootableUsb + $InstallRufus = New-CheckBox -Text "Rufus" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallBalenaEtcher + $InstallVentoy = New-CheckBox -Text "Ventoy" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRufus + + $ClVirtualMachines = New-Label -Text "Virtual Machines" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallVentoy + $InstallOracleVirtualBox = New-CheckBox -Text "Oracle VM VirtualBox" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClVirtualMachines + $InstallQemu = New-CheckBox -Text "QEMU" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallOracleVirtualBox + $InstallVmWarePlayer = New-CheckBox -Text "VMware Workstation Player" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallQemu + + $ClCloudStorage = New-Label -Text "Cloud Storage" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallVmWarePlayer + $InstallDropbox = New-CheckBox -Text "Dropbox" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClCloudStorage + $InstallGoogleDrive = New-CheckBox -Text "Google Drive" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallDropbox + + $ClUICustomization = New-Label -Text "UI Customization" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallGoogleDrive + $InstallRoundedTB = New-CheckBox -Text "RoundedTB" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClUICustomization + $InstallTranslucentTB = New-CheckBox -Text "TranslucentTB" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRoundedTB + + # ==> T2 Panel 2 + $InstallSelected = New-Button -Text "Install Selected" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -LocationY 0 -FontStyle "Bold" + + $ClWebBrowsers = New-Label -Text "Web Browsers" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallSelected + $InstallBraveBrowser = New-CheckBox -Text "Brave Browser" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClWebBrowsers + $InstallGoogleChrome = New-CheckBox -Text "Google Chrome" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallBraveBrowser + $InstallMozillaFirefox = New-CheckBox -Text "Mozilla Firefox" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallGoogleChrome + + $ClAudioVideoTools = New-Label -Text "Audio/Video Tools" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallMozillaFirefox + $InstallAudacity = New-CheckBox -Text "Audacity (Editor)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClAudioVideoTools + $InstallMpcHc = New-CheckBox -Text "MPC-HC (Player)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallAudacity + $InstallVlc = New-CheckBox -Text "VLC (Player)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallMpcHc + + $ClImageTools = New-Label -Text "Image Tools" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallVlc + $InstallGimp = New-CheckBox -Text "GIMP" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClImageTools + $InstallInkscape = New-CheckBox -Text "Inkscape" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallGimp + $InstallIrfanView = New-CheckBox -Text "IrfanView" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallInkscape + $InstallKrita = New-CheckBox -Text "Krita" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallIrfanView + $InstallPaintNet = New-CheckBox -Text "Paint.NET" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallKrita + $InstallShareX = New-CheckBox -Text "ShareX (Screenshots/GIFs)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPaintNet + + $ClStreamingServices = New-Label -Text "Streaming Services" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallShareX + $InstallAmazonPrimeVideo = New-CheckBox -Text "Amazon Prime Video" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClStreamingServices + $InstallDisneyPlus = New-CheckBox -Text "Disney+" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallAmazonPrimeVideo + $InstallNetflix = New-CheckBox -Text "Netflix" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallDisneyPlus + $InstallSpotify = New-CheckBox -Text "Spotify" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallNetflix + + $ClPlanningProductivity = New-Label -Text "Planning/Productivity" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallSpotify + $InstallNotion = New-CheckBox -Text "Notion" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClPlanningProductivity + $InstallObsidian = New-CheckBox -Text "Obsidian" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallNotion + + $ClUtilities = New-Label -Text "⚒ Utilities" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallObsidian + $InstallCpuZ = New-CheckBox -Text "CPU-Z" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClUtilities + $InstallCrystalDiskInfo = New-CheckBox -Text "Crystal Disk Info" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallCpuZ + $InstallCrystalDiskMark = New-CheckBox -Text "Crystal Disk Mark" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallCrystalDiskInfo + $InstallGeekbench5 = New-CheckBox -Text "Geekbench 5" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallCrystalDiskMark + $InstallGpuZ = New-CheckBox -Text "GPU-Z" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallGeekbench5 + $InstallHwInfo = New-CheckBox -Text "HWiNFO" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallGpuZ + $InstallInternetDownloadManager = New-CheckBox -Text "Internet Download Manager (Trial)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallHwInfo + $InstallMsiAfterburner = New-CheckBox -Text "MSI Afterburner" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallInternetDownloadManager + $InstallRtxVoice = New-CheckBox -Text "RTX Voice" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallMsiAfterburner + $InstallVoicemod = New-CheckBox -Text "Voicemod" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRtxVoice + $InstallVoiceMeeter = New-CheckBox -Text "Voicemeeter Potato" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallVoicemod + + $ClNetworkManagement = New-Label -Text "Network Management" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallVoiceMeeter + $InstallHamachi = New-CheckBox -Text "Hamachi (LAN)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClNetworkManagement + $InstallPuTty = New-CheckBox -Text "PuTTY" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallHamachi + $InstallRadminVpn = New-CheckBox -Text "Radmin VPN (LAN)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPuTty + $InstallWinScp = New-CheckBox -Text "WinSCP" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRadminVpn + $InstallWireshark = New-CheckBox -Text "Wireshark" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallWinScp + + # ==> T2 Panel 3 + $UninstallMode = New-Button -Text "[OFF] Uninstall Mode" -Width $PanelElementWidth -Height $ButtonHeight -LocationX $PanelElementX -LocationY 0 -FontStyle "Bold" + + $ClCommunication = New-Label -Text "Communication" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $UninstallMode + $InstallDiscord = New-CheckBox -Text "Discord" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClCommunication + $InstallMSTeams = New-CheckBox -Text "Microsoft Teams" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallDiscord + $InstallRocketChat = New-CheckBox -Text "Rocket Chat" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallMSTeams + $InstallSignal = New-CheckBox -Text "Signal" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRocketChat + $InstallSkype = New-CheckBox -Text "Skype" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallSignal + $InstallSlack = New-CheckBox -Text "Slack" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallSkype + $InstallTelegramDesktop = New-CheckBox -Text "Telegram Desktop" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallSlack + $InstallWhatsAppDesktop = New-CheckBox -Text "WhatsApp Desktop" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallTelegramDesktop + $InstallZoom = New-CheckBox -Text "Zoom" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallWhatsAppDesktop + + $ClGaming = New-Label -Text "Gaming" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallZoom + $InstallBorderlessGaming = New-CheckBox -Text "Borderless Gaming" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClGaming + $InstallEADesktop = New-CheckBox -Text "EA Desktop" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallBorderlessGaming + $InstallEpicGamesLauncher = New-CheckBox -Text "Epic Games Launcher" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallEADesktop + $InstallGogGalaxy = New-CheckBox -Text "GOG Galaxy" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallEpicGamesLauncher + $InstallSteam = New-CheckBox -Text "Steam" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallGogGalaxy + $InstallUbisoftConnect = New-CheckBox -Text "Ubisoft Connect" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallSteam + + $ClRemoteConnection = New-Label -Text "Remote Connection" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallUbisoftConnect + $InstallAnyDesk = New-CheckBox -Text "AnyDesk" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClRemoteConnection + $InstallParsec = New-CheckBox -Text "Parsec" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallAnyDesk + $InstallScrCpy = New-CheckBox -Text "ScrCpy (Android)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallParsec + $InstallTeamViewer = New-CheckBox -Text "Team Viewer" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallScrCpy + + $ClRecordingAndStreaming = New-Label -Text "Recording and Streaming" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallTeamViewer + $InstallElgatoStreamDeck = New-CheckBox -Text "Elgato Stream Deck" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClRecordingAndStreaming + $InstallHandBrake = New-CheckBox -Text "HandBrake (Transcode)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallElgatoStreamDeck + $InstallObsStudio = New-CheckBox -Text "OBS Studio" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallHandBrake + $InstallStreamlabs = New-CheckBox -Text "Streamlabs" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallObsStudio + + $ClEmulation = New-Label -Text "Emulation" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallStreamlabs + $InstallBSnesHd = New-CheckBox -Text "BSnes HD (SNES)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClEmulation + $InstallCemu = New-CheckBox -Text "Cemu (Wii U)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallBSnesHd + $InstallDolphin = New-CheckBox -Text "Dolphin Stable (GC/Wii)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallCemu + $InstallKegaFusion = New-CheckBox -Text "Kega Fusion (Sega Genesis)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallDolphin + $InstallMGba = New-CheckBox -Text "mGBA (GBA)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallKegaFusion + $InstallPCSX2 = New-CheckBox -Text "PCSX2 Stable (PS2 | Portable)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallMGba + $InstallPPSSPP = New-CheckBox -Text "PPSSPP (PSP)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPCSX2 + $InstallProject64 = New-CheckBox -Text "Project64 Dev (N64)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPPSSPP + $InstallRetroArch = New-CheckBox -Text "RetroArch (All In One)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallProject64 + $InstallRyujinx = New-CheckBox -Text "Ryujinx (Switch)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRetroArch + $InstallSnes9x = New-CheckBox -Text "Snes9x (SNES)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRyujinx + + # ==> T2 Panel 4 + $ClTextEditors = New-Label -Text "Text Editors/IDEs" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -LocationY ($ButtonHeight + $DistanceBetweenElements) + $InstallAtom = New-CheckBox -Text "Atom" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClTextEditors + $InstallJetBrainsToolbox = New-CheckBox -Text "JetBrains Toolbox" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallAtom + $InstallNotepadPlusPlus = New-CheckBox -Text "Notepad++" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallJetBrainsToolbox + $InstallVisualStudioCommunity = New-CheckBox -Text "Visual Studio 2022 Community" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallNotepadPlusPlus + $InstallVSCode = New-CheckBox -Text "VS Code" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallVisualStudioCommunity + $InstallVSCodium = New-CheckBox -Text "VS Codium" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallVSCode + + $ClWsl = New-Label -Text "Windows Subsystem For Linux" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallVSCodium + $InstallWSLgOrPreview = New-CheckBox -Text "Install WSLg/Preview" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClWsl -ForeColor $WinBlue + $InstallArchWSL = New-CheckBox -Text "ArchWSL (x64)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallWSLgOrPreview -ForeColor $WinBlue + $InstallDebian = New-CheckBox -Text "Debian GNU/Linux" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallArchWSL + $InstallKaliLinux = New-CheckBox -Text "Kali Linux Rolling" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallDebian + $InstallOpenSuse = New-CheckBox -Text "Open SUSE 42" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallKaliLinux + $InstallSles = New-CheckBox -Text "SLES v12" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallOpenSuse + $InstallUbuntu = New-CheckBox -Text "Ubuntu" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallSles + $InstallUbuntu16Lts = New-CheckBox -Text "Ubuntu 16.04 LTS" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallUbuntu + $InstallUbuntu18Lts = New-CheckBox -Text "Ubuntu 18.04 LTS" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallUbuntu16Lts + $InstallUbuntu20Lts = New-CheckBox -Text "Ubuntu 20.04 LTS" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallUbuntu18Lts + + $ClDevelopment = New-Label -Text "⌨ Development on Windows" -Width $PanelElementWidth -Height $CaptionLabelHeight -LocationX $PanelElementX -ElementBefore $InstallUbuntu20Lts + $InstallWindowsTerminal = New-CheckBox -Text "Windows Terminal" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $ClDevelopment + $InstallNerdFonts = New-CheckBox -Text "Install Nerd Fonts" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallWindowsTerminal -ForeColor $WinBlue + $InstallGitGnupgSshSetup = New-CheckBox -Text "Git + GnuPG + SSH (Setup)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallNerdFonts -ForeColor $WinBlue + $InstallAdb = New-CheckBox -Text "Android Debug Bridge (ADB)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallGitGnupgSshSetup + $InstallAndroidStudio = New-CheckBox -Text "Android Studio" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallAdb + $InstallDockerDesktop = New-CheckBox -Text "Docker Desktop" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallAndroidStudio + $InstallInsomnia = New-CheckBox -Text "Insomnia" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallDockerDesktop + $InstallJavaJdks = New-CheckBox -Text "Java - Adoptium JDK 8/11/18" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallInsomnia + $InstallJavaJre = New-CheckBox -Text "Java - Oracle JRE" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallJavaJdks + $InstallMySql = New-CheckBox -Text "MySQL" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallJavaJre + $InstallNodeJs = New-CheckBox -Text "NodeJS" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallMySql + $InstallNodeJsLts = New-CheckBox -Text "NodeJS LTS" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallNodeJs + $InstallPostgreSql = New-CheckBox -Text "PostgreSQL" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallNodeJsLts + $InstallPython3 = New-CheckBox -Text "Python 3" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPostgreSql + $InstallPythonAnaconda3 = New-CheckBox -Text "Python - Anaconda3" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPython3 + $InstallRuby = New-CheckBox -Text "Ruby" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallPythonAnaconda3 + $InstallRubyMsys = New-CheckBox -Text "Ruby (MSYS2)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRuby + $InstallRustGnu = New-CheckBox -Text "Rust (GNU)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRubyMsys + $InstallRustMsvc = New-CheckBox -Text "Rust (MSVC)" -Width $PanelElementWidth -Height $CheckBoxHeight -LocationX $PanelElementX -ElementBefore $InstallRustGnu + + # Add TabControl to the Form + $Form.Controls.AddRange(@($FormTabControl)) + # Tabs + $FormTabControl.Controls.AddRange(@($TabSystemTweaks, $TabSoftwareInstall)) + $TabSystemTweaks.Controls.AddRange(@($TlSystemTweaks, $ClSystemTweaks, $T1Panel1, $T1Panel2)) + $TabSoftwareInstall.Controls.AddRange(@($TlSoftwareInstall, $ClSoftwareInstall, $T2Panel1, $T2Panel2, $T2Panel3, $T2Panel4)) + # Add Elements to each Tab Panel + $T1Panel1.Controls.AddRange(@($ClDebloatTools, $ApplyTweaks, $UndoTweaks, $RemoveMSEdge, $RemoveOneDrive, $RemoveXbox, $PictureBox1)) + $T1Panel1.Controls.AddRange(@($ClInstallSystemApps, $EnableHEVCSupport, $InstallCortana, $InstallDolbyAudio, $InstallMicrosoftEdge, $InstallOneDrive, $InstallPaintPaint3D, $InstallTaskbarWidgets, $InstallUWPWMediaPlayer, $InstallPhoneLink, $InstallSoundRecorder, $InstallXbox)) + $T1Panel1.Controls.AddRange(@($ClOtherTools, $RandomizeSystemColor, $ReinstallBloatApps, $RepairWindows, $ShowDebloatInfo)) + $T1Panel2.Controls.AddRange(@($ClCustomizeFeatures, $CbDarkTheme, $CbActivityHistory, $CbBackgroundsApps, $CbClipboardHistory, $CbClipboardSyncAcrossDevice, $CbCortana, $CbOldVolumeControl, $CbOnlineSpeechRecognition, $CbPhoneLink, $CbPhotoViewer, $CbSearchAppForUnknownExt, $CbTelemetry, $CbWSearchService, $CbXboxGameBarDVRandMode)) + $T1Panel2.Controls.AddRange(@($ClOptionalFeatures, $CbInternetExplorer, $CbPrintToPDFServices, $CbPrintingXPSServices, $CbWindowsMediaPlayer)) + $T1Panel2.Controls.AddRange(@($ClMiscFeatures, $CbEncryptedDNS, $CbGodMode, $CbMouseNaturalScroll, $CbTakeOwnership, $CbFastShutdownPCShortcut)) + + $T2Panel1.Controls.AddRange(@($UpgradeAll)) + $T2Panel1.Controls.AddRange(@($ClCpuGpuDrivers, $InstallAmdRyzenChipsetDriver, $InstallIntelDSA, $InstallNvidiaGeForceExperience, $InstallNVCleanstall)) + $T2Panel1.Controls.AddRange(@($ClApplicationRequirements, $InstallDirectX, $InstallMsDotNetFramework, $InstallMsVCppX64, $InstallMsVCppX86)) + $T2Panel1.Controls.AddRange(@($ClFileCompression, $Install7Zip, $InstallWinRar)) + $T2Panel1.Controls.AddRange(@($ClDocuments, $InstallAdobeReaderDC, $InstallLibreOffice, $InstallOnlyOffice, $InstallPDFCreator, $InstallPowerBi, $InstallSumatraPDF)) + $T2Panel1.Controls.AddRange(@($ClTorrent, $InstallqBittorrent)) + $T2Panel1.Controls.AddRange(@($ClAcademicResearch, $InstallZotero)) + $T2Panel1.Controls.AddRange(@($Cl2fa, $InstallTwilioAuthy)) + $T2Panel1.Controls.AddRange(@($ClBootableUsb, $InstallBalenaEtcher, $InstallRufus, $InstallVentoy)) + $T2Panel1.Controls.AddRange(@($ClVirtualMachines, $InstallOracleVirtualBox, $InstallQemu, $InstallVmWarePlayer)) + $T2Panel1.Controls.AddRange(@($ClCloudStorage, $InstallDropbox, $InstallGoogleDrive)) + $T2Panel1.Controls.AddRange(@($ClUICustomization, $InstallRoundedTB, $InstallTranslucentTB)) + $T2Panel2.Controls.AddRange(@($InstallSelected)) + $T2Panel2.Controls.AddRange(@($ClWebBrowsers, $InstallBraveBrowser, $InstallGoogleChrome, $InstallMozillaFirefox)) + $T2Panel2.Controls.AddRange(@($ClAudioVideoTools, $InstallAudacity, $InstallMpcHc, $InstallVlc)) + $T2Panel2.Controls.AddRange(@($ClImageTools, $InstallGimp, $InstallInkscape, $InstallIrfanView, $InstallKrita, $InstallPaintNet, $InstallShareX)) + $T2Panel2.Controls.AddRange(@($ClStreamingServices, $InstallAmazonPrimeVideo, $InstallDisneyPlus, $InstallNetflix, $InstallSpotify)) + $T2Panel2.Controls.AddRange(@($ClPlanningProductivity, $InstallNotion, $InstallObsidian)) + $T2Panel2.Controls.AddRange(@($ClUtilities, $InstallCpuZ, $InstallCrystalDiskInfo, $InstallCrystalDiskMark, $InstallGeekbench5, $InstallGpuZ, $InstallHwInfo, $InstallInternetDownloadManager, $InstallMsiAfterburner, $InstallRtxVoice, $InstallVoicemod, $InstallVoiceMeeter)) + $T2Panel2.Controls.AddRange(@($ClNetworkManagement, $InstallHamachi, $InstallPuTty, $InstallRadminVpn, $InstallWinScp, $InstallWireshark)) + $T2Panel3.Controls.AddRange(@($UninstallMode)) + $T2Panel3.Controls.AddRange(@($ClCommunication, $InstallDiscord, $InstallMSTeams, $InstallRocketChat, $InstallSignal, $InstallSkype, $InstallSlack, $InstallTelegramDesktop, $InstallWhatsAppDesktop, $InstallZoom)) + $T2Panel3.Controls.AddRange(@($ClGaming, $InstallBorderlessGaming, $InstallEADesktop, $InstallEpicGamesLauncher, $InstallGogGalaxy, $InstallSteam, $InstallUbisoftConnect)) + $T2Panel3.Controls.AddRange(@($ClRemoteConnection, $InstallAnyDesk, $InstallParsec, $InstallScrCpy, $InstallTeamViewer)) + $T2Panel3.Controls.AddRange(@($ClRecordingAndStreaming, $InstallElgatoStreamDeck, $InstallHandBrake, $InstallObsStudio, $InstallStreamlabs)) + $T2Panel3.Controls.AddRange(@($ClEmulation, $InstallBSnesHd, $InstallCemu, $InstallDolphin, $InstallKegaFusion, $InstallMGba, $InstallPCSX2, $InstallPPSSPP, $InstallProject64, $InstallRetroArch, $InstallRyujinx, $InstallSnes9x)) + $T2Panel4.Controls.AddRange(@($ClTextEditors, $InstallAtom, $InstallJetBrainsToolbox, $InstallNotepadPlusPlus, $InstallVisualStudioCommunity, $InstallVSCode, $InstallVSCodium)) + $T2Panel4.Controls.AddRange(@($ClWsl, $InstallWSLgOrPreview, $InstallArchWSL, $InstallDebian, $InstallKaliLinux, $InstallOpenSuse, $InstallSles, $InstallUbuntu, $InstallUbuntu16Lts, $InstallUbuntu18Lts, $InstallUbuntu20Lts)) + $T2Panel4.Controls.AddRange(@($ClDevelopment, $InstallWindowsTerminal, $InstallNerdFonts, $InstallGitGnupgSshSetup, $InstallAdb, $InstallAndroidStudio, $InstallDockerDesktop, $InstallInsomnia, $InstallJavaJdks, $InstallJavaJre, $InstallMySql, $InstallNodeJs, $InstallNodeJsLts, $InstallPostgreSql, $InstallPython3, $InstallPythonAnaconda3, $InstallRuby, $InstallRubyMsys, $InstallRustGnu, $InstallRustMsvc)) + + # <===== CLICK EVENTS =====> + + $ApplyTweaks.Add_Click( { + $Scripts = @( + # [Recommended order] + "backup-system.ps1", + "silent-debloat-softwares.ps1", + "optimize-task-scheduler.ps1", + "optimize-services.ps1", + "remove-bloatware-apps.ps1", + "optimize-privacy.ps1", + "optimize-performance.ps1", + "personal-tweaks.ps1", + "optimize-security.ps1", + "optimize-windows-features.ps1" + ) + + Open-PowerShellFilesCollection -RelativeLocation "src\scripts" -Scripts $Scripts -DoneTitle $DoneTitle -DoneMessage $DoneMessage + $PictureBox1.imageLocation = "$PSScriptRoot\src\assets\script-logo2.png" + $Form.Update() + $Script:NeedRestart = $true + }) + + $UndoTweaks.Add_Click( { + $Global:Revert = $true + $Scripts = @( + "silent-debloat-softwares.ps1", + "optimize-task-scheduler.ps1", + "optimize-services.ps1", + "optimize-privacy.ps1", + "optimize-performance.ps1", + "personal-tweaks.ps1", + "optimize-windows-features.ps1", + "reinstall-pre-installed-apps.ps1" + ) + Open-PowerShellFilesCollection -RelativeLocation "src\scripts" -Scripts $Scripts -DoneTitle $DoneTitle -DoneMessage $DoneMessage + $Global:Revert = $false + }) + + $RemoveMSEdge.Add_Click( { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts" -Scripts @("remove-msedge.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + }) + + $RemoveOneDrive.Add_Click( { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts" -Scripts @("remove-onedrive.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + $PictureBox1.imageLocation = "$PSScriptRoot\src\assets\script-logo2.png" + $Form.Update() + }) + + $RemoveXbox.Add_Click( { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts" -Scripts @("remove-xbox.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + $PictureBox1.imageLocation = "$PSScriptRoot\src\assets\script-logo2.png" + $Form.Update() + }) + + $RepairWindows.Add_Click( { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts" -Scripts @("backup-system.ps1", "repair-windows.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + }) + + $EnableHEVCSupport.Add_Click( { + Install-HEVCSupport + }) + + $InstallCortana.Add_Click( { + Install-Cortana + }) + + $InstallDolbyAudio.Add_Click( { + Install-DolbyAudio + }) + + $InstallMicrosoftEdge.Add_Click( { + Install-MicrosoftEdge + }) + + $InstallOneDrive.Add_Click( { + Install-OneDrive + }) + + $InstallPaintPaint3D.Add_Click( { + Install-PaintPaint3D + }) + + $InstallPhoneLink.Add_Click( { + Install-PhoneLink + }) + + $InstallSoundRecorder.Add_Click( { + Install-SoundRecorder + }) + + $InstallTaskbarWidgets.Add_Click( { + Install-TaskbarWidgetsApp + }) + + $InstallUWPWMediaPlayer.Add_Click( { + Install-UWPWindowsMediaPlayer + }) + + $InstallXbox.Add_Click( { + Install-Xbox + }) + + $RandomizeSystemColor.Add_Click( { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts\other-scripts" -Scripts @("new-system-color.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + }) + + $ReinstallBloatApps.Add_Click( { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts" -Scripts @("reinstall-pre-installed-apps.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + }) + + $ShowDebloatInfo.Add_Click( { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts\other-scripts" -Scripts @("show-debloat-info.ps1") -NoDialog + }) + + $CbDarkTheme.Add_Click( { + If ($CbDarkTheme.CheckState -eq "Checked") { + Enable-DarkTheme + $CbDarkTheme.Text = "[ON] Dark Theme" + } Else { + Disable-DarkTheme + $CbDarkTheme.Text = "[OFF] Dark Theme *" + } + }) + + $CbActivityHistory.Add_Click( { + If ($CbActivityHistory.CheckState -eq "Checked") { + Enable-ActivityHistory + $CbActivityHistory.Text = "[ON] Activity History *" + } Else { + Disable-ActivityHistory + $CbActivityHistory.Text = "[OFF] Activity History" + } + }) + + $CbBackgroundsApps.Add_Click( { + If ($CbBackgroundsApps.CheckState -eq "Checked") { + Enable-BackgroundAppsToogle + $CbBackgroundsApps.Text = "[ON] Background Apps *" + } Else { + Disable-BackgroundAppsToogle + $CbBackgroundsApps.Text = "[OFF] Background Apps" + } + }) + + $CbClipboardHistory.Add_Click( { + If ($CbClipboardHistory.CheckState -eq "Checked") { + Enable-ClipboardHistory + $CbClipboardHistory.Text = "[ON] Clipboard History *" + } Else { + Disable-ClipboardHistory + $CbClipboardHistory.Text = "[OFF] Clipboard History" + } + }) + + $CbClipboardSyncAcrossDevice.Add_Click( { + If ($CbClipboardSyncAcrossDevice.CheckState -eq "Checked") { + Enable-ClipboardSyncAcrossDevice + $CbClipboardSyncAcrossDevice.Text = "[ON] Clipboard Sync Across Devices *" + } Else { + Disable-ClipboardSyncAcrossDevice + $CbClipboardSyncAcrossDevice.Text = "[OFF] Clipboard Sync Across Devices" + } + }) + + $CbCortana.Add_Click( { + If ($CbCortana.CheckState -eq "Checked") { + Enable-Cortana + $CbCortana.Text = "[ON] Cortana *" + } Else { + Disable-Cortana + $CbCortana.Text = "[OFF] Cortana" + } + }) + + $CbOldVolumeControl.Add_Click( { + If ($CbOldVolumeControl.CheckState -eq "Checked") { + Enable-OldVolumeControl + $CbOldVolumeControl.Text = "[ON] Old Volume Control" + } Else { + Disable-OldVolumeControl + $CbOldVolumeControl.Text = "[OFF] Old Volume Control *" + } + }) + + $CbOnlineSpeechRecognition.Add_Click( { + If ($CbOnlineSpeechRecognition.CheckState -eq "Checked") { + Enable-OnlineSpeechRecognition + $CbOnlineSpeechRecognition.Text = "[ON] Online Speech Recognition *" + } Else { + Disable-OnlineSpeechRecognition + $CbOnlineSpeechRecognition.Text = "[OFF] Online Speech Recognition" + } + }) + + $CbPhoneLink.Add_Click( { + If ($CbPhoneLink.CheckState -eq "Checked") { + Enable-PhoneLink + $CbPhoneLink.Text = "[ON] Phone Link *" + } Else { + Disable-PhoneLink + $CbPhoneLink.Text = "[OFF] Phone Link" + } + }) + + $CbPhotoViewer.Add_Click( { + If ($CbPhotoViewer.CheckState -eq "Checked") { + Open-RegFilesCollection -RelativeLocation "src\utils" -Scripts @("enable-photo-viewer.reg") -NoDialog + $CbPhotoViewer.Text = "[ON] Photo Viewer" + } Else { + Open-RegFilesCollection -RelativeLocation "src\utils" -Scripts @("disable-photo-viewer.reg") -NoDialog + $CbPhotoViewer.Text = "[OFF] Photo Viewer *" + } + }) + + $CbSearchAppForUnknownExt.Add_Click( { + If ($CbSearchAppForUnknownExt.CheckState -eq "Checked") { + Enable-SearchAppForUnknownExt + $CbSearchAppForUnknownExt.Text = "[ON] Search App for Unknown Ext. *" + } Else { + Disable-SearchAppForUnknownExt + $CbSearchAppForUnknownExt.Text = "[OFF] Search App for Unknown Ext." + } + }) + + $CbTelemetry.Add_Click( { + If ($CbTelemetry.CheckState -eq "Checked") { + Enable-Telemetry + $CbTelemetry.Text = "[ON] Telemetry *" + } Else { + Disable-Telemetry + $CbTelemetry.Text = "[OFF] Telemetry" + } + }) + + $CbWSearchService.Add_Click( { + If ($CbWSearchService.CheckState -eq "Checked") { + Enable-WSearchService + $CbWSearchService.Text = "[ON] WSearch Service *" + } Else { + Disable-WSearchService + $CbWSearchService.Text = "[OFF] WSearch Service" + } + }) + + $CbXboxGameBarDVRandMode.Add_Click( { + If ($CbXboxGameBarDVRandMode.CheckState -eq "Checked") { + Enable-XboxGameBarDVRandMode + $CbXboxGameBarDVRandMode.Text = "[ON] Xbox Game Bar/DVR/Mode *" + } Else { + Disable-XboxGameBarDVRandMode + $CbXboxGameBarDVRandMode.Text = "[OFF] Xbox Game Bar/DVR/Mode" + } + }) + + $CbInternetExplorer.Add_Click( { + If ($CbInternetExplorer.CheckState -eq "Checked") { + Enable-InternetExplorer + $CbInternetExplorer.Text = "[ON] Internet Explorer" + } Else { + Disable-InternetExplorer + $CbInternetExplorer.Text = "[OFF] Internet Explorer *" + } + }) + + $CbPrintToPDFServices.Add_Click( { + If ($CbPrintToPDFServices.CheckState -eq "Checked") { + Enable-PrintToPDFServicesToogle + $CbPrintToPDFServices.Text = "[ON] Print To PDF Services *" + } Else { + Disable-PrintToPDFServicesToogle + $CbPrintToPDFServices.Text = "[OFF] Print To PDF Services" + } + }) + + $CbPrintingXPSServices.Add_Click( { + If ($CbPrintingXPSServices.CheckState -eq "Checked") { + Enable-PrintingXPSServicesToogle + $CbPrintingXPSServices.Text = "[ON] Printing XPS Services *" + } Else { + Disable-PrintingXPSServicesToogle + $CbPrintingXPSServices.Text = "[OFF] Printing XPS Services" + } + }) + + $CbWindowsMediaPlayer.Add_Click( { + If ($CbWindowsMediaPlayer.CheckState -eq "Checked") { + Enable-WindowsMediaPlayer + $CbWindowsMediaPlayer.Text = "[ON] Windows Media Player *" + } Else { + Disable-WindowsMediaPlayer + $CbWindowsMediaPlayer.Text = "[OFF] Windows Media Player" + } + }) + + $CbEncryptedDNS.Add_Click( { + If ($CbEncryptedDNS.CheckState -eq "Checked") { + Enable-EncryptedDNS + $CbEncryptedDNS.Text = "[ON] Encrypted DNS" + } Else { + Disable-EncryptedDNS + $CbEncryptedDNS.Text = "[OFF] Encrypted DNS *" + } + }) + + $CbGodMode.Add_Click( { + If ($CbGodMode.CheckState -eq "Checked") { + Enable-GodMode + $CbGodMode.Text = "[ON] God Mode" + } Else { + Disable-GodMode + $CbGodMode.Text = "[OFF] God Mode *" + } + }) + + $CbMouseNaturalScroll.Add_Click( { + If ($CbMouseNaturalScroll.CheckState -eq "Checked") { + Enable-MouseNaturalScroll + $CbMouseNaturalScroll.Text = "[ON] Mouse Natural Scroll" + } Else { + Disable-MouseNaturalScroll + $CbMouseNaturalScroll.Text = "[OFF] Mouse Natural Scroll *" + } + }) + + $CbTakeOwnership.Add_Click( { + If ($CbTakeOwnership.CheckState -eq "Checked") { + Open-RegFilesCollection -RelativeLocation "src\utils" -Scripts @("enable-take-ownership-context-menu.reg") -NoDialog + $CbTakeOwnership.Text = "[ON] Take Ownership menu" + } Else { + Open-RegFilesCollection -RelativeLocation "src\utils" -Scripts @("disable-take-ownership-context-menu.reg") -NoDialog + $CbTakeOwnership.Text = "[OFF] Take Ownership... *" + } + }) + + $CbFastShutdownPCShortcut.Add_Click( { + If ($CbFastShutdownPCShortcut.CheckState -eq "Checked") { + Enable-FastShutdownShortcut + $CbFastShutdownPCShortcut.Text = "[ON] Fast Shutdown shortcut" + } Else { + Disable-FastShutdownShortcut + $CbFastShutdownPCShortcut.Text = "[OFF] Fast Shutdown shortcut *" + } + }) + + $UpgradeAll.Add_Click( { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts\other-scripts" -Scripts @("update-all-packages.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + }) + + $InstallSelected.Add_Click( { + $AppsSelected = @{ + WingetApps = [System.Collections.ArrayList]@() + MSStoreApps = [System.Collections.ArrayList]@() + ChocolateyApps = [System.Collections.ArrayList]@() + WSLDistros = [System.Collections.ArrayList]@() + } + + $SoftwareList = "" + + If ($InstallAmdRyzenChipsetDriver.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("amd-ryzen-chipset") + $InstallAmdRyzenChipsetDriver.CheckState = "Unchecked" + } + + If ($InstallIntelDSA.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Intel.IntelDriverAndSupportAssistant") + $InstallIntelDSA.CheckState = "Unchecked" + } + + If ($InstallNvidiaGeForceExperience.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Nvidia.GeForceExperience") + $InstallNvidiaGeForceExperience.CheckState = "Unchecked" + } + + If ($InstallNVCleanstall.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("TechPowerUp.NVCleanstall") + $InstallNVCleanstall.CheckState = "Unchecked" + } + + If ($InstallDirectX.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("directx") + $InstallDirectX.CheckState = "Unchecked" + } + + If ($InstallMsDotNetFramework.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Microsoft.dotNetFramework") + $InstallMsDotNetFramework.CheckState = "Unchecked" + } + + If ($InstallMsVCppX64.CheckState -eq "Checked") { + $AppsSelected.WingetApps.AddRange( + @( + "Microsoft.VCRedist.2005.x64", "Microsoft.VCRedist.2008.x64", "Microsoft.VCRedist.2010.x64", + "Microsoft.VCRedist.2012.x64", "Microsoft.VCRedist.2013.x64", "Microsoft.VCRedist.2015+.x64" + ) + ) + $InstallMsVCppX64.CheckState = "Unchecked" + } + + If ($InstallMsVCppX86.CheckState -eq "Checked") { + $AppsSelected.WingetApps.AddRange( + @( + "Microsoft.VCRedist.2005.x86", "Microsoft.VCRedist.2008.x86", "Microsoft.VCRedist.2010.x86", + "Microsoft.VCRedist.2012.x86", "Microsoft.VCRedist.2013.x86", "Microsoft.VCRedist.2015+.x86" + ) + ) + $InstallMsVCppX86.CheckState = "Unchecked" + } + + If ($Install7Zip.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("7zip.7zip") + $Install7Zip.CheckState = "Unchecked" + } + + If ($InstallWinRar.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("RARLab.WinRAR") + $InstallWinRar.CheckState = "Unchecked" + } + + If ($InstallAdobeReaderDC.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Adobe.Acrobat.Reader.64-bit") + $InstallAdobeReaderDC.CheckState = "Unchecked" + } + + If ($InstallLibreOffice.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("TheDocumentFoundation.LibreOffice") + $InstallLibreOffice.CheckState = "Unchecked" + } + + If ($InstallOnlyOffice.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("ONLYOFFICE.DesktopEditors") + $InstallOnlyOffice.CheckState = "Unchecked" + } + + If ($InstallSumatraPDF.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("SumatraPDF.SumatraPDF") + $InstallSumatraPDF.CheckState = "Unchecked" + } + + If ($InstallPDFCreator.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("PDFCreator") + $InstallPDFCreator.CheckState = "Unchecked" + } + + If ($InstallPowerBi.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Microsoft.PowerBI") + $InstallPowerBi.CheckState = "Unchecked" + } + + If ($InstallqBittorrent.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("qBittorrent.qBittorrent") + $InstallqBittorrent.CheckState = "Unchecked" + } + + If ($InstallZotero.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Zotero.Zotero") + $InstallZotero.CheckState = "Unchecked" + } + + If ($InstallTwilioAuthy.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Twilio.Authy") + $InstallTwilioAuthy.CheckState = "Unchecked" + } + + If ($InstallBalenaEtcher.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Balena.Etcher") + $InstallBalenaEtcher.CheckState = "Unchecked" + } + + If ($InstallRufus.CheckState -eq "Checked") { + $AppsSelected.MSStoreApps.Add("9PC3H3V7Q9CH") + $InstallRufus.CheckState = "Unchecked" + } + + If ($InstallVentoy.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("ventoy") + $InstallVentoy.CheckState = "Unchecked" + } + + If ($InstallOracleVirtualBox.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Oracle.VirtualBox") + $InstallOracleVirtualBox.CheckState = "Unchecked" + } + + If ($InstallQemu.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("SoftwareFreedomConservancy.QEMU") + $InstallQemu.CheckState = "Unchecked" + } + + If ($InstallVmWarePlayer.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("VMware.WorkstationPlayer") + $InstallVmWarePlayer.CheckState = "Unchecked" + } + + If ($InstallDropbox.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Dropbox.Dropbox") + $InstallDropbox.CheckState = "Unchecked" + } + + If ($InstallRoundedTB.CheckState -eq "Checked") { + $AppsSelected.MSStoreApps.Add("9MTFTXSJ9M7F") + $InstallRoundedTB.CheckState = "Unchecked" + } + + If ($InstallTranslucentTB.CheckState -eq "Checked") { + $AppsSelected.MSStoreApps.Add("9PF4KZ2VN4W9") + $InstallTranslucentTB.CheckState = "Unchecked" + } + + If ($InstallGoogleDrive.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Google.Drive") + $InstallGoogleDrive.CheckState = "Unchecked" + } + + If ($InstallBraveBrowser.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("BraveSoftware.BraveBrowser") + $InstallBraveBrowser.CheckState = "Unchecked" + } + + If ($InstallGoogleChrome.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Google.Chrome") + $InstallGoogleChrome.CheckState = "Unchecked" + } + + If ($InstallMozillaFirefox.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Mozilla.Firefox") + $InstallMozillaFirefox.CheckState = "Unchecked" + } + + If ($InstallAudacity.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Audacity.Audacity") + $InstallAudacity.CheckState = "Unchecked" + } + + If ($InstallMpcHc.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("clsid2.mpc-hc") + $InstallMpcHc.CheckState = "Unchecked" + } + + If ($InstallVlc.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("VideoLAN.VLC") + $InstallVlc.CheckState = "Unchecked" + } + + If ($InstallGimp.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("GIMP.GIMP") + $InstallGimp.CheckState = "Unchecked" + } + + If ($InstallInkscape.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Inkscape.Inkscape") + $InstallInkscape.CheckState = "Unchecked" + } + + If ($InstallIrfanView.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("IrfanSkiljan.IrfanView") + $InstallIrfanView.CheckState = "Unchecked" + } + + If ($InstallKrita.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("KDE.Krita") + $InstallKrita.CheckState = "Unchecked" + } + + If ($InstallPaintNet.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("paint.net") + $InstallPaintNet.CheckState = "Unchecked" + } + + If ($InstallShareX.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("ShareX.ShareX") + $InstallShareX.CheckState = "Unchecked" + } + + If ($InstallAmazonPrimeVideo.CheckState -eq "Checked") { + $AppsSelected.MSStoreApps.Add("9P6RC76MSMMJ") + $InstallAmazonPrimeVideo.CheckState = "Unchecked" + } + + If ($InstallDisneyPlus.CheckState -eq "Checked") { + $AppsSelected.MSStoreApps.Add("9NXQXXLFST89") + $InstallDisneyPlus.CheckState = "Unchecked" + } + + If ($InstallNetflix.CheckState -eq "Checked") { + $AppsSelected.MSStoreApps.Add("9WZDNCRFJ3TJ") + $InstallNetflix.CheckState = "Unchecked" + } + + If ($InstallSpotify.CheckState -eq "Checked") { + $AppsSelected.MSStoreApps.Add("9NCBCSZSJRSB") + $InstallSpotify.CheckState = "Unchecked" + } + + If ($InstallNotion.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Notion.Notion") + $InstallNotion.CheckState = "Unchecked" + } + + If ($InstallObsidian.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Obsidian.Obsidian") + $InstallObsidian.CheckState = "Unchecked" + } + + If ($InstallCpuZ.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("CPUID.CPU-Z") + $InstallCpuZ.CheckState = "Unchecked" + } + + If ($InstallCrystalDiskInfo.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("CrystalDewWorld.CrystalDiskInfo") + $InstallCrystalDiskInfo.CheckState = "Unchecked" + } + + If ($InstallCrystalDiskMark.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("CrystalDewWorld.CrystalDiskMark") + $InstallCrystalDiskMark.CheckState = "Unchecked" + } + + If ($InstallGeekbench5.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("PrimateLabs.Geekbench.5") + $InstallGeekbench5.CheckState = "Unchecked" + } + + If ($InstallGpuZ.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("TechPowerUp.GPU-Z") + $InstallGpuZ.CheckState = "Unchecked" + } + + If ($InstallHwInfo.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("REALiX.HWiNFO") + $InstallHwInfo.CheckState = "Unchecked" + } + + If ($InstallInternetDownloadManager.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Tonec.InternetDownloadManager") + $InstallInternetDownloadManager.CheckState = "Unchecked" + } + + If ($InstallMsiAfterburner.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("msiafterburner") + $InstallMsiAfterburner.CheckState = "Unchecked" + } + + If ($InstallRtxVoice.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Nvidia.RTXVoice") + $InstallRtxVoice.CheckState = "Unchecked" + } + + If ($InstallVoicemod.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Voicemod.Voicemod") + $InstallVoicemod.CheckState = "Unchecked" + } + + If ($InstallVoiceMeeter.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("VB-Audio.Voicemeeter.Potato") + $InstallVoiceMeeter.CheckState = "Unchecked" + } + + If ($InstallHamachi.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("LogMeIn.Hamachi") + $InstallHamachi.CheckState = "Unchecked" + } + + If ($InstallPuTty.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("PuTTY.PuTTY") + $InstallPuTty.CheckState = "Unchecked" + } + + If ($InstallRadminVpn.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Radmin.VPN") + $InstallRadminVpn.CheckState = "Unchecked" + } + + If ($InstallWinScp.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("WinSCP.WinSCP") + $InstallWinScp.CheckState = "Unchecked" + } + + If ($InstallWireshark.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("WiresharkFoundation.Wireshark") + $InstallWireshark.CheckState = "Unchecked" + } + + If ($InstallDiscord.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Discord.Discord") + $InstallDiscord.CheckState = "Unchecked" + } + + If ($InstallMSTeams.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Microsoft.Teams") + $InstallMSTeams.CheckState = "Unchecked" + } + + If ($InstallRocketChat.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("RocketChat.RocketChat") + $InstallRocketChat.CheckState = "Unchecked" + } + + If ($InstallSignal.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("OpenWhisperSystems.Signal") + $InstallSignal.CheckState = "Unchecked" + } + + If ($InstallSkype.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Microsoft.Skype") + $InstallSkype.CheckState = "Unchecked" + } + + If ($InstallSlack.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("SlackTechnologies.Slack") + $InstallSlack.CheckState = "Unchecked" + } + + If ($InstallTelegramDesktop.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Telegram.TelegramDesktop") + $InstallTelegramDesktop.CheckState = "Unchecked" + } + + If ($InstallWhatsAppDesktop.CheckState -eq "Checked") { + $AppsSelected.MSStoreApps.Add("9NKSQGP7F2NH") + $InstallWhatsAppDesktop.CheckState = "Unchecked" + } + + If ($InstallZoom.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Zoom.Zoom") + $InstallZoom.CheckState = "Unchecked" + } + + If ($InstallBorderlessGaming.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Codeusa.BorderlessGaming") + $InstallBorderlessGaming.CheckState = "Unchecked" + } + + If ($InstallEADesktop.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("ElectronicArts.EADesktop") + $InstallEADesktop.CheckState = "Unchecked" + } + + If ($InstallEpicGamesLauncher.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("EpicGames.EpicGamesLauncher") + $InstallEpicGamesLauncher.CheckState = "Unchecked" + } + + If ($InstallGogGalaxy.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("GOG.Galaxy") + $InstallGogGalaxy.CheckState = "Unchecked" + } + + If ($InstallSteam.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Valve.Steam") + $InstallSteam.CheckState = "Unchecked" + } + + If ($InstallUbisoftConnect.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Ubisoft.Connect") + $InstallUbisoftConnect.CheckState = "Unchecked" + } + + If ($InstallAnyDesk.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("AnyDeskSoftwareGmbH.AnyDesk") + $InstallAnyDesk.CheckState = "Unchecked" + } + + If ($InstallParsec.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Parsec.Parsec") + $InstallParsec.CheckState = "Unchecked" + } + + If ($InstallScrCpy.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("scrcpy") + $InstallScrCpy.CheckState = "Unchecked" + } + + If ($InstallTeamViewer.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("TeamViewer.TeamViewer") + $InstallTeamViewer.CheckState = "Unchecked" + } + + If ($InstallElgatoStreamDeck.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Elgato.StreamDeck") + $InstallElgatoStreamDeck.CheckState = "Unchecked" + } + + If ($InstallHandBrake.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("HandBrake.HandBrake") + $InstallHandBrake.CheckState = "Unchecked" + } + + If ($InstallObsStudio.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("OBSProject.OBSStudio") + $InstallObsStudio.CheckState = "Unchecked" + } + + If ($InstallStreamlabs.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Streamlabs.Streamlabs") + $InstallStreamlabs.CheckState = "Unchecked" + } + + If ($InstallBSnesHd.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("bsnes-hd") + $InstallBSnesHd.CheckState = "Unchecked" + } + + If ($InstallCemu.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("cemu") + $InstallCemu.CheckState = "Unchecked" + } + + If ($InstallDolphin.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("DolphinEmulator.Dolphin") + $InstallDolphin.CheckState = "Unchecked" + } + + If ($InstallKegaFusion.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("kega-fusion") + $InstallKegaFusion.CheckState = "Unchecked" + } + + If ($InstallMGba.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("JeffreyPfau.mGBA") + $InstallMGba.CheckState = "Unchecked" + } + + If ($InstallPCSX2.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("pcsx2.portable") + $InstallPCSX2.CheckState = "Unchecked" + } + + If ($InstallPPSSPP.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("PPSSPPTeam.PPSSPP") + $InstallPPSSPP.CheckState = "Unchecked" + } + + If ($InstallProject64.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Project64.Project64.Dev") + $InstallProject64.CheckState = "Unchecked" + } + + If ($InstallRetroArch.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("retroarch") + $InstallRetroArch.CheckState = "Unchecked" + } + + If ($InstallRyujinx.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("ryujinx") + $InstallRyujinx.CheckState = "Unchecked" + } + + If ($InstallSnes9x.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("snes9x") + $InstallSnes9x.CheckState = "Unchecked" + } + + If ($InstallAtom.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("GitHub.Atom") + $InstallAtom.CheckState = "Unchecked" + } + + If ($InstallJetBrainsToolbox.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("JetBrains.Toolbox") + $InstallJetBrainsToolbox.CheckState = "Unchecked" + } + + If ($InstallNotepadPlusPlus.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Notepad++.Notepad++") + $InstallNotepadPlusPlus.CheckState = "Unchecked" + } + + If ($InstallVisualStudioCommunity.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Microsoft.VisualStudio.2022.Community") + $InstallVisualStudioCommunity.CheckState = "Unchecked" + } + + If ($InstallVSCode.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Microsoft.VisualStudioCode") + $InstallVSCode.CheckState = "Unchecked" + } + + If ($InstallVSCodium.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("VSCodium.VSCodium") + $InstallVSCodium.CheckState = "Unchecked" + } + + If ($InstallWSLgOrPreview.CheckState -eq "Checked") { + If (!($Script:UninstallSwitch)) { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts\other-scripts" -Scripts @("install-wslg-or-preview.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + } Else { + $AppsSelected.MSStoreApps.Add("9P9TQF7MRM4R") + } + $InstallWSLgOrPreview.CheckState = "Unchecked" + } + + If ($InstallArchWSL.CheckState -eq "Checked") { + If (!($Script:UninstallSwitch)) { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts\other-scripts" -Scripts @("install-archwsl.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + } Else { + $AppsSelected.WSLDistros.Add("Arch") + } + $InstallArchWSL.CheckState = "Unchecked" + } + + If ($InstallDebian.CheckState -eq "Checked") { + If (!($Script:UninstallSwitch)) { + $AppsSelected.WSLDistros.Add("Debian") + } + $InstallDebian.CheckState = "Unchecked" + } + + If ($InstallKaliLinux.CheckState -eq "Checked") { + $AppsSelected.WSLDistros.Add("kali-linux") + $InstallKaliLinux.CheckState = "Unchecked" + } + + If ($InstallOpenSuse.CheckState -eq "Checked") { + $AppsSelected.WSLDistros.Add("openSUSE-42") + $InstallOpenSuse.CheckState = "Unchecked" + } + + If ($InstallSles.CheckState -eq "Checked") { + $AppsSelected.WSLDistros.Add("SLES-12") + $InstallSles.CheckState = "Unchecked" + } + + If ($InstallUbuntu.CheckState -eq "Checked") { + $AppsSelected.WSLDistros.Add("Ubuntu") + $InstallUbuntu.CheckState = "Unchecked" + } + + If ($InstallUbuntu16Lts.CheckState -eq "Checked") { + $AppsSelected.WSLDistros.Add("Ubuntu-16.04") + $InstallUbuntu16Lts.CheckState = "Unchecked" + } + + If ($InstallUbuntu18Lts.CheckState -eq "Checked") { + $AppsSelected.WSLDistros.Add("Ubuntu-18.04") + $InstallUbuntu18Lts.CheckState = "Unchecked" + } + + If ($InstallUbuntu20Lts.CheckState -eq "Checked") { + $AppsSelected.WSLDistros.Add("Ubuntu-20.04") + $InstallUbuntu20Lts.CheckState = "Unchecked" + } + + If ($InstallWindowsTerminal.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Microsoft.WindowsTerminal") + $InstallWindowsTerminal.CheckState = "Unchecked" + } + + If ($InstallNerdFonts.CheckState -eq "Checked") { + If (!($Script:UninstallSwitch)) { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts\other-scripts" -Scripts @("install-nerd-fonts.ps1") + } + $InstallNerdFonts.CheckState = "Unchecked" + } + + If ($InstallGitGnupgSshSetup.CheckState -eq "Checked") { + If (!($Script:UninstallSwitch)) { + Open-PowerShellFilesCollection -RelativeLocation "src\scripts\other-scripts" -Scripts @("git-gnupg-ssh-keys-setup.ps1") -DoneTitle $DoneTitle -DoneMessage $DoneMessage + } Else { + $AppsSelected.WingetApps.AddRange(@("Git.Git", "GnuPG.GnuPG")) # Installed before inside the script + } + $InstallGitGnupgSshSetup.CheckState = "Unchecked" + } + + If ($InstallAdb.CheckState -eq "Checked") { + $AppsSelected.ChocolateyApps.Add("adb") + $InstallAdb.CheckState = "Unchecked" + } + + If ($InstallAndroidStudio.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Google.AndroidStudio") + $InstallAndroidStudio.CheckState = "Unchecked" + } + + If ($InstallDockerDesktop.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Docker.DockerDesktop") + $InstallDockerDesktop.CheckState = "Unchecked" + } + + If ($InstallInsomnia.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Insomnia.Insomnia") + $InstallInsomnia.CheckState = "Unchecked" + } + + If ($InstallJavaJdks.CheckState -eq "Checked") { + $AppsSelected.WingetApps.AddRange(@("EclipseAdoptium.Temurin.8", "EclipseAdoptium.Temurin.11", "EclipseAdoptium.Temurin.18")) + $InstallJavaJdks.CheckState = "Unchecked" + } + + If ($InstallJavaJre.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Oracle.JavaRuntimeEnvironment") + $InstallJavaJre.CheckState = "Unchecked" + } + + If ($InstallMySql.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Oracle.MySQL") + $InstallMySql.CheckState = "Unchecked" + } + + If ($InstallNodeJs.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("OpenJS.NodeJS") + $InstallNodeJs.CheckState = "Unchecked" + } + + If ($InstallNodeJsLts.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("OpenJS.NodeJS.LTS") + $InstallNodeJsLts.CheckState = "Unchecked" + } + + If ($InstallPostgreSql.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("PostgreSQL.PostgreSQL") + $InstallPostgreSql.CheckState = "Unchecked" + } + + If ($InstallPython3.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Python.Python.3") + $InstallPython3.CheckState = "Unchecked" + } + + If ($InstallPythonAnaconda3.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Anaconda.Anaconda3") + $InstallPythonAnaconda3.CheckState = "Unchecked" + } + + If ($InstallRuby.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("RubyInstallerTeam.Ruby") + $InstallRuby.CheckState = "Unchecked" + } + + If ($InstallRubyMsys.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("RubyInstallerTeam.RubyWithDevKit") + $InstallRubyMsys.CheckState = "Unchecked" + } + + If ($InstallRustGnu.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Rustlang.Rust.GNU") + $InstallRustGnu.CheckState = "Unchecked" + } + + If ($InstallRustMsvc.CheckState -eq "Checked") { + $AppsSelected.WingetApps.Add("Rustlang.Rust.MSVC") + $InstallRustMsvc.CheckState = "Unchecked" + } + + If (!($Script:UninstallSwitch)) { + If ($AppsSelected.WingetApps) { + $SoftwareList += Install-Software -Name "Apps from selection" -Packages $AppsSelected.WingetApps -NoDialog + } + If ($AppsSelected.MSStoreApps) { + $SoftwareList += "`n" + (Install-Software -Name "Apps from selection" -Packages $AppsSelected.MSStoreApps -ViaMSStore -NoDialog) + } + If ($AppsSelected.ChocolateyApps) { + $SoftwareList += "`n" + (Install-Software -Name "Apps from selection" -Packages $AppsSelected.ChocolateyApps -ViaChocolatey -NoDialog) + } + If ($AppsSelected.WSLDistros) { + $SoftwareList += "`n" + (Install-Software -Name "Apps from selection" -Packages $AppsSelected.WSLDistros -ViaWSL -NoDialog) + } + } Else { + If ($AppsSelected.WingetApps) { + $SoftwareList += Uninstall-Software -Name "Apps from selection" -Packages $AppsSelected.WingetApps -NoDialog + } + If ($AppsSelected.MSStoreApps) { + $SoftwareList += "`n" + (Uninstall-Software -Name "Apps from selection" -Packages $AppsSelected.MSStoreApps -ViaMSStore -NoDialog) + } + If ($AppsSelected.ChocolateyApps) { + $SoftwareList += "`n" + (Uninstall-Software -Name "Apps from selection" -Packages $AppsSelected.ChocolateyApps -ViaChocolatey -NoDialog) + } + If ($AppsSelected.WSLDistros) { + $SoftwareList += "`n" + (Uninstall-Software -Name "Apps from selection" -Packages $AppsSelected.WSLDistros -ViaWSL -NoDialog) + } + } + + If (($AppsSelected.WingetApps.Count -ge 1) -or ($AppsSelected.MSStoreApps.Count -ge 1) -or ($AppsSelected.ChocolateyApps.Count -ge 1) -or ($AppsSelected.WSLDistros.Count -ge 1)) { + Show-Message -Title "$DoneTitle" -Message "$SoftwareList" + } + $SoftwareList = "" + }) + + $UninstallMode.Add_Click( { + If ($UninstallSwitch) { + $Script:UninstallSwitch = $false + $InstallSelected.Text = "Install Selected" + $UninstallMode.Text = "[OFF] Uninstall Mode" + } Else { + $Script:UninstallSwitch = $true + $InstallSelected.Text = "Uninstall Selected" + $UninstallMode.Text = "[ON] Uninstall Mode" + } + }) + + [void] $Form.ShowDialog() # Show the Window + $Form.Dispose() # When done, dispose of the GUI +} + +Main diff --git a/Windows 10/Debloat/lib/New-FolderForced.psm1 b/Windows 10/Debloat/lib/New-FolderForced.psm1 new file mode 100644 index 0000000..5689e55 --- /dev/null +++ b/Windows 10/Debloat/lib/New-FolderForced.psm1 @@ -0,0 +1,39 @@ +<# +.SYNOPSIS +If the target registry key is already present, all values within that key are purged. + +.DESCRIPTION +While `mkdir -force` works fine when dealing with regular folders, it behaves strange when using it at registry level. +If the target registry key is already present, all values within that key are purged. + +.PARAMETER Path +Full path of the storage or registry folder + +.EXAMPLE +New-FolderForced -Path "HKCU:\Printers\Defaults" + +.EXAMPLE +New-FolderForced "HKCU:\Printers\Defaults" + +.EXAMPLE +"HKCU:\Printers\Defaults" | New-FolderForced + +.NOTES +Replacement for `force-mkdir` to uphold PowerShell conventions. +Thanks to raydric, this function should be used instead of `mkdir -force`. +#> +function New-FolderForced { + [CmdletBinding(SupportsShouldProcess = $true)] + param ( + [Parameter(Position = 0, Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] + [string] + $Path + ) + + process { + if (-not (Test-Path $Path)) { + Write-Verbose "-- Creating full path to: $Path" + New-Item -Path $Path -ItemType Directory -Force + } + } +} \ No newline at end of file diff --git a/Windows 10/Debloat/lib/take-own.psm1 b/Windows 10/Debloat/lib/take-own.psm1 new file mode 100644 index 0000000..a4b9a9b --- /dev/null +++ b/Windows 10/Debloat/lib/take-own.psm1 @@ -0,0 +1,106 @@ +function Takeown-Registry($key) { + # TODO does not work for all root keys yet + switch ($key.split('\')[0]) { + "HKEY_CLASSES_ROOT" { + $reg = [Microsoft.Win32.Registry]::ClassesRoot + $key = $key.substring(18) + } + "HKEY_CURRENT_USER" { + $reg = [Microsoft.Win32.Registry]::CurrentUser + $key = $key.substring(18) + } + "HKEY_LOCAL_MACHINE" { + $reg = [Microsoft.Win32.Registry]::LocalMachine + $key = $key.substring(19) + } + } + + # get administraor group + $admins = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544") + $admins = $admins.Translate([System.Security.Principal.NTAccount]) + + # set owner + $key = $reg.OpenSubKey($key, "ReadWriteSubTree", "TakeOwnership") + $acl = $key.GetAccessControl() + $acl.SetOwner($admins) + $key.SetAccessControl($acl) + + # set FullControl + $acl = $key.GetAccessControl() + $rule = New-Object System.Security.AccessControl.RegistryAccessRule($admins, "FullControl", "Allow") + $acl.SetAccessRule($rule) + $key.SetAccessControl($acl) +} + +function Takeown-File($path) { + takeown.exe /A /F $path + $acl = Get-Acl $path + + # get administraor group + $admins = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544") + $admins = $admins.Translate([System.Security.Principal.NTAccount]) + + # add NT Authority\SYSTEM + $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($admins, "FullControl", "None", "None", "Allow") + $acl.AddAccessRule($rule) + + Set-Acl -Path $path -AclObject $acl +} + +function Takeown-Folder($path) { + Takeown-File $path + foreach ($item in Get-ChildItem $path) { + if (Test-Path $item -PathType Container) { + Takeown-Folder $item.FullName + } else { + Takeown-File $item.FullName + } + } +} + +function Elevate-Privileges { + param($Privilege) + $Definition = @" + using System; + using System.Runtime.InteropServices; + + public class AdjPriv { + [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] + internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr rele); + + [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] + internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); + + [DllImport("advapi32.dll", SetLastError = true)] + internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid); + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + internal struct TokPriv1Luid { + public int Count; + public long Luid; + public int Attr; + } + + internal const int SE_PRIVILEGE_ENABLED = 0x00000002; + internal const int TOKEN_QUERY = 0x00000008; + internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020; + + public static bool EnablePrivilege(long processHandle, string privilege) { + bool retVal; + TokPriv1Luid tp; + IntPtr hproc = new IntPtr(processHandle); + IntPtr htok = IntPtr.Zero; + retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok); + tp.Count = 1; + tp.Luid = 0; + tp.Attr = SE_PRIVILEGE_ENABLED; + retVal = LookupPrivilegeValue(null, privilege, ref tp.Luid); + retVal = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero); + return retVal; + } + } +"@ + $ProcessHandle = (Get-Process -id $pid).Handle + $type = Add-Type $definition -PassThru + $type[0]::EnablePrivilege($processHandle, $Privilege) +} diff --git a/Windows 10/Debloat/scripts/block-telemetry.ps1 b/Windows 10/Debloat/scripts/block-telemetry.ps1 new file mode 100644 index 0000000..3a929f4 --- /dev/null +++ b/Windows 10/Debloat/scripts/block-telemetry.ps1 @@ -0,0 +1,242 @@ +# Description: +# This script blocks telemetry related domains via the hosts file and related +# IPs via Windows Firewall. +# +# Please note that adding these domains may break certain software like iTunes +# or Skype. As this issue is location dependent for some domains, they are not +# commented by default. The domains known to cause issues marked accordingly. +# Please see the related issue: +# + +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\New-FolderForced.psm1 + +Write-Output "Disabling telemetry via Group Policies" +New-FolderForced -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" +Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" "AllowTelemetry" 0 + +# Entries related to Akamai have been reported to cause issues with Widevine +# DRM. + +Write-Output "Adding telemetry domains to hosts file" +$hosts_file = "$env:systemroot\System32\drivers\etc\hosts" +$domains = @( + "184-86-53-99.deploy.static.akamaitechnologies.com" + "a-0001.a-msedge.net" + "a-0002.a-msedge.net" + "a-0003.a-msedge.net" + "a-0004.a-msedge.net" + "a-0005.a-msedge.net" + "a-0006.a-msedge.net" + "a-0007.a-msedge.net" + "a-0008.a-msedge.net" + "a-0009.a-msedge.net" + "a1621.g.akamai.net" + "a1856.g2.akamai.net" + "a1961.g.akamai.net" + #"a248.e.akamai.net" # makes iTunes download button disappear (#43) + "a978.i6g1.akamai.net" + "a.ads1.msn.com" + "a.ads2.msads.net" + "a.ads2.msn.com" + "ac3.msn.com" + "ad.doubleclick.net" + "adnexus.net" + "adnxs.com" + "ads1.msads.net" + "ads1.msn.com" + "ads.msn.com" + "aidps.atdmt.com" + "aka-cdn-ns.adtech.de" + "a-msedge.net" + "any.edge.bing.com" + "a.rad.msn.com" + "az361816.vo.msecnd.net" + "az512334.vo.msecnd.net" + "b.ads1.msn.com" + "b.ads2.msads.net" + "bingads.microsoft.com" + "b.rad.msn.com" + "bs.serving-sys.com" + "c.atdmt.com" + "cdn.atdmt.com" + "cds26.ams9.msecn.net" + "choice.microsoft.com" + "choice.microsoft.com.nsatc.net" + "compatexchange.cloudapp.net" + "corpext.msitadfs.glbdns2.microsoft.com" + "corp.sts.microsoft.com" + "cs1.wpc.v0cdn.net" + "db3aqu.atdmt.com" + "df.telemetry.microsoft.com" + "diagnostics.support.microsoft.com" + "e2835.dspb.akamaiedge.net" + "e7341.g.akamaiedge.net" + "e7502.ce.akamaiedge.net" + "e8218.ce.akamaiedge.net" + "ec.atdmt.com" + "fe2.update.microsoft.com.akadns.net" + "feedback.microsoft-hohm.com" + "feedback.search.microsoft.com" + "feedback.windows.com" + "flex.msn.com" + "g.msn.com" + "h1.msn.com" + "h2.msn.com" + "hostedocsp.globalsign.com" + "i1.services.social.microsoft.com" + "i1.services.social.microsoft.com.nsatc.net" + #"ipv6.msftncsi.com" # Issues may arise where Windows 10 thinks it doesn't have internet + #"ipv6.msftncsi.com.edgesuite.net" # Issues may arise where Windows 10 thinks it doesn't have internet + "lb1.www.ms.akadns.net" + "live.rads.msn.com" + "m.adnxs.com" + "msedge.net" + #"msftncsi.com" + "msnbot-65-55-108-23.search.msn.com" + "msntest.serving-sys.com" + "oca.telemetry.microsoft.com" + "oca.telemetry.microsoft.com.nsatc.net" + "onesettings-db5.metron.live.nsatc.net" + "pre.footprintpredict.com" + "preview.msn.com" + "rad.live.com" + "rad.msn.com" + "redir.metaservices.microsoft.com" + "reports.wes.df.telemetry.microsoft.com" + "schemas.microsoft.akadns.net" + "secure.adnxs.com" + "secure.flashtalking.com" + "services.wes.df.telemetry.microsoft.com" + "settings-sandbox.data.microsoft.com" + #"settings-win.data.microsoft.com" # may cause issues with Windows Updates + "sls.update.microsoft.com.akadns.net" + #"sls.update.microsoft.com.nsatc.net" # may cause issues with Windows Updates + "sqm.df.telemetry.microsoft.com" + "sqm.telemetry.microsoft.com" + "sqm.telemetry.microsoft.com.nsatc.net" + "ssw.live.com" + "static.2mdn.net" + "statsfe1.ws.microsoft.com" + "statsfe2.update.microsoft.com.akadns.net" + "statsfe2.ws.microsoft.com" + "survey.watson.microsoft.com" + "telecommand.telemetry.microsoft.com" + "telecommand.telemetry.microsoft.com.nsatc.net" + "telemetry.appex.bing.net" + "telemetry.microsoft.com" + "telemetry.urs.microsoft.com" + "vortex-bn2.metron.live.com.nsatc.net" + "vortex-cy2.metron.live.com.nsatc.net" + "vortex.data.microsoft.com" + "vortex-sandbox.data.microsoft.com" + "vortex-win.data.microsoft.com" + "cy2.vortex.data.microsoft.com.akadns.net" + "watson.live.com" + "watson.microsoft.com" + "watson.ppe.telemetry.microsoft.com" + "watson.telemetry.microsoft.com" + "watson.telemetry.microsoft.com.nsatc.net" + "wes.df.telemetry.microsoft.com" + "win10.ipv6.microsoft.com" + "www.bingads.microsoft.com" + "www.go.microsoft.akadns.net" + #"www.msftncsi.com" # Issues may arise where Windows 10 thinks it doesn't have internet + "client.wns.windows.com" + #"wdcp.microsoft.com" # may cause issues with Windows Defender Cloud-based protection + #"dns.msftncsi.com" # This causes Windows to think it doesn't have internet + #"storeedgefd.dsx.mp.microsoft.com" # breaks Windows Store + "wdcpalt.microsoft.com" + "settings-ssl.xboxlive.com" + "settings-ssl.xboxlive.com-c.edgekey.net" + "settings-ssl.xboxlive.com-c.edgekey.net.globalredir.akadns.net" + "e87.dspb.akamaidege.net" + "insiderservice.microsoft.com" + "insiderservice.trafficmanager.net" + "e3843.g.akamaiedge.net" + "flightingserviceweurope.cloudapp.net" + #"sls.update.microsoft.com" # may cause issues with Windows Updates + "static.ads-twitter.com" # may cause issues with Twitter login + "www-google-analytics.l.google.com" + "p.static.ads-twitter.com" # may cause issues with Twitter login + "hubspot.net.edge.net" + "e9483.a.akamaiedge.net" + + #"www.google-analytics.com" + #"padgead2.googlesyndication.com" + #"mirror1.malwaredomains.com" + #"mirror.cedia.org.ec" + "stats.g.doubleclick.net" + "stats.l.doubleclick.net" + "adservice.google.de" + "adservice.google.com" + "googleads.g.doubleclick.net" + "pagead46.l.doubleclick.net" + "hubspot.net.edgekey.net" + "insiderppe.cloudapp.net" # Feedback-Hub + "livetileedge.dsx.mp.microsoft.com" + + # extra + "fe2.update.microsoft.com.akadns.net" + "s0.2mdn.net" + "statsfe2.update.microsoft.com.akadns.net" + "survey.watson.microsoft.com" + "view.atdmt.com" + "watson.microsoft.com" + "watson.ppe.telemetry.microsoft.com" + "watson.telemetry.microsoft.com" + "watson.telemetry.microsoft.com.nsatc.net" + "wes.df.telemetry.microsoft.com" + "m.hotmail.com" + + # can cause issues with Skype (#79) or other services (#171) + "apps.skype.com" + "c.msn.com" + # "login.live.com" # prevents login to outlook and other live apps + "pricelist.skype.com" + "s.gateway.messenger.live.com" + "ui.skype.com" +) +Write-Output "" | Out-File -Encoding ASCII -Append $hosts_file +foreach ($domain in $domains) { + if (-Not (Select-String -Path $hosts_file -Pattern $domain)) { + Write-Output "0.0.0.0 $domain" | Out-File -Encoding ASCII -Append $hosts_file + } +} + +Write-Output "Adding telemetry ips to firewall" +$ips = @( + # Windows telemetry + "134.170.30.202" + "137.116.81.24" + "157.56.106.189" + "184.86.53.99" + "2.22.61.43" + "2.22.61.66" + "204.79.197.200" + "23.218.212.69" + "65.39.117.230" + "65.52.108.33" # Causes problems with Microsoft Store + "65.55.108.23" + "64.4.54.254" + + # NVIDIA telemetry + "8.36.80.197" + "8.36.80.224" + "8.36.80.252" + "8.36.113.118" + "8.36.113.141" + "8.36.80.230" + "8.36.80.231" + "8.36.113.126" + "8.36.80.195" + "8.36.80.217" + "8.36.80.237" + "8.36.80.246" + "8.36.113.116" + "8.36.113.139" + "8.36.80.244" + "216.228.121.209" +) +Remove-NetFirewallRule -DisplayName "Block Telemetry IPs" -ErrorAction SilentlyContinue +New-NetFirewallRule -DisplayName "Block Telemetry IPs" -Direction Outbound ` + -Action Block -RemoteAddress ([string[]]$ips) diff --git a/Windows 10/Debloat/scripts/disable-services.ps1 b/Windows 10/Debloat/scripts/disable-services.ps1 new file mode 100644 index 0000000..a8b169d --- /dev/null +++ b/Windows 10/Debloat/scripts/disable-services.ps1 @@ -0,0 +1,32 @@ +# Description: +# This script disables unwanted Windows services. If you do not want to disable +# certain services comment out the corresponding lines below. + +$services = @( + "diagnosticshub.standardcollector.service" # Microsoft (R) Diagnostics Hub Standard Collector Service + "DiagTrack" # Diagnostics Tracking Service + "dmwappushservice" # WAP Push Message Routing Service (see known issues) + "lfsvc" # Geolocation Service + "MapsBroker" # Downloaded Maps Manager + "NetTcpPortSharing" # Net.Tcp Port Sharing Service + "RemoteAccess" # Routing and Remote Access + "RemoteRegistry" # Remote Registry + "SharedAccess" # Internet Connection Sharing (ICS) + "TrkWks" # Distributed Link Tracking Client + "WbioSrvc" # Windows Biometric Service (required for Fingerprint reader / facial detection) + #"WlanSvc" # WLAN AutoConfig (Disabling this can cause issues with wifi connectivity) + "WMPNetworkSvc" # Windows Media Player Network Sharing Service + #"wscsvc" # Windows Security Center Service + #"WSearch" # Windows Search + "XblAuthManager" # Xbox Live Auth Manager + "XblGameSave" # Xbox Live Game Save Service + "XboxNetApiSvc" # Xbox Live Networking Service + "ndu" # Windows Network Data Usage Monitor + # Services which cannot be disabled + #"WdNisSvc" +) + +foreach ($service in $services) { + Write-Output "Trying to disable $service" + Get-Service -Name $service | Set-Service -StartupType Disabled +} diff --git a/Windows 10/Debloat/scripts/disable-windows-defender.ps1 b/Windows 10/Debloat/scripts/disable-windows-defender.ps1 new file mode 100644 index 0000000..5f1bc2b --- /dev/null +++ b/Windows 10/Debloat/scripts/disable-windows-defender.ps1 @@ -0,0 +1,48 @@ +# Description: +# This script disables Windows Defender. Run it once (will throw errors), then +# reboot, run it again (this time no errors should occur) followed by another +# reboot. + +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\New-FolderForced.psm1 +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1 + +Write-Output "Elevating priviledges for this process" +do {} until (Elevate-Privileges SeTakeOwnershipPrivilege) + +$tasks = @( + "\Microsoft\Windows\Windows Defender\Windows Defender Cache Maintenance" + "\Microsoft\Windows\Windows Defender\Windows Defender Cleanup" + "\Microsoft\Windows\Windows Defender\Windows Defender Scheduled Scan" + "\Microsoft\Windows\Windows Defender\Windows Defender Verification" +) + +foreach ($task in $tasks) { + $parts = $task.split('\') + $name = $parts[-1] + $path = $parts[0..($parts.length-2)] -join '\' + + Write-Output "Trying to disable scheduled task $name" + Disable-ScheduledTask -TaskName "$name" -TaskPath "$path" +} + +Write-Output "Disabling Windows Defender via Group Policies" +New-FolderForced -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows Defender" +Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows Defender" "DisableAntiSpyware" 1 +Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows Defender" "DisableRoutinelyTakingAction" 1 +New-FolderForced -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows Defender\Real-Time Protection" +Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows Defender\Real-Time Protection" "DisableRealtimeMonitoring" 1 + +Write-Output "Disabling Windows Defender Services" +Takeown-Registry("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinDefend") +Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend" "Start" 4 +Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend" "AutorunsDisabled" 3 +Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WdNisSvc" "Start" 4 +Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WdNisSvc" "AutorunsDisabled" 3 +Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Sense" "Start" 4 +Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Sense" "AutorunsDisabled" 3 + +Write-Output "Removing Windows Defender context menu item" +Set-Item "HKLM:\SOFTWARE\Classes\CLSID\{09A47860-11B0-4DA5-AFA5-26D86198A780}\InprocServer32" "" + +Write-Output "Removing Windows Defender GUI / tray from autorun" +Remove-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "WindowsDefender" -ea 0 diff --git a/Windows 10/Debloat/scripts/experimental_unfuckery.ps1 b/Windows 10/Debloat/scripts/experimental_unfuckery.ps1 new file mode 100644 index 0000000..bdba6c4 --- /dev/null +++ b/Windows 10/Debloat/scripts/experimental_unfuckery.ps1 @@ -0,0 +1,50 @@ +# Description: +# This script remove strang looking stuff which will probably result in a break +# of your system. It should not be used unless you want to test out a few +# things. It is named `experimental_unfuckery.ps1` for a reason. + +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1 + +Write-Output "Elevating priviledges for this process" +do {} until (Elevate-Privileges SeTakeOwnershipPrivilege) + +Write-Output "Force removing system apps" +$needles = @( + #"Anytime" + "BioEnrollment" + #"Browser" + "ContactSupport" + #"Cortana" # This will disable startmenu search. + #"Defender" + "Feedback" + "Flash" + "Gaming" + #"Holo" + #"InternetExplorer" + #"Maps" + #"MiracastView" + "OneDrive" + #"SecHealthUI" + #"Wallet" + #"Xbox" # This will result in a bootloop since upgrade 1511 +) + +foreach ($needle in $needles) { + Write-Output "Trying to remove all packages containing $needle" + + $pkgs = (Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages" | + Where-Object Name -Like "*$needle*") + + foreach ($pkg in $pkgs) { + $pkgname = $pkg.Name.split('\')[-1] + + Takeown-Registry($pkg.Name) + Takeown-Registry($pkg.Name + "\Owners") + + Set-ItemProperty -Path ("HKLM:" + $pkg.Name.Substring(18)) -Name Visibility -Value 1 + New-ItemProperty -Path ("HKLM:" + $pkg.Name.Substring(18)) -Name DefVis -PropertyType DWord -Value 2 + Remove-Item -Path ("HKLM:" + $pkg.Name.Substring(18) + "\Owners") + + dism.exe /Online /Remove-Package /PackageName:$pkgname /NoRestart + } +} diff --git a/Windows 10/Debloat/scripts/fix-privacy-settings.ps1 b/Windows 10/Debloat/scripts/fix-privacy-settings.ps1 new file mode 100644 index 0000000..77b1e4b --- /dev/null +++ b/Windows 10/Debloat/scripts/fix-privacy-settings.ps1 @@ -0,0 +1,115 @@ +# Description: +# This script will try to fix many of the privacy settings for the user. This +# is work in progress! + +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\New-FolderForced.psm1 +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1 + +Write-Output "Elevating priviledges for this process" +do {} until (Elevate-Privileges SeTakeOwnershipPrivilege) + +Write-Output "Defuse Windows search settings" +Set-WindowsSearchSetting -EnableWebResultsSetting $false + +Write-Output "Set general privacy options" +# "Let websites provide locally relevant content by accessing my language list" +Set-ItemProperty -Path "HKCU:\Control Panel\International\User Profile" "HttpAcceptLanguageOptOut" 1 +# Locaton aware printing (changes default based on connected network) +New-FolderForced -Path "HKCU:\Printers\Defaults" +Set-ItemProperty -Path "HKCU:\Printers\Defaults" "NetID" "{00000000-0000-0000-0000-000000000000}" +# "Send Microsoft info about how I write to help us improve typing and writing in the future" +New-FolderForced -Path "HKCU:\SOFTWARE\Microsoft\Input\TIPC" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Input\TIPC" "Enabled" 0 +# "Let apps use my advertising ID for experiencess across apps" +New-FolderForced -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo" "Enabled" 0 +# "Turn on SmartScreen Filter to check web content" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost" "EnableWebContentEvaluation" 0 + +Write-Output "Disable synchronisation of settings" +# These only apply if you log on using Microsoft account +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\SettingSync" "BackupPolicy" 0x3c +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\SettingSync" "DeviceMetadataUploaded" 0 +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\SettingSync" "PriorLogons" 1 +$groups = @( + "Accessibility" + "AppSync" + "BrowserSettings" + "Credentials" + "DesktopTheme" + "Language" + "PackageState" + "Personalization" + "StartLayout" + "Windows" +) +foreach ($group in $groups) { + New-FolderForced -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\SettingSync\Groups\$group" + Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\SettingSync\Groups\$group" "Enabled" 0 +} + +Write-Output "Set privacy policy accepted state to 0" +# Prevents sending speech, inking and typing samples to MS (so Cortana +# can learn to recognise you) +New-FolderForced -Path "HKCU:\SOFTWARE\Microsoft\Personalization\Settings" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Personalization\Settings" "AcceptedPrivacyPolicy" 0 + +Write-Output "Do not scan contact informations" +# Prevents sending contacts to MS (so Cortana can compare speech etc samples) +New-FolderForced -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" "HarvestContacts" 0 + +Write-Output "Inking and typing settings" +# Handwriting recognition personalization +New-FolderForced -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization" "RestrictImplicitInkCollection" 1 +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization" "RestrictImplicitTextCollection" 1 + +Write-Output "Microsoft Edge settings" +New-FolderForced -Path "HKCU:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\Main" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\Main" "DoNotTrack" 1 +New-FolderForced -Path "HKCU:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\User\Default\SearchScopes" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\User\Default\SearchScopes" "ShowSearchSuggestionsGlobal" 0 +New-FolderForced -Path "HKCU:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\FlipAhead" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\FlipAhead" "FPEnabled" 0 +New-FolderForced -Path "HKCU:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\PhishingFilter" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\PhishingFilter" "EnabledV9" 0 + +Write-Output "Disable background access of default apps" +foreach ($key in (Get-ChildItem "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications")) { + Set-ItemProperty -Path ("HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications\" + $key.PSChildName) "Disabled" 1 +} + +Write-Output "Denying device access" +# Disable sharing information with unpaired devices +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeviceAccess\Global\LooselyCoupled" "Type" "LooselyCoupled" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeviceAccess\Global\LooselyCoupled" "Value" "Deny" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeviceAccess\Global\LooselyCoupled" "InitialAppValue" "Unspecified" +foreach ($key in (Get-ChildItem "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeviceAccess\Global")) { + if ($key.PSChildName -EQ "LooselyCoupled") { + continue + } + Set-ItemProperty -Path ("HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeviceAccess\Global\" + $key.PSChildName) "Type" "InterfaceClass" + Set-ItemProperty -Path ("HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeviceAccess\Global\" + $key.PSChildName) "Value" "Deny" + Set-ItemProperty -Path ("HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeviceAccess\Global\" + $key.PSChildName) "InitialAppValue" "Unspecified" +} + +Write-Output "Disable location sensor" +New-FolderForced -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Permissions\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Permissions\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}" "SensorPermissionState" 0 + +Write-Output "Disable submission of Windows Defender findings (w/ elevated privileges)" +Takeown-Registry("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Spynet") +Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender\Spynet" "SpyNetReporting" 0 # write-protected even after takeown ?! +Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender\Spynet" "SubmitSamplesConsent" 0 + +# The following section can cause problems with network / internet connectivity +# in generel. See the corresponding issue: +# https://github.com/W4RH4WK/Debloat-Windows-10/issues/270 +#Write-Output "Do not share wifi networks" +#$user = New-Object System.Security.Principal.NTAccount($env:UserName) +#$sid = $user.Translate([System.Security.Principal.SecurityIdentifier]).value +#New-FolderForced -Path ("HKLM:\SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\features\" + $sid) +#Set-ItemProperty -Path ("HKLM:\SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\features\" + $sid) "FeatureStates" 0x33c +#Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\features" "WiFiSenseCredShared" 0 +#Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\features" "WiFiSenseOpen" 0 diff --git a/Windows 10/Debloat/scripts/optimize-user-interface.ps1 b/Windows 10/Debloat/scripts/optimize-user-interface.ps1 new file mode 100644 index 0000000..2da1464 --- /dev/null +++ b/Windows 10/Debloat/scripts/optimize-user-interface.ps1 @@ -0,0 +1,93 @@ +# Description +# This script will apply MarkC's mouse acceleration fix (for 100% DPI) and +# disable some accessibility features regarding keyboard input. Additional +# some UI elements will be changed. + +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\New-FolderForced.psm1 +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1 + +Write-Output "Elevating priviledges for this process" +do {} until (Elevate-Privileges SeTakeOwnershipPrivilege) + +Write-Output "Apply MarkC's mouse acceleration fix" +Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" "MouseSensitivity" "10" +Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" "MouseSpeed" "0" +Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" "MouseThreshold1" "0" +Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" "MouseThreshold2" "0" +Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" "SmoothMouseXCurve" ([byte[]](0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xCC, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0x99, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x26, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00)) +Set-ItemProperty -Path "HKCU:\Control Panel\Mouse" "SmoothMouseYCurve" ([byte[]](0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00)) + +Write-Output "Disable mouse pointer hiding" +Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" "UserPreferencesMask" ([byte[]](0x9e, +0x1e, 0x06, 0x80, 0x12, 0x00, 0x00, 0x00)) + +Write-Output "Disable Game DVR and Game Bar" +New-FolderForced -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR" +Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR" "AllowgameDVR" 0 + +Write-Output "Disable easy access keyboard stuff" +Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\StickyKeys" "Flags" "506" +Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\Keyboard Response" "Flags" "122" +Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\ToggleKeys" "Flags" "58" + +Write-Output "Disable Edge desktop shortcut on new profiles" +New-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Explorer" -Name DisableEdgeDesktopShortcutCreation -PropertyType DWORD -Value 1 + +Write-Output "Restoring old volume slider" +New-FolderForced -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\MTCUVC" +Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\MTCUVC" "EnableMtcUvc" 0 + +Write-Output "Setting folder view options" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" "Hidden" 1 +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" "HideFileExt" 0 +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" "HideDrivesWithNoMedia" 0 +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" "ShowSyncProviderNotifications" 0 + +Write-Output "Disable Aero-Shake Minimize feature" +Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" "DisallowShaking" 1 + +Write-Output "Setting default explorer view to This PC" +Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" "LaunchTo" 1 + +Write-Output "Removing user folders under This PC" +# Remove Desktop from This PC +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}" +# Remove Documents from This PC +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{A8CDFF1C-4878-43be-B5FD-F8091C1C60D0}" +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{d3162b92-9365-467a-956b-92703aca08af}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{A8CDFF1C-4878-43be-B5FD-F8091C1C60D0}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{d3162b92-9365-467a-956b-92703aca08af}" +# Remove Downloads from This PC +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{374DE290-123F-4565-9164-39C4925E467B}" +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{088e3905-0323-4b02-9826-5d99428e115f}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{374DE290-123F-4565-9164-39C4925E467B}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{088e3905-0323-4b02-9826-5d99428e115f}" +# Remove Music from This PC +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{1CF1260C-4DD0-4ebb-811F-33C572699FDE}" +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{1CF1260C-4DD0-4ebb-811F-33C572699FDE}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}" +# Remove Pictures from This PC +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{3ADD1653-EB32-4cb0-BBD7-DFA0ABB5ACCA}" +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{24ad3ad4-a569-4530-98e1-ab02f9417aa8}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{3ADD1653-EB32-4cb0-BBD7-DFA0ABB5ACCA}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{24ad3ad4-a569-4530-98e1-ab02f9417aa8}" +# Remove Videos from This PC +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{A0953C92-50DC-43bf-BE83-3742FED03C9C}" +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{A0953C92-50DC-43bf-BE83-3742FED03C9C}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}" +# Remove 3D Objects from This PC +Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}" +Remove-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}" + +#echo "Disabling tile push notification" +#New-FolderForced -Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications" +#sp "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications" "NoTileApplicationNotification" 1 diff --git a/Windows 10/Debloat/scripts/optimize-windows-update.ps1 b/Windows 10/Debloat/scripts/optimize-windows-update.ps1 new file mode 100644 index 0000000..bba8fde --- /dev/null +++ b/Windows 10/Debloat/scripts/optimize-windows-update.ps1 @@ -0,0 +1,30 @@ +# Description: +# This script optimizes Windows updates by disabling automatic download and +# seeding updates to other computers. +# +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\New-FolderForced.psm1 + +Write-Output "Disable automatic download and installation of Windows updates" +New-FolderForced -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\WindowsUpdate\AU" +Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\WindowsUpdate\AU" "NoAutoUpdate" 1 +Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\WindowsUpdate\AU" "AUOptions" 2 +Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\WindowsUpdate\AU" "ScheduledInstallDay" 0 +Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\WindowsUpdate\AU" "ScheduledInstallTime" 3 + +Write-Output "Disable seeding of updates to other computers via Group Policies" +New-FolderForced -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization" +Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization" "DODownloadMode" 0 + +#echo "Disabling automatic driver update" +#sp "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" "SearchOrderConfig" 0 + +$objSID = New-Object System.Security.Principal.SecurityIdentifier "S-1-1-0" +$EveryOne = $objSID.Translate( [System.Security.Principal.NTAccount]).Value + + +Write-Output "Disable 'Updates are available' message" + +takeown /F "$env:WinDIR\System32\MusNotification.exe" +icacls "$env:WinDIR\System32\MusNotification.exe" /deny "$($EveryOne):(X)" +takeown /F "$env:WinDIR\System32\MusNotificationUx.exe" +icacls "$env:WinDIR\System32\MusNotificationUx.exe" /deny "$($EveryOne):(X)" diff --git a/Windows 10/Debloat/scripts/remove-default-apps.ps1 b/Windows 10/Debloat/scripts/remove-default-apps.ps1 new file mode 100644 index 0000000..0ca874b --- /dev/null +++ b/Windows 10/Debloat/scripts/remove-default-apps.ps1 @@ -0,0 +1,170 @@ +# Description: +# This script removes unwanted Apps that come with Windows. If you do not want +# to remove certain Apps comment out the corresponding lines below. + +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1 +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\New-FolderForced.psm1 + +Write-Output "Elevating privileges for this process" +do {} until (Elevate-Privileges SeTakeOwnershipPrivilege) + +Write-Output "Uninstalling default apps" +$apps = @( + # default Windows 10 apps + "Microsoft.549981C3F5F10" #Cortana + "Microsoft.3DBuilder" + "Microsoft.Appconnector" + "Microsoft.BingFinance" + "Microsoft.BingNews" + "Microsoft.BingSports" + "Microsoft.BingTranslator" + "Microsoft.BingWeather" + #"Microsoft.FreshPaint" + "Microsoft.GamingServices" + "Microsoft.MicrosoftOfficeHub" + "Microsoft.MicrosoftPowerBIForWindows" + "Microsoft.MicrosoftSolitaireCollection" + #"Microsoft.MicrosoftStickyNotes" + "Microsoft.MinecraftUWP" + "Microsoft.NetworkSpeedTest" + "Microsoft.Office.OneNote" + "Microsoft.People" + "Microsoft.Print3D" + "Microsoft.SkypeApp" + "Microsoft.Wallet" + #"Microsoft.Windows.Photos" + "Microsoft.WindowsAlarms" + #"Microsoft.WindowsCalculator" + "Microsoft.WindowsCamera" + "microsoft.windowscommunicationsapps" + "Microsoft.WindowsMaps" + "Microsoft.WindowsPhone" + "Microsoft.WindowsSoundRecorder" + #"Microsoft.WindowsStore" # can't be re-installed + "Microsoft.Xbox.TCUI" + "Microsoft.XboxApp" + "Microsoft.XboxGameOverlay" + "Microsoft.XboxSpeechToTextOverlay" + "Microsoft.YourPhone" + "Microsoft.ZuneMusic" + "Microsoft.ZuneVideo" + + # Threshold 2 apps + "Microsoft.CommsPhone" + "Microsoft.ConnectivityStore" + "Microsoft.GetHelp" + "Microsoft.Getstarted" + "Microsoft.Messaging" + "Microsoft.Office.Sway" + "Microsoft.OneConnect" + "Microsoft.WindowsFeedbackHub" + + # Creators Update apps + "Microsoft.Microsoft3DViewer" + #"Microsoft.MSPaint" + + #Redstone apps + "Microsoft.BingFoodAndDrink" + "Microsoft.BingHealthAndFitness" + "Microsoft.BingTravel" + "Microsoft.WindowsReadingList" + + # Redstone 5 apps + "Microsoft.MixedReality.Portal" + "Microsoft.ScreenSketch" + "Microsoft.XboxGamingOverlay" + + # non-Microsoft + "2FE3CB00.PicsArt-PhotoStudio" + "46928bounde.EclipseManager" + "4DF9E0F8.Netflix" + "613EBCEA.PolarrPhotoEditorAcademicEdition" + "6Wunderkinder.Wunderlist" + "7EE7776C.LinkedInforWindows" + "89006A2E.AutodeskSketchBook" + "9E2F88E3.Twitter" + "A278AB0D.DisneyMagicKingdoms" + "A278AB0D.MarchofEmpires" + "ActiproSoftwareLLC.562882FEEB491" # next one is for the Code Writer from Actipro Software LLC + "CAF9E577.Plex" + "ClearChannelRadioDigital.iHeartRadio" + "D52A8D61.FarmVille2CountryEscape" + "D5EA27B7.Duolingo-LearnLanguagesforFree" + "DB6EA5DB.CyberLinkMediaSuiteEssentials" + "DolbyLaboratories.DolbyAccess" + "DolbyLaboratories.DolbyAccess" + "Drawboard.DrawboardPDF" + "Facebook.Facebook" + "Fitbit.FitbitCoach" + "Flipboard.Flipboard" + "GAMELOFTSA.Asphalt8Airborne" + "KeeperSecurityInc.Keeper" + "NORDCURRENT.COOKINGFEVER" + "PandoraMediaInc.29680B314EFC2" + "Playtika.CaesarsSlotsFreeCasino" + "ShazamEntertainmentLtd.Shazam" + "SlingTVLLC.SlingTV" + "SpotifyAB.SpotifyMusic" + #"TheNewYorkTimes.NYTCrossword" + "ThumbmunkeysLtd.PhototasticCollage" + "TuneIn.TuneInRadio" + "WinZipComputing.WinZipUniversal" + "XINGAG.XING" + "flaregamesGmbH.RoyalRevolt2" + "king.com.*" + "king.com.BubbleWitch3Saga" + "king.com.CandyCrushSaga" + "king.com.CandyCrushSodaSaga" + + # apps which cannot be removed using Remove-AppxPackage + #"Microsoft.BioEnrollment" + #"Microsoft.MicrosoftEdge" + #"Microsoft.Windows.Cortana" + #"Microsoft.WindowsFeedback" + #"Microsoft.XboxGameCallableUI" + #"Microsoft.XboxIdentityProvider" + #"Windows.ContactSupport" + + # apps which other apps depend on + "Microsoft.Advertising.Xaml" +) + +$appxprovisionedpackage = Get-AppxProvisionedPackage -Online + +foreach ($app in $apps) { + Write-Output "Trying to remove $app" + + Get-AppxPackage -Name $app -AllUsers | Remove-AppxPackage -AllUsers + + ($appxprovisionedpackage).Where( {$_.DisplayName -EQ $app}) | + Remove-AppxProvisionedPackage -Online +} + +# Prevents Apps from re-installing +$cdm = @( + "ContentDeliveryAllowed" + "FeatureManagementEnabled" + "OemPreInstalledAppsEnabled" + "PreInstalledAppsEnabled" + "PreInstalledAppsEverEnabled" + "SilentInstalledAppsEnabled" + "SubscribedContent-314559Enabled" + "SubscribedContent-338387Enabled" + "SubscribedContent-338388Enabled" + "SubscribedContent-338389Enabled" + "SubscribedContent-338393Enabled" + "SubscribedContentEnabled" + "SystemPaneSuggestionsEnabled" +) + +New-FolderForced -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" +foreach ($key in $cdm) { + Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" $key 0 +} + +New-FolderForced -Path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsStore" +Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsStore" "AutoDownload" 2 + +# Prevents "Suggested Applications" returning +New-FolderForced -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" +Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" "DisableWindowsConsumerFeatures" 1 diff --git a/Windows 10/Debloat/scripts/remove-onedrive.ps1 b/Windows 10/Debloat/scripts/remove-onedrive.ps1 new file mode 100644 index 0000000..2988a20 --- /dev/null +++ b/Windows 10/Debloat/scripts/remove-onedrive.ps1 @@ -0,0 +1,63 @@ +# Description: +# This script will remove and disable OneDrive integration. + +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\New-FolderForced.psm1 +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1 + +Write-Output "Kill OneDrive process" +taskkill.exe /F /IM "OneDrive.exe" +taskkill.exe /F /IM "explorer.exe" + +Write-Output "Remove OneDrive" +if (Test-Path "$env:systemroot\System32\OneDriveSetup.exe") { + & "$env:systemroot\System32\OneDriveSetup.exe" /uninstall +} +if (Test-Path "$env:systemroot\SysWOW64\OneDriveSetup.exe") { + & "$env:systemroot\SysWOW64\OneDriveSetup.exe" /uninstall +} + +Write-Output "Removing OneDrive leftovers" +Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:localappdata\Microsoft\OneDrive" +Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:programdata\Microsoft OneDrive" +Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:systemdrive\OneDriveTemp" +# check if directory is empty before removing: +If ((Get-ChildItem "$env:userprofile\OneDrive" -Recurse | Measure-Object).Count -eq 0) { + Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:userprofile\OneDrive" +} + +Write-Output "Disable OneDrive via Group Policies" +New-FolderForced -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive" +Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive" "DisableFileSyncNGSC" 1 + +Write-Output "Remove Onedrive from explorer sidebar" +New-PSDrive -PSProvider "Registry" -Root "HKEY_CLASSES_ROOT" -Name "HKCR" +mkdir -Force "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" +Set-ItemProperty -Path "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0 +mkdir -Force "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" +Set-ItemProperty -Path "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0 +Remove-PSDrive "HKCR" + +# Thank you Matthew Israelsson +Write-Output "Removing run hook for new users" +reg load "hku\Default" "C:\Users\Default\NTUSER.DAT" +reg delete "HKEY_USERS\Default\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSetup" /f +reg unload "hku\Default" + +Write-Output "Removing startmenu entry" +Remove-Item -Force -ErrorAction SilentlyContinue "$env:userprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk" + +Write-Output "Removing scheduled task" +Get-ScheduledTask -TaskPath '\' -TaskName 'OneDrive*' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false + +Write-Output "Restarting explorer" +Start-Process "explorer.exe" + +Write-Output "Waiting for explorer to complete loading" +Start-Sleep 10 + +# This can break Windows Update and some system utilities, see #297. +#Write-Output "Removing additional OneDrive leftovers" +#foreach ($item in (Get-ChildItem "$env:WinDir\WinSxS\*onedrive*")) { +# Takeown-Folder $item.FullName +# Remove-Item -Recurse -Force $item.FullName +#} diff --git a/Windows 10/Debloat/utils/boot-advanced-startup.bat b/Windows 10/Debloat/utils/boot-advanced-startup.bat new file mode 100644 index 0000000..e35e9f6 --- /dev/null +++ b/Windows 10/Debloat/utils/boot-advanced-startup.bat @@ -0,0 +1,3 @@ +@echo off + +shutdown /o /r /t 00 diff --git a/Windows 10/Debloat/utils/dark-theme.reg b/Windows 10/Debloat/utils/dark-theme.reg new file mode 100644 index 0000000..0232c91 --- /dev/null +++ b/Windows 10/Debloat/utils/dark-theme.reg @@ -0,0 +1,7 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize] +"AppsUseLightTheme"=dword:00000000 + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize] +"AppsUseLightTheme"=dword:00000000 diff --git a/Windows 10/Debloat/utils/disable-ShellExperienceHost.bat b/Windows 10/Debloat/utils/disable-ShellExperienceHost.bat new file mode 100644 index 0000000..d07ae85 --- /dev/null +++ b/Windows 10/Debloat/utils/disable-ShellExperienceHost.bat @@ -0,0 +1,5 @@ +rem Running this script can cause various issues with Explorer, WSL, etc. +rem See https://github.com/W4RH4WK/Debloat-Windows-10/issues/250 + +taskkill /F /IM ShellExperienceHost.exe +move "%windir%\SystemApps\ShellExperienceHost_cw5n1h2txyewy" "%windir%\SystemApps\ShellExperienceHost_cw5n1h2txyewy.bak" diff --git a/Windows 10/Debloat/utils/disable-edge-prelaunch.reg b/Windows 10/Debloat/utils/disable-edge-prelaunch.reg new file mode 100644 index 0000000..469c9dc --- /dev/null +++ b/Windows 10/Debloat/utils/disable-edge-prelaunch.reg @@ -0,0 +1,8 @@ +Windows Registry Editor Version 5.00 + +; disable prelaunch. lowers ram usage slightly +[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\MicrosoftEdge\Main] +"AllowPrelaunch"=dword:00000000 + +[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\MicrosoftEdge\TabPreloader] +"AllowTabPreloading"=dword:00000000 \ No newline at end of file diff --git a/Windows 10/Debloat/utils/disable-memory-compression.ps1 b/Windows 10/Debloat/utils/disable-memory-compression.ps1 new file mode 100644 index 0000000..c15bd67 --- /dev/null +++ b/Windows 10/Debloat/utils/disable-memory-compression.ps1 @@ -0,0 +1,6 @@ +# disable Memory Compression (requires SysMain (service)) +Disable-MMAgent -mc +#Get-MMAgent + +echo "Now you can also disable service SysMain (former Superfetch) in case it's not used." +#Get-Service "SysMain" | Set-Service -StartupType Disabled -PassThru | Stop-Service diff --git a/Windows 10/Debloat/utils/disable-prefetch-prelaunch.ps1 b/Windows 10/Debloat/utils/disable-prefetch-prelaunch.ps1 new file mode 100644 index 0000000..fc35654 --- /dev/null +++ b/Windows 10/Debloat/utils/disable-prefetch-prelaunch.ps1 @@ -0,0 +1,7 @@ +Disable-MMAgent -ApplicationPreLaunch +#Get-MMAgent + +# disable Prefetch +reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnablePrefetcher /t REG_DWORD /d "0" /f +# disable (Edge) Prelaunch +reg add "HKLM\SOFTWARE\Policies\Microsoft\MicrosoftEdge\Main" /v AllowPrelaunch /t REG_DWORD /d "0" /f diff --git a/Windows 10/Debloat/utils/disable-scheduled-tasks.ps1 b/Windows 10/Debloat/utils/disable-scheduled-tasks.ps1 new file mode 100644 index 0000000..3462f7e --- /dev/null +++ b/Windows 10/Debloat/utils/disable-scheduled-tasks.ps1 @@ -0,0 +1,207 @@ +# Description: +# This script will disable certain scheduled tasks. Work in progress! + +$tasks = @( + # Windows base scheduled tasks + "\Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319" + "\Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 64" + "\Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 64 Critical" + "\Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 Critical" + + #"\Microsoft\Windows\Active Directory Rights Management Services Client\AD RMS Rights Policy Template Management (Automated)" + #"\Microsoft\Windows\Active Directory Rights Management Services Client\AD RMS Rights Policy Template Management (Manual)" + + #"\Microsoft\Windows\AppID\EDP Policy Manager" + #"\Microsoft\Windows\AppID\PolicyConverter" + "\Microsoft\Windows\AppID\SmartScreenSpecific" + #"\Microsoft\Windows\AppID\VerifiedPublisherCertStoreCheck" + + "\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" + "\Microsoft\Windows\Application Experience\ProgramDataUpdater" + #"\Microsoft\Windows\Application Experience\StartupAppTask" + + #"\Microsoft\Windows\ApplicationData\CleanupTemporaryState" + #"\Microsoft\Windows\ApplicationData\DsSvcCleanup" + + #"\Microsoft\Windows\AppxDeploymentClient\Pre-staged app cleanup" + + "\Microsoft\Windows\Autochk\Proxy" + + #"\Microsoft\Windows\Bluetooth\UninstallDeviceTask" + + #"\Microsoft\Windows\CertificateServicesClient\AikCertEnrollTask" + #"\Microsoft\Windows\CertificateServicesClient\KeyPreGenTask" + #"\Microsoft\Windows\CertificateServicesClient\SystemTask" + #"\Microsoft\Windows\CertificateServicesClient\UserTask" + #"\Microsoft\Windows\CertificateServicesClient\UserTask-Roam" + + #"\Microsoft\Windows\Chkdsk\ProactiveScan" + + #"\Microsoft\Windows\Clip\License Validation" + + "\Microsoft\Windows\CloudExperienceHost\CreateObjectTask" + + "\Microsoft\Windows\Customer Experience Improvement Program\Consolidator" + "\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask" + "\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip" + + #"\Microsoft\Windows\Data Integrity Scan\Data Integrity Scan" + #"\Microsoft\Windows\Data Integrity Scan\Data Integrity Scan for Crash Recovery" + + #"\Microsoft\Windows\Defrag\ScheduledDefrag" + + #"\Microsoft\Windows\Diagnosis\Scheduled" + + #"\Microsoft\Windows\DiskCleanup\SilentCleanup" + + "\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector" + #"\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticResolver" + + #"\Microsoft\Windows\DiskFootprint\Diagnostics" + + "\Microsoft\Windows\Feedback\Siuf\DmClient" + + #"\Microsoft\Windows\File Classification Infrastructure\Property Definition Sync" + + #"\Microsoft\Windows\FileHistory\File History (maintenance mode)" + + #"\Microsoft\Windows\LanguageComponentsInstaller\Installation" + #"\Microsoft\Windows\LanguageComponentsInstaller\Uninstallation" + + #"\Microsoft\Windows\Location\Notifications" + #"\Microsoft\Windows\Location\WindowsActionDialog" + + #"\Microsoft\Windows\Maintenance\WinSAT" + + #"\Microsoft\Windows\Maps\MapsToastTask" + #"\Microsoft\Windows\Maps\MapsUpdateTask" + + #"\Microsoft\Windows\MemoryDiagnostic\ProcessMemoryDiagnosticEvents" + #"\Microsoft\Windows\MemoryDiagnostic\RunFullMemoryDiagnostic" + + "\Microsoft\Windows\Mobile Broadband Accounts\MNO Metadata Parser" + + #"\Microsoft\Windows\MUI\LPRemove" + + #"\Microsoft\Windows\Multimedia\SystemSoundsService" + + #"\Microsoft\Windows\NetCfg\BindingWorkItemQueueHandler" + + #"\Microsoft\Windows\NetTrace\GatherNetworkInfo" + + #"\Microsoft\Windows\Offline Files\Background Synchronization" + #"\Microsoft\Windows\Offline Files\Logon Synchronization" + + #"\Microsoft\Windows\PI\Secure-Boot-Update" + #"\Microsoft\Windows\PI\Sqm-Tasks" + + #"\Microsoft\Windows\Plug and Play\Device Install Group Policy" + #"\Microsoft\Windows\Plug and Play\Device Install Reboot Required" + #"\Microsoft\Windows\Plug and Play\Plug and Play Cleanup" + #"\Microsoft\Windows\Plug and Play\Sysprep Generalize Drivers" + + #"\Microsoft\Windows\Power Efficiency Diagnostics\AnalyzeSystem" + + #"\Microsoft\Windows\Ras\MobilityManager" + + #"\Microsoft\Windows\RecoveryEnvironment\VerifyWinRE" + + #"\Microsoft\Windows\Registry\RegIdleBackup" + + #"\Microsoft\Windows\RemoteAssistance\RemoteAssistanceTask" + + #"\Microsoft\Windows\RemovalTools\MRT_HB" + + #"\Microsoft\Windows\Servicing\StartComponentCleanup" + + #"\Microsoft\Windows\SettingSync\NetworkStateChangeTask" + + #"\Microsoft\Windows\Shell\CreateObjectTask" + #"\Microsoft\Windows\Shell\FamilySafetyMonitor" + #"\Microsoft\Windows\Shell\FamilySafetyRefresh" + #"\Microsoft\Windows\Shell\IndexerAutomaticMaintenance" + + #"\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask" + #"\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTaskLogon" + #"\Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTaskNetwork" + + #"\Microsoft\Windows\SpacePort\SpaceAgentTask" + + #"\Microsoft\Windows\Sysmain\HybridDriveCachePrepopulate" + #"\Microsoft\Windows\Sysmain\HybridDriveCacheRebalance" + #"\Microsoft\Windows\Sysmain\ResPriStaticDbSync" + #"\Microsoft\Windows\Sysmain\WsSwapAssessmentTask" + + #"\Microsoft\Windows\SystemRestore\SR" + + #"\Microsoft\Windows\Task Manager\Interactive" + + #"\Microsoft\Windows\TextServicesFramework\MsCtfMonitor" + + #"\Microsoft\Windows\Time Synchronization\ForceSynchronizeTime" + #"\Microsoft\Windows\Time Synchronization\SynchronizeTime" + + #"\Microsoft\Windows\Time Zone\SynchronizeTimeZone" + + #"\Microsoft\Windows\TPM\Tpm-HASCertRetr" + #"\Microsoft\Windows\TPM\Tpm-Maintenance" + + #"\Microsoft\Windows\UpdateOrchestrator\Maintenance Install" + #"\Microsoft\Windows\UpdateOrchestrator\Policy Install" + #"\Microsoft\Windows\UpdateOrchestrator\Reboot" + #"\Microsoft\Windows\UpdateOrchestrator\Resume On Boot" + #"\Microsoft\Windows\UpdateOrchestrator\Schedule Scan" + #"\Microsoft\Windows\UpdateOrchestrator\USO_UxBroker_Display" + #"\Microsoft\Windows\UpdateOrchestrator\USO_UxBroker_ReadyToReboot" + + #"\Microsoft\Windows\UPnP\UPnPHostConfig" + + #"\Microsoft\Windows\User Profile Service\HiveUploadTask" + + #"\Microsoft\Windows\WCM\WiFiTask" + + #"\Microsoft\Windows\WDI\ResolutionHost" + + "\Microsoft\Windows\Windows Defender\Windows Defender Cache Maintenance" + "\Microsoft\Windows\Windows Defender\Windows Defender Cleanup" + "\Microsoft\Windows\Windows Defender\Windows Defender Scheduled Scan" + "\Microsoft\Windows\Windows Defender\Windows Defender Verification" + + "\Microsoft\Windows\Windows Error Reporting\QueueReporting" + + #"\Microsoft\Windows\Windows Filtering Platform\BfeOnServiceStartTypeChange" + + #"\Microsoft\Windows\Windows Media Sharing\UpdateLibrary" + + #"\Microsoft\Windows\WindowsColorSystem\Calibration Loader" + + #"\Microsoft\Windows\WindowsUpdate\Automatic App Update" + #"\Microsoft\Windows\WindowsUpdate\Scheduled Start" + #"\Microsoft\Windows\WindowsUpdate\sih" + #"\Microsoft\Windows\WindowsUpdate\sihboot" + + #"\Microsoft\Windows\Wininet\CacheTask" + + #"\Microsoft\Windows\WOF\WIM-Hash-Management" + #"\Microsoft\Windows\WOF\WIM-Hash-Validation" + + #"\Microsoft\Windows\Work Folders\Work Folders Logon Synchronization" + #"\Microsoft\Windows\Work Folders\Work Folders Maintenance Work" + + #"\Microsoft\Windows\Workplace Join\Automatic-Device-Join" + + #"\Microsoft\Windows\WS\License Validation" + #"\Microsoft\Windows\WS\WSTask" + + # Scheduled tasks which cannot be disabled + #"\Microsoft\Windows\Device Setup\Metadata Refresh" + #"\Microsoft\Windows\SettingSync\BackgroundUploadTask" +) + +foreach ($task in $tasks) { + $parts = $task.split('\') + $name = $parts[-1] + $path = $parts[0..($parts.length-2)] -join '\' + + Disable-ScheduledTask -TaskName "$name" -TaskPath "$path" -ErrorAction SilentlyContinue +} diff --git a/Windows 10/Debloat/utils/disable-searchUI.bat b/Windows 10/Debloat/utils/disable-searchUI.bat new file mode 100644 index 0000000..506957e --- /dev/null +++ b/Windows 10/Debloat/utils/disable-searchUI.bat @@ -0,0 +1,2 @@ +taskkill /F /IM SearchUI.exe +move "%windir%\SystemApps\Microsoft.Windows.Cortana_cw5n1h2txyewy" "%windir%\SystemApps\Microsoft.Windows.Cortana_cw5n1h2txyewy.bak" diff --git a/Windows 10/Debloat/utils/enable-god-mode.ps1 b/Windows 10/Debloat/utils/enable-god-mode.ps1 new file mode 100644 index 0000000..a26a8b1 --- /dev/null +++ b/Windows 10/Debloat/utils/enable-god-mode.ps1 @@ -0,0 +1,19 @@ +# Description: +# This scripts places the "God Mode" folder on the current user's desktop. + +Write-Output @" +############################################################################### +# _______ _______ ______ __ __ _______ ______ _______ # +# | || || | | |_| || || | | | # +# | ___|| _ || _ | | || _ || _ || ___| # +# | | __ | | | || | | | | || | | || | | || |___ # +# | || || |_| || |_| | | || |_| || |_| || ___| # +# | |_| || || | | ||_|| || || || |___ # +# |_______||_______||______| |_| |_||_______||______| |_______| # +# # +# God Mode has been enabled, check out the new link on your Desktop # +# # +############################################################################### +"@ +$DesktopPath = [Environment]::GetFolderPath("Desktop"); +mkdir "$DesktopPath\GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}" diff --git a/Windows 10/Debloat/utils/enable-photo-viewer.reg b/Windows 10/Debloat/utils/enable-photo-viewer.reg new file mode 100644 index 0000000..2b20dd9 --- /dev/null +++ b/Windows 10/Debloat/utils/enable-photo-viewer.reg @@ -0,0 +1,36 @@ +Windows Registry Editor Version 5.00 + +; Change Extension's File Type +[HKEY_CURRENT_USER\Software\Classes\.jpg] +@="PhotoViewer.FileAssoc.Tiff" + + +; Change Extension's File Type +[HKEY_CURRENT_USER\Software\Classes\.jpeg] +@="PhotoViewer.FileAssoc.Tiff" + + +; Change Extension's File Type +[HKEY_CURRENT_USER\Software\Classes\.gif] +@="PhotoViewer.FileAssoc.Tiff" + + +; Change Extension's File Type +[HKEY_CURRENT_USER\Software\Classes\.png] +@="PhotoViewer.FileAssoc.Tiff" + + +; Change Extension's File Type +[HKEY_CURRENT_USER\Software\Classes\.bmp] +@="PhotoViewer.FileAssoc.Tiff" + + +; Change Extension's File Type +[HKEY_CURRENT_USER\Software\Classes\.tiff] +@="PhotoViewer.FileAssoc.Tiff" + + +; Change Extension's File Type +[HKEY_CURRENT_USER\Software\Classes\.ico] + +@="PhotoViewer.FileAssoc.Tiff" diff --git a/Windows 10/Debloat/utils/install-basic-software.ps1 b/Windows 10/Debloat/utils/install-basic-software.ps1 new file mode 100644 index 0000000..dce5478 --- /dev/null +++ b/Windows 10/Debloat/utils/install-basic-software.ps1 @@ -0,0 +1,61 @@ +# Description: +# This script will use Windows package manager to bootstrap Chocolatey and +# install a list of packages. Script will also install Sysinternals Utilities +# into your default drive's root directory. + +$packages = @( + "notepadplusplus.install" + "peazip.install" + #"7zip.install" + #"aimp" + #"audacity" + #"autoit" + #"classic-shell" + #"filezilla" + #"firefox" + #"gimp" + #"google-chrome-x64" + #"imgburn" + #"keepass.install" + #"paint.net" + #"putty" + #"python" + #"qbittorrent" + #"speedcrunch" + #"sysinternals" + #"thunderbird" + #"vlc" + #"windirstat" + #"wireshark" +) + +echo "Setting up Chocolatey software package manager" +Get-PackageProvider -Name chocolatey -Force + +echo "Setting up Full Chocolatey Install" +Install-Package -Name Chocolatey -Force -ProviderName chocolatey +$chocopath = (Get-Package chocolatey | ?{$_.Name -eq "chocolatey"} | Select @{N="Source";E={((($a=($_.Source -split "\\"))[0..($a.length - 2)]) -join "\"),"Tools\chocolateyInstall" -join "\"}} | Select -ExpandProperty Source) +& $chocopath "upgrade all -y" +choco install chocolatey-core.extension --force + +echo "Creating daily task to automatically upgrade Chocolatey packages" +# adapted from https://blogs.technet.microsoft.com/heyscriptingguy/2013/11/23/using-scheduled-tasks-and-scheduled-jobs-in-powershell/ +$ScheduledJob = @{ + Name = "Chocolatey Daily Upgrade" + ScriptBlock = {choco upgrade all -y} + Trigger = New-JobTrigger -Daily -at 2am + ScheduledJobOption = New-ScheduledJobOption -RunElevated -MultipleInstancePolicy StopExisting -RequireNetwork +} +Register-ScheduledJob @ScheduledJob + +echo "Installing Packages" +$packages | %{choco install $_ --force -y} + +echo "Installing Sysinternals Utilities to C:\Sysinternals" +$download_uri = "https://download.sysinternals.com/files/SysinternalsSuite.zip" +$wc = new-object net.webclient +$wc.DownloadFile($download_uri, "/SysinternalsSuite.zip") +Add-Type -AssemblyName "system.io.compression.filesystem" +[io.compression.zipfile]::ExtractToDirectory("/SysinternalsSuite.zip", "/Sysinternals") +echo "Removing zipfile" +rm "/SysinternalsSuite.zip" diff --git a/Windows 10/Debloat/utils/lower-ram-usage.reg b/Windows 10/Debloat/utils/lower-ram-usage.reg new file mode 100644 index 0000000..1c647e2 --- /dev/null +++ b/Windows 10/Debloat/utils/lower-ram-usage.reg @@ -0,0 +1,173 @@ +Windows Registry Editor Version 5.00 + +; lowers ram usage and process count by a lot +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control] +"SvcHostSplitThresholdInKB"=dword:04000000 +"WaitToKillServiceTimeout"="2000" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile] +"NetworkThrottlingIndex"=dword:0ffffffff +"SystemResponsiveness"=dword:00000000 + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks] + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio] +"Affinity"=dword:00000000 +"Background Only"="True" +"Clock Rate"=dword:00002710 +"GPU Priority"=dword:00000008 +"Priority"=dword:00000006 +"Scheduling Category"="Medium" +"SFIO Priority"="Normal" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Capture] +"Affinity"=dword:00000000 +"Background Only"="True" +"Clock Rate"=dword:00002710 +"GPU Priority"=dword:00000008 +"Priority"=dword:00000005 +"Scheduling Category"="Medium" +"SFIO Priority"="Normal" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\DisplayPostProcessing] +"Affinity"=dword:00000000 +"Background Only"="True" +"BackgroundPriority"=dword:00000008 +"Clock Rate"=dword:00002710 +"GPU Priority"=dword:00000008 +"Priority"=dword:00000008 +"Scheduling Category"="High" +"SFIO Priority"="Normal" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Distribution] +"Affinity"=dword:00000000 +"Background Only"="True" +"Clock Rate"=dword:00002710 +"GPU Priority"=dword:00000008 +"Priority"=dword:00000004 +"Scheduling Category"="Medium" +"SFIO Priority"="Normal" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games] +"Affinity"=dword:00000000 +"Background Only"="False" +"Clock Rate"=dword:00002710 +"GPU Priority"=dword:00000008 +"Priority"=dword:00000006 +"Scheduling Category"="High" +"SFIO Priority"="High" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Playback] +"Affinity"=dword:00000000 +"Background Only"="False" +"BackgroundPriority"=dword:00000004 +"Clock Rate"=dword:00002710 +"GPU Priority"=dword:00000008 +"Priority"=dword:00000003 +"Scheduling Category"="Medium" +"SFIO Priority"="Normal" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio] +"Affinity"=dword:00000000 +"Background Only"="False" +"Clock Rate"=dword:00002710 +"GPU Priority"=dword:00000008 +"Priority"=dword:00000001 +"Scheduling Category"="High" +"SFIO Priority"="Normal" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Window Manager] +"Affinity"=dword:00000000 +"Background Only"="True" +"Clock Rate"=dword:00002710 +"GPU Priority"=dword:00000008 +"Priority"=dword:00000005 +"Scheduling Category"="Medium" +"SFIO Priority"="Normal" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games] +"Affinity"=dword:00000000 +"Background Only"="False" +"Clock Rate"=dword:00002710 +"GPU Priority"=dword:00000008 +"Priority"=dword:00000006 +"Scheduling Category"="High" +"SFIO Priority"="High" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching] +"SearchOrderConfig"=dword:00000000 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power] +"HiberbootEnabled"=dword:00000000 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerThrottling] +"PowerThrottlingOff"=dword:00000001 + +[HKEY_CURRENT_USER\System\GameConfigStore] +"GameDVR_Enabled"=dword:00000000 +"GameDVR_FSEBehaviorMode"=dword:00000002 +"Win32_AutoGameModeDefaultProfile"=hex:01,00,01,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00 +"Win32_GameModeRelatedProcesses"=hex:01,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ + 00,00,00,00,00,00,00,00,00,00 +"GameDVR_HonorUserFSEBehaviorMode"=dword:00000000 +"GameDVR_DXGIHonorFSEWindowsCompatible"=dword:00000000 +"GameDVR_EFSEFeatureFlags"=dword:00000000 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power] +"HibernateEnabledDefault"=dword:00000000 + +[HKEY_CURRENT_USER\Control Panel\Desktop] +"MenuShowDelay"="0" +"WaitToKillAppTimeout"="5000" +"HungAppTimeout"="4000" +"AutoEndTasks"="1" +"LowLevelHooksTimeout"=dword:00001000 +"WaitToKillServiceTimeout"=dword:00002000 + + + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\943c8cb6-6f93-4227-ad87-e9a3feec08d1] +"Attributes"=dword:00000002 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\2a737441-1930-4402-8d77-b2bebba308a3\d4e98f31-5ffe-4ce1-be31-1b38b384c009\DefaultPowerSchemeValues\381b4222-f694-41f0-9685-ff5bb260df2e] +"ACSettingIndex"=dword:0 +"DCSettingIndex"=dword:0 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\2a737441-1930-4402-8d77-b2bebba308a3\d4e98f31-5ffe-4ce1-be31-1b38b384c009\DefaultPowerSchemeValues\8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c] +"ACSettingIndex"=dword:0 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\3b04d4fd-1cc7-4f23-ab1c-d1337819c4bb\DefaultPowerSchemeValues\381b4222-f694-41f0-9685-ff5bb260df2e] +"ACSettingIndex"=dword:0 +"DCSettingIndex"=dword:0 + +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\3b04d4fd-1cc7-4f23-ab1c-d1337819c4bb\DefaultPowerSchemeValues\8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c] +"ACSettingIndex"=dword:0 + +[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender] +"DisableAntiSpyware"=dword:00000001 diff --git a/Windows 10/Debloat/utils/ssd-tune.ps1 b/Windows 10/Debloat/utils/ssd-tune.ps1 new file mode 100644 index 0000000..5b6a98e --- /dev/null +++ b/Windows 10/Debloat/utils/ssd-tune.ps1 @@ -0,0 +1,3 @@ +# SSD life improvement +fsutil behavior set DisableLastAccess 1 +fsutil behavior set EncryptPagingFile 0 diff --git a/Windows 10/Debloat/utils/start_vert.png b/Windows 10/Debloat/utils/start_vert.png new file mode 100644 index 0000000..afe5b61 Binary files /dev/null and b/Windows 10/Debloat/utils/start_vert.png differ diff --git a/Windows 10/README.md b/Windows 10/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Windows 10/Recherche-Fichier-Extension.ps1 b/Windows 10/Recherche-Fichier-Extension.ps1 new file mode 100644 index 0000000..4f82c1b --- /dev/null +++ b/Windows 10/Recherche-Fichier-Extension.ps1 @@ -0,0 +1,60 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +$ComputerName = Get-WMIObject Win32_ComputerSystem| Select-Object -ExpandProperty Name +$Date = Get-date -format yyyy-MM-dd-hhmm +$LogName = "C:\Temp\$ComputerName - $Date.txt" +$Extension = "*.csv" + +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#------------------------------------------------------------[Script]-------------------------------------------------------------- + +Start-Transcript $LogName + Get-ChildItem -Path \ -Filter $Extension -Recurse -File -Name| ForEach-Object { + [System.IO.Path]::GetFileNameWithoutExtension($_) + } + +Stop-Transcript \ No newline at end of file diff --git a/Windows 10/VPN/VPN-Admin.ps1 b/Windows 10/VPN/VPN-Admin.ps1 new file mode 100644 index 0000000..7513733 --- /dev/null +++ b/Windows 10/VPN/VPN-Admin.ps1 @@ -0,0 +1,4 @@ +Add-VpnConnection -Name "VPN_ADMIN_FICHORGA" -ServerAddress "vpn103.fichorga.com" -TunnelType IKEv2 -EncryptionLevel Required -AuthenticationMethod EAP -SplitTunneling -AllUserConnection +Add-VpnConnectionRoute -ConnectionName "VPN_ADMIN_FICHORGA" -DestinationPrefix 10.0.0.0/8 -PassThru +Add-VpnConnectionRoute -ConnectionName "VPN_ADMIN_FICHORGA" -DestinationPrefix 120.0.0.0/8 -PassThru +Add-VpnConnectionRoute -ConnectionName "VPN_ADMIN_FICHORGA" -DestinationPrefix 84.246.219.0/24 PassThru diff --git a/Windows 10/w10.ps1 b/Windows 10/w10.ps1 new file mode 100644 index 0000000..c02a414 --- /dev/null +++ b/Windows 10/w10.ps1 @@ -0,0 +1,5 @@ +Add-VpnConnection -Name "VPN_FICHORGA" -ServerAddress "vpn3.fichorga.com" -TunnelType IKEv2 -EncryptionLevel Required -AuthenticationMethod EAP -SplitTunneling -AllUserConnection +Add-VpnConnectionRoute -ConnectionName "VPN_FICHORGA" -DestinationPrefix 10.0.0.0/8 -PassThru +Add-VpnConnectionRoute -ConnectionName "VPN_FICHORGA" -DestinationPrefix 120.0.0.0/8 -PassThru +Add-VpnConnectionRoute -ConnectionName "VPN_FICHORGA" -DestinationPrefix 84.246.219.0/24 -PassThru +Pause \ No newline at end of file diff --git a/Windows Server/Clear-AppContainer.ps1 b/Windows Server/Clear-AppContainer.ps1 new file mode 100644 index 0000000..4acedeb --- /dev/null +++ b/Windows Server/Clear-AppContainer.ps1 @@ -0,0 +1,13 @@ +#Corriger les problèmes d'ouverture de session très lente, écran noir, performance sur serveur et serveur RDS + +#Recommandé +New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy" -Name "DeleteUserAppContainersOnLogoff" -Value 1 +Logoff + +#Autre méthode, supprimer les clés de registre +Remove-Item “HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Configurable\System” +New-Item “HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Configurable\System” +Remove-Item “HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules” +New-Item “HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules” +Remove-Item “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Notifications” -Recurse +New-Item “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Notifications” \ No newline at end of file diff --git a/Windows Server/Disable-WindowsServices.ps1 b/Windows Server/Disable-WindowsServices.ps1 new file mode 100644 index 0000000..147fcc2 --- /dev/null +++ b/Windows Server/Disable-WindowsServices.ps1 @@ -0,0 +1,44 @@ +$onesync = (Get-ChildItem 'HKLM:\System\CurrentControlSet\Services' | ? { $_.PSChildName -like "OneSync*" }).Name + +$Services = +@("bthserv - Bluetooth Support Service.", "bthserv"), + ("DcpSvc - DataCollectionPublishingService.", "DcpSvc"), + ("DPS - Diagnostic Policy Service.", "DPS"), + ("WdiServiceHost - Diagnostic Service Host.", "WdiServiceHost"), + ("WdiSystemHost - Diagnostic System Host.", "WdiSystemHost"), + ("DiagTrack - Connected User Experiences and Telemetry [Diagnostics Tracking Service].", "DiagTrack"), + ("dmwappushservice - dmwappushsvc.", "dmwappushservice"), + ("MapsBroker - Downloaded Maps Manager.", "MapsBroker"), + ("lfsvc - Geolocation Service.", "lfsvc"), + ("UI0Detect - Interactive Services Detection.", "UI0Detect"), + ("SharedAccess - Internet Connection Sharing [ICS].", "SharedAccess"), + ("lltdsvc - Link-Layer Topology Discovery Mapper.", "lltdsvc"), + ("diagnosticshub.standardcollector.service - Microsoft [R] Diagnostics Hub Standard Collector Service.", "diagnosticshub.standardcollector.service"), + ("NcbService - Network Connection Broker.", "NcbService"), + ("NcaSvc - Network Connectivity Assistant.", "NcaSvc"), + ("defragsvc - Optimize drives.", "defragsvc"), + ("wercplsupport - Problem Reports and Solutions Control Panel.", "wercplsupport"), + ("PcaSvc - Program Compatibility Assistant Service.", "PcaSvc"), + ("QWAVE - Quality Windows Audio Video Experience.", "QWAVE"), + ("RmSvc - Radio Management Service.", "RmSvc"), + ("SysMain - Superfetch.", "SysMain"), + ("TapiSrv - Telephony.", "TapiSrv"), + ("UALSVC - User Access Logging Service.", "UALSVC"), + ("WerSvc - Windows Error Reporting Service.", "WerSvc"), + ("wisvc - Windows Insider Service.", "wisvc"), + ("icssvc - Windows Mobile Hotspot Service.", "icssvc"), + ("XblAuthManager - Xbox Live Auth Manager.", "XblAuthManager"), + ("XblGameSave - Xbox Live Game Save.", "XblGameSave") + +foreach ($Service in $Services) { + Write-Host Disabling service $Service[0] -ForegroundColor Cyan + Invoke-Expression ("Set-Service " + $Service[1] + " -StartupType Disabled") + Get-Service $Service[1] | Stop-Service -Force + Start-Sleep 2 +} + +Set-Location HKLM:\ +ForEach ($sync in $onesync) { + Set-ItemProperty -Path $sync -Name Start -Value 4 +} +Get-Service OneSync* | Stop-Service -Force \ No newline at end of file diff --git a/Windows Server/Get-ServersHealth.ps1 b/Windows Server/Get-ServersHealth.ps1 new file mode 100644 index 0000000..3288099 --- /dev/null +++ b/Windows Server/Get-ServersHealth.ps1 @@ -0,0 +1,89 @@ +[securestring]$Password = ConvertTo-SecureString 'Password' -AsPlainText -Force +$Credential = New-Object System.Management.Automation.PsCredential(".\Admin", $Password) + +$ReportsPath = (Join-Path $env:LOCALAPPDATA "Hitea\AmInf\Reports") +New-Item -Path $ReportsPath -ItemType Directory -Force | Out-Null + +$VMhost = Get-CimInstance -ClassName Win32_OperatingSystem -ErrorAction Stop + +$TestHostReports = Get-ChildItem -Path (Join-Path $ReportsPath "$($VMhost.CSName)_*.csv") + +Write-Host "" +Write-Host "Export reports path: $ReportsPath" +Write-Host "" +Write-Host "Get infos of Host : $($vmhost.CSName)" +Write-Host "" + +if (!$TestHostReports) { + + $RestartEvents = Get-EventLog -Logname System -After (Get-Date).AddHours(-24) | Where-Object { $_.EventID -in (6005, 6006, 6008, 6009, 1074, 1076) } + $Win32Apps = Get-WmiObject -Class Win32_Product + $WinAppx = Get-AppxPackage + + $ServerDetail = [pscustomobject]@{ + Computername = $vmhost.CSName + OperatingSystem = $vmhost.Caption + TotalMemory = $vmhost.totalVisibleMemorySize / 1MB -as [int] + FreeMemory = [Math]::Round($vmhost.FreePhysicalMemory / 1MB, 2) + PctMemoryFree = [Math]::Round(($vmhost.FreePhysicalMemory / $vmhost.totalVisibleMemorySize) * 100, 2) + TotalVirtualMemory = $vmhost.totalVirtualMemorySize / 1MB -as [int] + FreeVirtualMemory = [Math]::Round($vmhost.FreeVirtualMemory / 1MB, 2) + PctVirtualMemoryFree = [Math]::Round(($vmhost.FreeVirtualMemory / $vmhost.totalVirtualMemorySize) * 100, 2) + } + + $ServerDetail | Export-Csv -Path (Join-Path $ReportsPath "$($VMhost.CSName)_Infos.csv") -Encoding UTF8 -Delimiter ";" -NoTypeInformation + $RestartEvents | Export-Csv -Path (Join-Path $ReportsPath "$($VMhost.CSName)_Restart_Events.csv") -Encoding UTF8 -Delimiter ";" -NoTypeInformation + $WinAppx | Export-Csv -Path (Join-Path $ReportsPath "$($VMhost.CSName)_AppxPackages.csv") -Encoding UTF8 -Delimiter ";" -NoTypeInformation + $Win32Apps | Export-Csv -Path (Join-Path $ReportsPath "$($VMhost.CSName)_Msis.csv") -Encoding UTF8 -Delimiter ";" -NoTypeInformation +} + +Write-Host "Detect HyperV Service" +Write-Host "" + +$HyperV = Get-Service HvHost -ErrorAction SilentlyContinue + +If ($HyperV.Status -eq "Running") { + + try { + Import-Module Hyper-V + + $VmsState = [enum]::GetNames([Microsoft.HyperV.Powershell.VMState]) + $VmsStatus = [enum]::GetNames([Microsoft.HyperV.Powershell.VMOperationalStatus]) + $Vms = Get-VM -VMName * + + $Vms | Select-Object Id, Name, State, OperationalStatus, Status, Networkadapters, + @{Name = "MemoryStatus"; Expression = { $_.MemoryStatus } }, + @{Name = "MemAssignMB"; Expression = { $_.MemoryAssigned / 1MB } }, + @{Name = "PctAssignTotal"; Expression = { [math]::Round(($_.memoryAssigned / ($vmhost.TotalVisibleMemorySize * 1KB)) * 100, 2) } }, + @{Name = "MemDemandMB"; Expression = { $_.MemoryDemand / 1MB } }, + @{Name = "PctDemandTotal"; Expression = { [math]::Round(($_.memoryDemand / ($vmhost.TotalVisibleMemorySize * 1KB)) * 100, 2) } } | Export-Csv -Path (Join-Path $ReportsPath "$($VMhost.CSName)_VMs.csv") -Encoding UTF8 -Delimiter ";" -NoTypeInformation + + Foreach ($Item in $Vms) { + + if ($Item.State -eq "Running") { + try { + Write-Host "Get infos of VM : $($Item.Name)" + Write-Host "" + + $VmInfos = Invoke-Command -VMId $Item.Id -Credential $Credential -ScriptBlock { Get-CimInstance -ClassName Win32_OperatingSystem } + $VMNetwork = ($Item | Select-Object -ExpandProperty Networkadapters | Select-Object IPAddresses) + $VmInfos | Add-Member -NotePropertyName IPAddresses -NotePropertyValue $VMNetwork + + $VmEvents = Invoke-Command -VMId $Item.Id -Credential $Credential -ScriptBlock { Get-EventLog -Logname System -After (Get-Date).AddHours(-24) | Where-Object { $_.EventID -in (6005, 6006, 6008, 6009, 1074, 1076) } } + + $VmInfos | Export-Csv -Path (Join-Path $ReportsPath "$($VMhost.CSName)_$($Item.Name)_Infos.csv") -Encoding UTF8 -Delimiter ";" -NoTypeInformation + $VmEvents | Export-Csv -Path (Join-Path $ReportsPath "$($VMhost.CSName)_$($Item.Name)_Events.csv") -Encoding UTF8 -Delimiter ";" -NoTypeInformation + } + catch { + Write-Output "Get VM infos failed" + } + } + + } + + } + catch { + + } + +} \ No newline at end of file diff --git a/Windows Server/Get-WinBackupStatus.ps1 b/Windows Server/Get-WinBackupStatus.ps1 new file mode 100644 index 0000000..9d7d283 --- /dev/null +++ b/Windows Server/Get-WinBackupStatus.ps1 @@ -0,0 +1,61 @@ +# Liste des serveurs pour le rapport +$ServerList = "" + +# Vérifier le fichier +If (!(Test-Path $ServerList)) { + Write-Host "Can not get servers list. Script will not continue" -ForegroundColor Red; Exit +} + +$servers = @() +$job_details = "" + +Get-Content $ServerList | Foreach-Object { $servers += $_ } + +for ($i = 0; $i -lt $servers.length; $i++) { + $ConnectionError = 0 + Write-Host "Getting result from server: " $servers[$i] + try { + $Session = New-PSSession -ComputerName $servers[$i] + $WindowsVersion = Invoke-Command -session $session -ScriptBlock { (Get-WmiObject win32_operatingsystem).version } + if ($WindowsVersion -match "6.1") + { $WBSummary = Invoke-Command -session $session -ScriptBlock { add-pssnapin windows.serverbackup; Get-WBSummary } } + else { $WBSummary = Invoke-Command -session $session -ScriptBlock { Get-WBSummary } } + Remove-PSSession $Session + } + catch { + Write-Host "Error connecting remote server" + write-host "Caught an exception:" -ForegroundColor Red + write-host "Exception Type: $($_.Exception.GetType().FullName)" -ForegroundColor Red + write-host "Exception Message: $($_.Exception.Message)" -ForegroundColor Red + $ConnectionError = 1 + } + + + $job_details += "## Serveur : " + $servers[$i] + "`n" + + if ($ConnectionError -eq 1) { + $job_details += "- **Statut** : Error connecting remote server`n" + } + else { + if ($WBSummary.LastBackupResultHR -eq 0) { $job_details += "- **Statut** : Success`n"; $result = "Success" } + else { $job_details += "- **Statut** : Failure`n"; $result = "Failure" } + + $job_details += "- **Date** : " + $WBSummary.LastSuccessfulBackupTime + "`n" + + if ([string]::IsNullOrEmpty($WBSummary.DetailedMessage)) { $job_details += "- **Message** : Success`n"; $message = "Success" } + else { $job_details += "- **Message** : " + $WBSummary.DetailedMessage + "`n"; $message = $WBSummary.DetailedMessage } + + $job_details += "- **Nombre de sauvegardes** : " + $WBSummary.NumberOfVersions + "`n" + + if ([string]::IsNullOrEmpty($WBSummary.LastBackupTarget)) { $job_details += "- **Destination** : None`n" } + else { $job_details += "- **Destination** : " + $WBSummary.LastBackupTarget + "`n" } + + Write-Host "Last Backup Result: $result" + Write-Host "Last Successful Backup Time:" $WBSummary.LastSuccessfulBackupTime + Write-Host "Detailed Message: $message" + Write-Host "Number of Backups:" $WBSummary.NumberOfVersions + Write-Host "Destination:" $WBSummary.LastBackupTarget + Write-Host "-----------------------------------------------------------------" + + } +} diff --git a/Windows Server/Install-WacApp.ps1 b/Windows Server/Install-WacApp.ps1 new file mode 100644 index 0000000..1157c63 --- /dev/null +++ b/Windows Server/Install-WacApp.ps1 @@ -0,0 +1,45 @@ +Function Install-WacApp { + [CmdletBinding( + SupportsShouldProcess = $true + )] + param ( + [Parameter(Mandatory = $false)] + [ValidateNotNullOrEmpty()] + [ValidateSet("generate", "installed")] + [string]$CertOption = "generate", + [Parameter(Mandatory = $false)] + [ValidateNotNullOrEmpty()] + [int]$Port = 443 + ) + + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + + $Output = (Join-Path $env:TEMP "WAC.msi") + $Logfile = (Join-Path $env:TEMP "WAC.txt") + + Write-Host "Start Download to temp folder to $Output" -ForegroundColor Green + + Invoke-WebRequest "https://aka.ms/WACDownload" -OutFile "$Output" + + if ($CertOption -eq "generate") { + $msiArgs = @("/i", "$Output", "/qn", "/L*v", "$Logfile", "SME_PORT=$($Port)", "SSL_CERTIFICATE_OPTION=$($CertOption)") + } + elseif ($CertOption -eq "installed") { + $Thumbprint = Read-Host "Enter un certificate Thumbprint" + $msiArgs = @("/i", "$Output", "/qn", "/L*v", "$Logfile", "SME_PORT=$($Port)", "SME_THUMBPRINT=$($Thumbprint)", "SSL_CERTIFICATE_OPTION=$($CertOption)") + } + else { + return + } + + Write-Host "Start Install WAC with port $Port, view logs at $Logfile" -ForegroundColor Green + + Start-Process msiexec.exe -ArgumentList $msiArgs -Wait -PassThru -Verb "RunAs" + + Write-Host "Create firewall rules for WAC access on any profiles" -ForegroundColor Green + + New-NetFirewallRule -DisplayName "Allow Windows Admin Center" -Direction Outbound -profile Any -LocalPort $Port -Protocol TCP -Action Allow + + New-NetFirewallRule -DisplayName "Allow Windows Admin Center" -Direction Inbound -profile Any -LocalPort $Port -Protocol TCP -Action Allow + +} \ No newline at end of file diff --git a/Windows Server/New-RdsCertificat.ps1 b/Windows Server/New-RdsCertificat.ps1 new file mode 100644 index 0000000..b2ef442 --- /dev/null +++ b/Windows Server/New-RdsCertificat.ps1 @@ -0,0 +1,5 @@ +New-SelfSignedCertificate -Subject “CertName” -DnsName "CertFqdn” -CertStoreLocation “cert:\LocalMachine\My” -KeyAlgorithm RSA -KeyLength 2048 -KeyExportPolicy Exportable -NotAfter (Get-Date).AddYears(5) + +$pwd = ConvertTo-SecureString -String "Password" -Force –AsPlainText + +Export-PfxCertificate -cert cert:\localMachine\my\785810C7545A00609AA3623159DA3E6E01F265DB -FilePath e:\cert.pfx -Password $pwd diff --git a/Windows Server/README.md b/Windows Server/README.md new file mode 100644 index 0000000..03c6db6 --- /dev/null +++ b/Windows Server/README.md @@ -0,0 +1 @@ +# Windows Server diff --git a/Windows Server/Remove-AadProxyAgent.ps1 b/Windows Server/Remove-AadProxyAgent.ps1 new file mode 100644 index 0000000..c950b6e --- /dev/null +++ b/Windows Server/Remove-AadProxyAgent.ps1 @@ -0,0 +1,18 @@ +#Forcer la deconnexion de l'agent +azcmagent disconnect --force-local-only + +#Désintaller les applications Agent et Proxy AAD +Get-ChildItem -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall | ` + Get-ItemProperty | ` + Where-Object { $_.DisplayName -eq "Azure Connected Machine Agent" } | ` + ForEach-Object { MsiExec.exe /x "$($_.PsChildName)" /qn } + +Get-ChildItem -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall | ` + Get-ItemProperty | ` + Where-Object { $_.DisplayName -eq "Microsoft Azure Active Directory Application Proxy Connector" } | ` + ForEach-Object { MsiExec.exe /x "$($_.PsChildName)" /qn } + +Get-ChildItem -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall | ` + Get-ItemProperty | ` + Where-Object { $_.DisplayName -eq "Microsoft Azure AD Application Proxy Connector Updater" } | ` + ForEach-Object { MsiExec.exe /x "$($_.PsChildName)" /qn } \ No newline at end of file diff --git a/Windows Server/Restart-RDS.ps1 b/Windows Server/Restart-RDS.ps1 new file mode 100644 index 0000000..a1e2924 --- /dev/null +++ b/Windows Server/Restart-RDS.ps1 @@ -0,0 +1,77 @@ + +#Définition des variables +$ServerBroker = "Srv-Broker.domain.local" +$ServerHost = "Srv-Host.domain.local" +$webhook = "Teams WebHook URL" + +$TempLocalPath = "$env:Temp" +$LogTempFile = $TempLocalPath + "\" + ($ServerHost) + "_" + (Get-Date -UFormat "%d-%m-%Y") + ".log" +$LogFolder = "C:\Log_Folder" + +#Reprise d'un fonction de log +Function Write-Log { + param ( + [Parameter(Mandatory = $True)] + [string]$LogOutput, + [Parameter(Mandatory = $False)] + [string]$LogPath = $LogTempFile + ) + if (! (Test-Path $LogFolder)) { + New-Item -Path $LogFolder -ItemType Directory + } + $currentDate = (Get-Date -UFormat "%d-%m-%Y") + $currentTime = (Get-Date -UFormat "%T") + "[$currentDate $currentTime] $logOutput" | Out-File $LogPath -Append +} + +Write-Log -LogOutput ("Heure de début $(Get-Date -UFormat "%T")") + +#Récupérer les sessions activent sur l'hôte RDS +$Sessions = Get-RDUserSession -ConnectionBroker $ServerBroker | Where-Object HostServer -eq $ServerHost + + +#Parcourir les sessions activent pour les déconnecter avant le redémarrage +foreach ($Session in $Sessions) { + + #Ecriture d'un événement Windows + Write-EventLog -LogName "System" -Source "EventLog" -EventId 6013 -EntryType Information -Message "Session $($Session.UserName) fermée" + + Write-Log -LogOutput ("Session $($Session.UserName) fermée") + + #Déconnexion des sessions + Invoke-RDUserLogoff -HostServer $ServerHost -UnifiedSessionID $Session.UnifiedSessionID -Force +} + +try { + #Redémarrge du serveur et attente de la connectivité WinRM pour validation + Restart-Computer -ComputerName $ServerHost -Wait -For WinRM -Delay 30 -Timeout 3600 + Write-Log -LogOutput ("$ServerHost redémarré") +} +catch { + Write-Log -LogOutput ("Erreur de redémarrage serveur: $ServerHost") +} + +Write-Log -LogOutput ("Heure de fin $(Get-Date -UFormat "%T")") + +$Logcontent = Get-Content $LogTempFile + +Copy-Item $LogTempFile -Destination $LogFolder + +#Création du JSON pour la notification +$body = @{ + "@type" = "MessageCard" + "@context" = "" + "title" = 'Rapport de redémarrage serveur' + "themeColor" = '0055DD' + "text" = "Serveur: " + $ServerHost + "sections" = @( + @{ + "activityTitle" = 'Logs' + "activitySubtitle" = 'Chemin du fichier: ' + $LogFolder + "activityText" = $Logcontent + } + ) +} | ConvertTo-JSON + +#Envoi du message sur teams +Invoke-RestMethod -Method post -ContentType 'application/json; charset=utf-8' -Body $body -Uri $webhook diff --git a/Windows Server/Set-NTP.ps1 b/Windows Server/Set-NTP.ps1 new file mode 100644 index 0000000..74f7676 --- /dev/null +++ b/Windows Server/Set-NTP.ps1 @@ -0,0 +1,14 @@ +#A faire sur un controleur de domaine par exemple +#Si le controleur est une VM Hyper-V, il faut déactiver la synchro de l'heure pour cette VM + +#Sur le DC +w32tm /config /update /manualpeerlist:"time.windows.com,0x8" /syncfromflags:MANUAL +Restart-Service w32time +w32tm /resync + +#Vérifier la propagation sur les PC du domaine +w32tm /resync +w32tm /query /status + +#Vérifier la source de temps +w32tm /query /source \ No newline at end of file diff --git a/Windows/Convert-ESD-to-WIM.ps1 b/Windows/Convert-ESD-to-WIM.ps1 new file mode 100644 index 0000000..4a02215 --- /dev/null +++ b/Windows/Convert-ESD-to-WIM.ps1 @@ -0,0 +1,9 @@ +#Convertir une image Windows au format ESD en WIM + +#Monter l'ISO, se rendre dans le dossier sources + +#Récupérer les versions disponibles +dism /Get-WimInfo /WimFile:install.esd + +#Extraire la version pro par exemple (Index 6), il faut aussi modifier la destination vers un dossier conne C:\images\install.wim par exemple +dism /export-image /SourceImageFile:install.esd /SourceIndex:6 /DestinationImageFile:install.wim /Compress:max /CheckIntegrity \ No newline at end of file diff --git a/Windows/Enable-Bitlocker.ps1 b/Windows/Enable-Bitlocker.ps1 new file mode 100644 index 0000000..2acbce7 --- /dev/null +++ b/Windows/Enable-Bitlocker.ps1 @@ -0,0 +1,16 @@ +# Bitlocker avec TPM +if ((Get-BitLockerVolume -MountPoint $env:SystemDrive).VolumeStatus -eq "FullyDecrypted") { + + Add-BitLockerKeyProtector -MountPoint $env:SystemDrive -TpmProtector + Enable-BitLocker -MountPoint $env:SystemDrive -RecoveryPasswordProtector -SkipHardwareTest + +} + +#Bitlocker avec mot de passe +if ((Get-BitLockerVolume -MountPoint $env:SystemDrive).VolumeStatus -eq "FullyDecrypted") { + + $BitLockerPwd = ConvertTo-SecureString "Password" -AsPlainText -Force + Add-BitLockerKeyProtector -MountPoint $env:SystemDrive -PasswordProtector -Password $BitLockerPwd + Enable-BitLocker -MountPoint $env:SystemDrive -RecoveryPasswordProtector -SkipHardwareTest + +} \ No newline at end of file diff --git a/Windows/Get-BitlockerStatus.ps1 b/Windows/Get-BitlockerStatus.ps1 new file mode 100644 index 0000000..224a372 --- /dev/null +++ b/Windows/Get-BitlockerStatus.ps1 @@ -0,0 +1,44 @@ +<# +.SYNOPSIS + List all workstations in the domain. Fields include LastLogonDate and the latest BitLocker password set date (if present) +.DESCRIPTION + List all workstations in the domain. Fields include LastLogonDate and the latest BitLocker password set date (if present) +.PARAMETER SearchBase + OU where the script will begin it's search +.INPUTS + None +.OUTPUTS + CSV in script path +.EXAMPLE + .\Get-BitlockerStatus.ps1 -SearchBase "" +.NOTES + +#> + +[CmdletBinding()] +Param ( + [string]$SearchBase = "OU=..." +) + +Try { Import-Module ActiveDirectory -ErrorAction Stop } +Catch { Write-Warning "Unable to load Active Directory module because $($Error[0])"; Exit } + + +Write-Verbose "Getting Workstations..." -Verbose +$Computers = Get-ADComputer -Filter * -SearchBase $SearchBase -Properties LastLogonDate +$Count = 1 +$Results = ForEach ($Computer in $Computers) { + Write-Progress -Id 0 -Activity "Searching Computers for BitLocker" -Status "$Count of $($Computers.Count)" -PercentComplete (($Count / $Computers.Count) * 100) + New-Object PSObject -Property @{ + ComputerName = $Computer.Name + LastLogonDate = $Computer.LastLogonDate + BitLockerPasswordSet = Get-ADObject -Filter "objectClass -eq 'msFVE-RecoveryInformation'" -SearchBase $Computer.distinguishedName -Properties msFVE-RecoveryPassword, whenCreated | Sort-Object whenCreated -Descending | Select-Object -First 1 | Select-Object -ExpandProperty whenCreated + } + $Count ++ +} +Write-Progress -Id 0 -Activity " " -Status " " -Completed + +$ReportPath = Join-Path (Split-Path $MyInvocation.MyCommand.Path) -ChildPath "Get-BitlockerStatus.csv" +Write-Verbose "Building the report..." -Verbose +$Results | Select-Object ComputerName, LastLogonDate, BitLockerPasswordSet | Sort-Object ComputerName | Export-Csv $ReportPath -NoTypeInformation -Delimiter ";" -Encoding UTF8 +Write-Verbose "Report saved at: $ReportPath" -Verbose \ No newline at end of file diff --git a/Windows/Get-RemoteProgram.ps1 b/Windows/Get-RemoteProgram.ps1 new file mode 100644 index 0000000..1db50dc --- /dev/null +++ b/Windows/Get-RemoteProgram.ps1 @@ -0,0 +1,140 @@ +Function Get-RemoteProgram { +<# +.Synopsis +Generates a list of installed programs on a computer + +.DESCRIPTION +This function generates a list by querying the registry and returning the installed programs of a local or remote computer. + +.NOTES +Name : Get-RemoteProgram +Author : Jaap Brasser +Version : 1.3 +DateCreated: 2013-08-23 +DateUpdated: 2016-08-26 +Blog : http://www.jaapbrasser.com + +.LINK +http://www.jaapbrasser.com + +.PARAMETER ComputerName +The computer to which connectivity will be checked + +.PARAMETER Property +Additional values to be loaded from the registry. Can contain a string or an array of string that will be attempted to retrieve from the registry for each program entry + +.PARAMETER ExcludeSimilar +This will filter out similar programnames, the default value is to filter on the first 3 words in a program name. If a program only consists of less words it is excluded and it will not be filtered. For example if you Visual Studio 2015 installed it will list all the components individually, using -ExcludeSimilar will only display the first entry. + +.PARAMETER SimilarWord +This parameter only works when ExcludeSimilar is specified, it changes the default of first 3 words to any desired value. + +.EXAMPLE +Get-RemoteProgram + +Description: +Will generate a list of installed programs on local machine + +.EXAMPLE +Get-RemoteProgram -ComputerName server01,server02 + +Description: +Will generate a list of installed programs on server01 and server02 + +.EXAMPLE +Get-RemoteProgram -ComputerName Server01 -Property DisplayVersion,VersionMajor + +Description: +Will gather the list of programs from Server01 and attempts to retrieve the displayversion and versionmajor subkeys from the registry for each installed program + +.EXAMPLE +'server01','server02' | Get-RemoteProgram -Property Uninstallstring + +Description +Will retrieve the installed programs on server01/02 that are passed on to the function through the pipeline and also retrieves the uninstall string for each program + +.EXAMPLE +'server01','server02' | Get-RemoteProgram -Property Uninstallstring -ExcludeSimilar -SimilarWord 4 + +Description +Will retrieve the installed programs on server01/02 that are passed on to the function through the pipeline and also retrieves the uninstall string for each program. Will only display a single entry of a program of which the first four words are identical. +#> + [CmdletBinding(SupportsShouldProcess=$true)] + param( + [Parameter(ValueFromPipeline =$true, + ValueFromPipelineByPropertyName=$true, + Position=0 + )] + [string[]] + $ComputerName = $env:COMPUTERNAME, + [Parameter(Position=0)] + [string[]] + $Property, + [switch] + $ExcludeSimilar, + [int] + $SimilarWord + ) + + begin { + $RegistryLocation = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\', + 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\' + $HashProperty = @{} + $SelectProperty = @('ProgramName','ComputerName') + if ($Property) { + $SelectProperty += $Property + } + } + + process { + foreach ($Computer in $ComputerName) { + $RegBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$Computer) + $RegistryLocation | ForEach-Object { + $CurrentReg = $_ + if ($RegBase) { + $CurrentRegKey = $RegBase.OpenSubKey($CurrentReg) + if ($CurrentRegKey) { + $CurrentRegKey.GetSubKeyNames() | ForEach-Object { + if ($Property) { + foreach ($CurrentProperty in $Property) { + $HashProperty.$CurrentProperty = ($RegBase.OpenSubKey("$CurrentReg$_")).GetValue($CurrentProperty) + } + } + $HashProperty.ComputerName = $Computer + $HashProperty.ProgramName = ($DisplayName = ($RegBase.OpenSubKey("$CurrentReg$_")).GetValue('DisplayName')) + if ($DisplayName) { + New-Object -TypeName PSCustomObject -Property $HashProperty | + Select-Object -Property $SelectProperty + } + } + } + } + } | ForEach-Object -Begin { + if ($SimilarWord) { + $Regex = [regex]"(^(.+?\s){$SimilarWord}).*$|(.*)" + } else { + $Regex = [regex]"(^(.+?\s){3}).*$|(.*)" + } + [System.Collections.ArrayList]$Array = @() + } -Process { + if ($ExcludeSimilar) { + $null = $Array.Add($_) + } else { + $_ + } + } -End { + if ($ExcludeSimilar) { + $Array | Select-Object -Property *,@{ + name = 'GroupedName' + expression = { + ($_.ProgramName -split $Regex)[1] + } + } | + Group-Object -Property 'GroupedName' | ForEach-Object { + $_.Group[0] | Select-Object -Property * -ExcludeProperty GroupedName + } + } + } + } + } +} \ No newline at end of file diff --git a/Windows/New-LocalUser.ps1 b/Windows/New-LocalUser.ps1 new file mode 100644 index 0000000..ab95118 --- /dev/null +++ b/Windows/New-LocalUser.ps1 @@ -0,0 +1,47 @@ +param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$Name, + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$Password, + [Parameter(Mandatory = $false)] + [ValidateNotNullOrEmpty()] + [string]$Group = "Utilisateurs" +) + +#Vérifier si l'utilisateur existe déjà +try { + Get-LocalUser -Name $Name -ErrorAction Stop + Write-Host "User already exist, reseting the password..." -ForegroundColor Yellow + Set-LocalUser -Name $Name -Password (ConvertTo-SecureString -AsPlainText $Password -Force) +} +catch { + #Créer l'utilisateur + try { + New-LocalUser -Name $Name -Password (ConvertTo-SecureString -AsPlainText $Password -Force) -FullName $Name -Description "Created date: $(Get-Date)" -ErrorAction Stop + Write-Host "User created" -ForegroundColor Green + } + catch { + Write-Host "Error: User not created" -ForegroundColor Red + } +} +try { + try { + #Vérifier si le groupe existe et si l'utilisateur n'est pas déjà membre + $GroupMembers = Get-LocalGroupMember -Group $Group -ErrorAction Stop + if ($GroupMembers -match $Name) { + Write-Host "User already in the group" -ForegroundColor Yellow + } + else { + #Ajouter l'utilisateur au groupe + Add-LocalGroupMember -Group $Group -Member $Name -ErrorAction Stop + } + } + catch { + Write-Host "Group doesn't exist" -ForegroundColor Red + } +} +catch { + Write-Host "Error: Unable to add the user to the group" -ForegroundColor Red +} \ No newline at end of file diff --git a/Windows/New-certificate.ps1 b/Windows/New-certificate.ps1 new file mode 100644 index 0000000..37b779b --- /dev/null +++ b/Windows/New-certificate.ps1 @@ -0,0 +1,35 @@ +function New-Certificate { + [CmdletBinding( + SupportsShouldProcess = $true + )] + param( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$Name, + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$Password, + [Parameter(Mandatory = $false)] + [ValidateNotNullOrEmpty()] + [bool]$Export = $false + ) + + $OldCert = Get-ChildItem -Path cert:\CurrentUser\My | Where-Object { $_.FriendlyName -eq $Name } + if ($OldCert) { + Write-Host "Cert Alreday Exist, Return " + Return + } + else { + $Create_Cert = New-SelfSignedCertificate -Subject "CN=$Name" -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsage KeyEncipherment, DataEncipherment, KeyAgreement -Type DocumentEncryptionCert -FriendlyName $Name + Write-Host "New Certificate created" + if (($Export -eq $true)) { + if (Test-Path ($Name + "_Cert_Export.pfx")) { + Remove-Item (Join-Path ($Name + "_Cert_Export.pfx")) + Write-Verbose -Message "File alreday exist: removed" + } + $cert = Get-ChildItem -Path cert:\CurrentUser\My | Where-Object { $_.Thumbprint -eq $($Create_Cert.Thumbprint) } + Export-PfxCertificate -Cert $cert -FilePath ($Name + "_Cert_Export.pfx") -Password (ConvertTo-SecureString -AsPlainText $Password -Force) + Write-Host "Certificate Exported" + } + } +} diff --git a/Windows/README.md b/Windows/README.md new file mode 100644 index 0000000..af6fdce --- /dev/null +++ b/Windows/README.md @@ -0,0 +1 @@ +# Windows diff --git a/Windows/Reset-Machine-Password.ps1 b/Windows/Reset-Machine-Password.ps1 new file mode 100644 index 0000000..1a9445f --- /dev/null +++ b/Windows/Reset-Machine-Password.ps1 @@ -0,0 +1,22 @@ +#Vérifier la relation d'aprobation avec le domaine +#En batch +netdom verify /Domain:domain.local /UserO:User /PasswordO:* + +#En PowerShell +Test-ComputerSecureChannel -Server 'DC.domain.local' + +#Réparer la relation d'aprobation avec le domaine +#En batch +netdom resetpwd /s:DC /ud:User /pd:* + +#En PowerShell +Reset-ComputerMachinePassword -Server "DC.domain.local" -Credential (Get-Credential) + +#Autre méthode en PowerShell +Test-ComputerSecureChannel -Repair -Credential (Get-Credential) + +#Sortir le PC du domaine +Remove-Computer -UnjoinDomaincredential (Get-Credential) -Restart -Force + +#Remettre le PC dans le domaine +Add-Computer -DomainName domain.local -Credential (Get-Credential) -Restart -Force \ No newline at end of file diff --git a/Windows/Set-NetworkCategory.ps1 b/Windows/Set-NetworkCategory.ps1 new file mode 100644 index 0000000..24c7fd4 --- /dev/null +++ b/Windows/Set-NetworkCategory.ps1 @@ -0,0 +1,10 @@ +#Droits admin nécessaire + +#Afficher le profil actif +$ProfileName = Get-NetConnectionProfile + +# Changer la catégorie du profil actif (valeurs acceptées : Public, Private, DomainAuthenticated) +Set-NetConnectionProfile -Name $ProfileName.Name -NetworkCategory Private + +#Changer toutes sur toutes les connexions +Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private \ No newline at end of file diff --git a/Windows/Start-ControlPanelApplet b/Windows/Start-ControlPanelApplet new file mode 100644 index 0000000..bf6c31f --- /dev/null +++ b/Windows/Start-ControlPanelApplet @@ -0,0 +1,101 @@ +$ControlPanelApplets = [ordered]@{ + "Add a Device wizard" = "$env:windir\System32\DevicePairingWizard.exe" + "Add Hardware wizard" = "$env:windir\System32\hdwwiz.exe" + "Add a Printer wizard" = "rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter" + "Administrative Tools" = "control.exe /name Microsoft.AdministrativeTools" + "AutoPlay" = "control.exe /name Microsoft.AutoPlay" + "Backup and Restore" = "control.exe /name Microsoft.BackupAndRestoreCenter" + "BitLocker Drive Encryption" = "control.exe /name Microsoft.BitLockerDriveEncryption" + "Color and Appearance" = "explorer shell:::{ED834ED6-4B5A-4bfe-8F11-A626DCB6A921} -Microsoft.Personalization\pageColorization" + "Color Management" = "control.exe /name Microsoft.ColorManagement" + "Credential Manager" = "control.exe /name Microsoft.CredentialManager" + "Date and Time" = "control.exe /name Microsoft.DateAndTime" + "Default Programs" = "control.exe /name Microsoft.DefaultPrograms" + "Desktop Background" = "explorer shell:::{ED834ED6-4B5A-4bfe-8F11-A626DCB6A921} -Microsoft.Personalization\pageWallpaper" + "Desktop Icon Settings" = "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0" + "Device Manager" = "control.exe /name Microsoft.DeviceManager" + "Devices and Printers" = "control.exe /name Microsoft.DevicesAndPrinters" + "Ease of Access Center" = "control.exe /name Microsoft.EaseOfAccessCenter" + "File Explorer Options" = "control.exe /name Microsoft.FolderOptions" + "File History" = "control.exe /name Microsoft.FileHistory" + "Fonts" = "control.exe /name Microsoft.Fonts" + "Game Controllers" = "control.exe /name Microsoft.GameControllers" + "Get Programs" = "control.exe /name Microsoft.GetPrograms" + "HomeGroup" = "control.exe /name Microsoft.HomeGroup" + "Indexing Options" = "control.exe /name Microsoft.IndexingOptions" + "Infrared" = "control.exe /name Microsoft.Infrared" + "Internet Properties" = "control.exe /name Microsoft.InternetOptions" + "iSCSI Initiator" = "control.exe /name Microsoft.iSCSIInitiator" + "Keyboard" = "control.exe /name Microsoft.Keyboard" + "Language" = "control.exe /name Microsoft.Language" + "Mouse Properties" = "control.exe /name Microsoft.Mouse" + "Network and Sharing Center" = "control.exe /name Microsoft.NetworkAndSharingCenter" + "Network Connections" = "control.exe ncpa.cpl" + "Network Setup Wizard" = "control.exe netsetup.cpl" + "Notification Area Icons" = "explorer shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}" + "ODBC Data Source Administrator" = "control.exe odbccp32.cpl" + "Offline Files" = "control.exe /name Microsoft.OfflineFiles" + "Performance Options" = "$env:windir\system32\SystemPropertiesPerformance.exe" + "Personalization" = "explorer shell:::{ED834ED6-4B5A-4bfe-8F11-A626DCB6A921}" + "Phone and Modem" = "control.exe /name Microsoft.PhoneAndModem" + "Power Options" = "control.exe /name Microsoft.PowerOptions" + "Presentation Settings" = "$env:windir\system32\PresentationSettings.exe" + "Programs and Features" = "control.exe /name Microsoft.ProgramsAndFeatures" + "Recovery" = "control.exe /name Microsoft.Recovery" + "Region" = "control.exe /name Microsoft.RegionAndLanguage" + "RemoteApp and Desktop Connections" = "control.exe /name Microsoft.RemoteAppAndDesktopConnections" + "Scanners and Cameras" = "control.exe /name Microsoft.ScannersAndCameras" + "Screen Saver Settings" = "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1" + "Security and Maintenance" = "control.exe /name Microsoft.ActionCenter" + "Set Associations" = "control.exe /name Microsoft.DefaultPrograms /page pageFileAssoc" + "Set Default Programs" = "control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram" + "Set Program Access and Computer Defaults" = "rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3" + "Sound" = "control.exe /name Microsoft.Sound" + "Speech Recognition" = "control.exe /name Microsoft.SpeechRecognition" + "Storage Spaces" = "control.exe /name Microsoft.StorageSpaces" + "Sync Center" = "control.exe /name Microsoft.SyncCenter" + "System" = "control.exe /name Microsoft.System" + "System Icons" = "explorer shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9} \SystemIcons,,0" + "System Properties" = "$env:windir\System32\SystemPropertiesComputerName.exe" + "Tablet PC Settings" = "control.exe /name Microsoft.TabletPCSettings" + "Text to Speech" = "control.exe /name Microsoft.TextToSpeech" + "User Accounts" = "netplwiz" + "Windows Defender Antivirus" = "$env:ProgramFiles\Windows Defender\MSASCui.exe" + "Windows Defender Firewall" = "control.exe /name Microsoft.WindowsFirewall" + "Windows Features" = "$env:windir\System32\OptionalFeatures.exe" + "Windows Mobility Center" = "control.exe /name Microsoft.MobilityCenter" + "Windows To Go" = "$env:windir\System32\pwcreator.exe" + "Work Folders" = "$env:windir\System32\WorkFolders.exe" +} + +function Start-ControlPanelApplet { + [CmdletBinding()] + param + ( + [string[]] + $Name + ) + + foreach ($Applet in $Name) { + cmd /c $ControlPanelApplets.$Applet + } +} + +Register-ArgumentCompleter -CommandName Start-ControlPanelApplet -ParameterName Name -ScriptBlock { + param ($CommandName, $ParameterName, $WordToComplete, $CommandAst, $FakeBoundParameter) + + $Keys = $ControlPanelApplets.Keys + + foreach ($Key in $Keys) { + if ($Key -Match $WordToComplete) { + [System.Management.Automation.CompletionResult]::new( + "'$Key'", + $Key, + "ParameterValue", + ($Key) + ) + } + } +} + +Set-Alias -Name cpl -Value Start-ControlPanelApplet \ No newline at end of file diff --git a/Windows/Test-GroupMember.ps1 b/Windows/Test-GroupMember.ps1 new file mode 100644 index 0000000..4320ffc --- /dev/null +++ b/Windows/Test-GroupMember.ps1 @@ -0,0 +1,24 @@ +param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$Name, + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$Group +) + +#Vérifier si le groupe existe et si l'utilisateur est membres +try { + $GroupMembers = Get-LocalGroupMember -Group $Group -ErrorAction Stop + if ($GroupMembers -match $Name) { + #Si oui retourner OUI + return $true + } + else { + #Sinon retourner NON + return $false + } +} +catch { + Write-Host "Group doesn't exist" +} diff --git a/Windows/Windows-Notification.ps1 b/Windows/Windows-Notification.ps1 new file mode 100644 index 0000000..b37fad4 --- /dev/null +++ b/Windows/Windows-Notification.ps1 @@ -0,0 +1,42 @@ +[CmdletBinding( + SupportsShouldProcess = $true +)] +Param( + [Parameter(Mandatory = $false)] + [ValidateNotNullOrEmpty()] + [ValidateSet("Info", "Warning", "Error", "None")] + [string]$Type, + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$Title, + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$Text, + [Parameter(Mandatory = $false)] + [ValidateNotNullOrEmpty()] + [int]$Timeout = 10 +) + +#Ajouter les librairies Windows +Add-Type -AssemblyName System.Windows.Forms +Add-Type -AssemblyName System.Drawing + +#Créer l'objet notification +$notify = new-object system.windows.forms.notifyicon +$notify.icon = [system.drawing.icon]::ExtractAssociatedIcon((join-path $pshome powershell.exe)) +$notify.visible = $True + +$notify.showballoontip($Timeout, $title, $text, $type) + +switch ($Host.Runspace.ApartmentState) { + STA { + $null = Register-ObjectEvent -InputObject $notify -EventName BalloonTipClosed -Action { + $Sender.Dispose() + Unregister-Event $EventSubscriber.SourceIdentifier + Remove-Job $EventSubscriber.Action + } + } + default { + continue + } +} \ No newline at end of file diff --git a/debug.log b/debug.log new file mode 100644 index 0000000..0a947f8 --- /dev/null +++ b/debug.log @@ -0,0 +1,3 @@ +[0703/201232.558:ERROR:registration_protocol_win.cc(107)] CreateFile: Le fichier spcifi est introuvable. (0x2) +[0703/201232.913:ERROR:registration_protocol_win.cc(107)] CreateFile: Le fichier spcifi est introuvable. (0x2) +[0703/201233.266:ERROR:registration_protocol_win.cc(107)] CreateFile: Le fichier spcifi est introuvable. (0x2) diff --git a/template.ps1 b/template.ps1 new file mode 100644 index 0000000..83db414 --- /dev/null +++ b/template.ps1 @@ -0,0 +1,53 @@ +<# +.SYNOPSIS + + +.NOTES + Version : 1.0 + Author : Hubert CORNET + Creation Date : + Purpose/Change : + +.LINK + https://www.tips-of-mine.fr + +.EXEMPLE + + +.DESCRIPTION + + +.PARAMETER + + +.INPUTS + + +.OUTPUTS + .log> +#> + +#---------------------------------------------------------[Initialisations]-------------------------------------------------------- + +# Définir l'action d'erreur pour continuer silencieusement +$ErrorActionPreference = "SilentlyContinue" + +# Bibliothèques de fonctions requises + +#----------------------------------------------------------[Declarations]---------------------------------------------------------- +# Version Script +$sScriptVersion = "1.0" + +#Log File Info +$sLogPath = "C:\Tmp" +$sLogName = ".log" +$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName + +Start-Transcript -Path $sLogFile -NoClobber +#-----------------------------------------------------------[Functions]------------------------------------------------------------ + +#--------------------------------------------------------[Debut Du Script]--------------------------------------------------------- + +#---------------------------------------------------------[Fin Du Script]---------------------------------------------------------- + +Stop-Transcript \ No newline at end of file