From 2e311070fe12e7ce9b1c51d3813c3488cb0f021e Mon Sep 17 00:00:00 2001 From: Dominique Broeglin Date: Mon, 18 Apr 2016 21:41:42 +0200 Subject: [PATCH] Added Get-NSConfig : retrieve netscaler configuration (running or saved) --- .gitignore | 3 ++ NetScaler/NetScaler.psd1 | 1 + NetScaler/Public/Get-NSConfig.ps1 | 63 +++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100755 NetScaler/Public/Get-NSConfig.ps1 diff --git a/.gitignore b/.gitignore index f31ec00..c5f38d5 100644 --- a/.gitignore +++ b/.gitignore @@ -197,3 +197,6 @@ FakesAssemblies/ # Visual Studio 6 workspace options file *.opt + +# Mac metadata +.DS_Store diff --git a/NetScaler/NetScaler.psd1 b/NetScaler/NetScaler.psd1 index 575950f..431e9fa 100644 --- a/NetScaler/NetScaler.psd1 +++ b/NetScaler/NetScaler.psd1 @@ -99,6 +99,7 @@ FunctionsToExport = @( 'Enable-NSLBVirtualServer', 'Enable-NSMode', 'Get-NSAvailableTimeZone', + 'Get-NSConfig', 'Get-NSFeature', 'Get-NSHostname', 'Get-NSLBMonitor', diff --git a/NetScaler/Public/Get-NSConfig.ps1 b/NetScaler/Public/Get-NSConfig.ps1 new file mode 100755 index 0000000..606d9ac --- /dev/null +++ b/NetScaler/Public/Get-NSConfig.ps1 @@ -0,0 +1,63 @@ +<# +Copyright 2016 Dominique Broeglin + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +#> + +function Get-NSConfig { + <# + .SYNOPSIS + Gets the specified Netscaler configuration. + + .DESCRIPTION + Gets the specified Netscaler configuration. The returned configuration is an + array of strings. Each string represents a configuration line. Comments, empty + lines and the " Done" line are prunned. + + .EXAMPLE + Get-NSConfig + + Get the running configuration. + + .EXAMPLE + Get-NSConfig -State saved + + Get the saved configuration + + .PARAMETER Session + The NetScaler session object. + + .PARAMETER State + The state of the configuration that should be returned. Defaults to 'running'. + #> + [cmdletbinding()] + param( + $Session = $script:session, + + [ValidateSet('running', 'saved')] + [string]$State = 'running' + ) + + begin { + _AssertSessionActive + } + + process { + if ($State -eq 'running') { + $Config = (_InvokeNSRestApi -Session $Session -Method Get -Type nsrunningconfig -Action GetAll).nsrunningconfig.response + } else { + $Config = (_InvokeNSRestApi -Session $Session -Method Get -Type nssavedconfig -Action GetAll).nssavedconfig.textblob + } + $Config -Split '\n' | ? { $_ -and !($_ -match "^( Done| *#)") } + } +} \ No newline at end of file