Public/Set-AnyStackSyslogServer.ps1
|
function Set-AnyStackSyslogServer { <# .SYNOPSIS Sets the syslog server for a host. .DESCRIPTION Updates Syslog.global.logHost in advanced options. .PARAMETER Server vCenter Server hostname or VIServer object. Uses active connection if omitted. .PARAMETER HostName Name of the host. .PARAMETER SyslogServer Syslog server URI (e.g. udp://syslog.local:514). .EXAMPLE PS> Set-AnyStackSyslogServer -HostName 'esx01' -SyslogServer 'syslog.local' .OUTPUTS PSCustomObject .NOTES Author: The AnyStack Architect Requires: VCF.PowerCLI 9.0+, vSphere 8.0 U3+ #> [CmdletBinding(SupportsShouldProcess=$true)] [OutputType([PSCustomObject])] param( [Parameter(Mandatory=$false, ValueFromPipeline=$true)] [ValidateNotNull()] $Server, [Parameter(Mandatory=$true)] [string]$HostName, [Parameter(Mandatory=$true)] [string]$SyslogServer ) begin { $vi = Get-AnyStackConnection -Server $Server $ErrorActionPreference = 'Stop' } process { try { if ($PSCmdlet.ShouldProcess($HostName, "Set Syslog Server to $SyslogServer")) { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Updating syslog on $($vi.Name)" $h = Invoke-AnyStackWithRetry -ScriptBlock { Get-View -Server $vi -ViewType HostSystem -Filter @{Name=$HostName} } $optMgr = Invoke-AnyStackWithRetry -ScriptBlock { Get-View -Server $vi -Id $h.ConfigManager.AdvancedOption } $prev = ($optMgr.QueryView() | Where-Object { $_.Key -eq 'Syslog.global.logHost' }).Value Invoke-AnyStackWithRetry -ScriptBlock { $optMgr.UpdateValues(@([VMware.Vim.OptionValue]@{ Key='Syslog.global.logHost'; Value=$SyslogServer })) } [PSCustomObject]@{ PSTypeName = 'AnyStack.SyslogConfig' Timestamp = (Get-Date) Server = $vi.Name Host = $HostName PreviousValue = $prev NewValue = $SyslogServer Applied = $true } } } catch { $PSCmdlet.ThrowTerminatingError([System.Management.Automation.ErrorRecord]::new(function Set-AnyStackSyslogServer { <# .SYNOPSIS Sets the syslog server for a host. .DESCRIPTION Updates Syslog.global.logHost in advanced options. .PARAMETER Server vCenter Server hostname or VIServer object. Uses active connection if omitted. .PARAMETER HostName Name of the host. .PARAMETER SyslogServer Syslog server URI (e.g. udp://syslog.local:514). .EXAMPLE PS> Set-AnyStackSyslogServer -HostName 'esx01' -SyslogServer 'syslog.local' .OUTPUTS PSCustomObject .NOTES Author: The AnyStack Architect Requires: VCF.PowerCLI 9.0+, vSphere 8.0 U3+ #> [CmdletBinding(SupportsShouldProcess=$true)] [OutputType([PSCustomObject])] param( [Parameter(Mandatory=$false, ValueFromPipeline=$true)] [ValidateNotNull()] $Server, [Parameter(Mandatory=$true)] [string]$HostName, [Parameter(Mandatory=$true)] [string]$SyslogServer ) begin { $vi = Get-AnyStackConnection -Server $Server $ErrorActionPreference = 'Stop' } process { try { if ($PSCmdlet.ShouldProcess($HostName, "Set Syslog Server to $SyslogServer")) { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Updating syslog on $($vi.Name)" $h = Invoke-AnyStackWithRetry -ScriptBlock { Get-View -Server $vi -ViewType HostSystem -Filter @{Name=$HostName} } $optMgr = Invoke-AnyStackWithRetry -ScriptBlock { Get-View -Server $vi -Id $h.ConfigManager.AdvancedOption } $prev = ($optMgr.QueryView() | Where-Object { $_.Key -eq 'Syslog.global.logHost' }).Value Invoke-AnyStackWithRetry -ScriptBlock { $optMgr.UpdateValues(@([VMware.Vim.OptionValue]@{ Key='Syslog.global.logHost'; Value=$SyslogServer })) } [PSCustomObject]@{ PSTypeName = 'AnyStack.SyslogConfig' Timestamp = (Get-Date) Server = $vi.Name Host = $HostName PreviousValue = $prev NewValue = $SyslogServer Applied = $true } } } catch { $PSCmdlet.ThrowTerminatingError([System.Management.Automation.ErrorRecord]::new(function Set-AnyStackSyslogServer { <# .SYNOPSIS Sets the syslog server for a host. .DESCRIPTION Updates Syslog.global.logHost in advanced options. .PARAMETER Server vCenter Server hostname or VIServer object. Uses active connection if omitted. .PARAMETER HostName Name of the host. .PARAMETER SyslogServer Syslog server URI (e.g. udp://syslog.local:514). .EXAMPLE PS> Set-AnyStackSyslogServer -HostName 'esx01' -SyslogServer 'syslog.local' .OUTPUTS PSCustomObject .NOTES Author: The AnyStack Architect Requires: VCF.PowerCLI 9.0+, vSphere 8.0 U3+ #> [CmdletBinding(SupportsShouldProcess=$true)] [OutputType([PSCustomObject])] param( [Parameter(Mandatory=$false, ValueFromPipeline=$true)] [ValidateNotNull()] $Server, [Parameter(Mandatory=$true)] [string]$HostName, [Parameter(Mandatory=$true)] [string]$SyslogServer ) begin { $vi = Get-AnyStackConnection -Server $Server $ErrorActionPreference = 'Stop' } process { try { if ($PSCmdlet.ShouldProcess($HostName, "Set Syslog Server to $SyslogServer")) { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Updating syslog on $($vi.Name)" $h = Invoke-AnyStackWithRetry -ScriptBlock { Get-View -Server $vi -ViewType HostSystem -Filter @{Name=$HostName} } $optMgr = Invoke-AnyStackWithRetry -ScriptBlock { Get-View -Server $vi -Id $h.ConfigManager.AdvancedOption } $prev = ($optMgr.QueryView() | Where-Object { $_.Key -eq 'Syslog.global.logHost' }).Value Invoke-AnyStackWithRetry -ScriptBlock { $optMgr.UpdateValues(@([VMware.Vim.OptionValue]@{ Key='Syslog.global.logHost'; Value=$SyslogServer })) } [PSCustomObject]@{ PSTypeName = 'AnyStack.SyslogConfig' Timestamp = (Get-Date) Server = $vi.Name Host = $HostName PreviousValue = $prev NewValue = $SyslogServer Applied = $true } } } catch { $PSCmdlet.ThrowTerminatingError([System.Management.Automation.ErrorRecord]::new(function Set-AnyStackSyslogServer { <# .SYNOPSIS Sets the syslog server for a host. .DESCRIPTION Updates Syslog.global.logHost in advanced options. .PARAMETER Server vCenter Server hostname or VIServer object. Uses active connection if omitted. .PARAMETER HostName Name of the host. .PARAMETER SyslogServer Syslog server URI (e.g. udp://syslog.local:514). .EXAMPLE PS> Set-AnyStackSyslogServer -HostName 'esx01' -SyslogServer 'syslog.local' .OUTPUTS PSCustomObject .NOTES Author: The AnyStack Architect Requires: VCF.PowerCLI 9.0+, vSphere 8.0 U3+ #> [CmdletBinding(SupportsShouldProcess=$true)] [OutputType([PSCustomObject])] param( [Parameter(Mandatory=$false, ValueFromPipeline=$true)] [ValidateNotNull()] $Server, [Parameter(Mandatory=$true)] [string]$HostName, [Parameter(Mandatory=$true)] [string]$SyslogServer ) begin { $vi = Get-AnyStackConnection -Server $Server $ErrorActionPreference = 'Stop' } process { try { if ($PSCmdlet.ShouldProcess($HostName, "Set Syslog Server to $SyslogServer")) { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Updating syslog on $($vi.Name)" $h = Invoke-AnyStackWithRetry -ScriptBlock { Get-View -Server $vi -ViewType HostSystem -Filter @{Name=$HostName} } $optMgr = Invoke-AnyStackWithRetry -ScriptBlock { Get-View -Server $vi -Id $h.ConfigManager.AdvancedOption } $prev = ($optMgr.QueryView() | Where-Object { $_.Key -eq 'Syslog.global.logHost' }).Value Invoke-AnyStackWithRetry -ScriptBlock { $optMgr.UpdateValues(@([VMware.Vim.OptionValue]@{ Key='Syslog.global.logHost'; Value=$SyslogServer })) } [PSCustomObject]@{ PSTypeName = 'AnyStack.SyslogConfig' Timestamp = (Get-Date) Server = $vi.Name Host = $HostName PreviousValue = $prev NewValue = $SyslogServer Applied = $true } } } catch { $PSCmdlet.ThrowTerminatingError([System.Management.Automation.ErrorRecord]::new($_, 'UnexpectedError', [System.Management.Automation.ErrorCategory]::NotSpecified, $null)) } } } .Exception, 'UnexpectedError', [System.Management.Automation.ErrorCategory]::NotSpecified, $null)) } } } .Exception, 'UnexpectedError', [System.Management.Automation.ErrorCategory]::NotSpecified, $null)) } } } .Exception, 'UnexpectedError', [System.Management.Automation.ErrorCategory]::NotSpecified, $null)) } } } |