# encoding: ascii
# api: powershell
# title: 
# description: Get-Help proxy function with URLs for PowerShell Core Help Topics when using the ‘Online’ parameter.
# version: 0.1
# type: function
# license: CC0
# function: Get-Help
# x-poshcode-id: 1772
# x-archived: 2016-10-24T12:47:24
#
#
function Get-Help
{

	<#
	.ForwardHelpTargetName Get-Help
	.ForwardHelpCategory Cmdlet
	#>

	[CmdletBinding(DefaultParameterSetName='AllUsersView')]
	
	param(
		[Parameter(Position=0, ValueFromPipelineByPropertyName=$true)]
		[System.String]
		${Name},

		[System.String]
		${Path},

		[System.String[]]
		${Category},

		[System.String[]]
		${Component},

		[System.String[]]
		${Functionality},

		[System.String[]]
		${Role},

		[Parameter(ParameterSetName='DetailedView')]
		[Switch]
		${Detailed},

		[Parameter(ParameterSetName='AllUsersView')]
		[Switch]
		${Full},

		[Parameter(ParameterSetName='Examples')]
		[Switch]
		${Examples},

		[Parameter(ParameterSetName='Parameters')]
		[System.String]
		${Parameter},

		[Switch]
		${Online}
	)

	begin
	{
		try {
			$OnlineBaseHelpUrl = 'http://go.microsoft.com/fwlink/?LinkID='

			$about = New-Object PSObject -Property @{
				'about_Aliases' = 113207
				'about_Arithmetic_Operators' = 113208
				'about_Arrays' = 113209
				'about_Assignment_Operators' = 113210
				'about_Automatic_Variables' = 113212
				'about_Break' = 113213
				'about_Command_Precedence' = 113214
				'about_Command_Syntax' = 113215
				'about_Comment_Based_Help' = 144309
				'about_CommonParameters' = 113216
				'about_Comparison_Operators' = 113217
				'about_Continue' = 113218
				'about_Core_Commands' = 113219
				'about_Data_Sections' = 113220
				'about_Debuggers' = 113221
				'about_Do' = 135169
				'about_Environment_Variables' = 113222
				'about_Escape_Characters' = 113223
				'about_EventLogs' = 113224
				'about_Execution_Policies' = 135170
				'about_For' = 113228
				'about_Foreach' = 113229
				'about_Format.ps1xml' = 113230
				'about_Functions' = 113231
				'about_Functions_Advanced' = 144511
				'about_Functions_Advanced_Methods' = 135172
				'about_Functions_Advanced_Parameters' = 135173
				'about_Functions_CmdletBindingAttribute' = 135174
				'about_Hash_Tables' = 135175
				'about_History' = 113233
				'about_If' = 113234
				'about_Job_Details' = 135176
				'about_jobs' = 113251
				'about_Join' = 113235
				'about_Language_Keywords' = 136588
				'about_Line_Editing' = 113236
				'about_Locations' = 113237
				'about_Logical_Operators' = 113238
				'about_Methods' = 113239
				'about_Modules' = 144311
				'about_Objects' = 113241
				'about_Operators' = 113242
				'about_Parameters' = 113243
				'about_Parsing' = 113244
				'about_Path_Syntax' = 113245
				'about_Pipelines' = 113246
				'about_Preference_Variables' = 113248
				'about_Profiles' = 113729
				'about_Prompts' = 135179
				'about_Properties' = 113249
				'about_Providers' = 113250
				'about_PSSession_Details' = 135180
				'about_PSSessions' = 135181
				'about_PSsnapins' = 113252
				'about_Quoting_Rules' = 113253
				'about_Redirection' = 113254
				'about_Ref' = 113255
				'about_Regular_Expressions' = 113256
				'about_Remote' = 135182
				'about_Remote_FAQ' = 135183
				'about_Remote_Jobs' = 135184
				'about_Remote_Output' = 135185
				'about_Remote_Requirements' = 135187
				'about_Remote_Troubleshooting' = 135188
				'about_Requires' = 135190
				'about_Reserved_Words' = 113258
				'about_Return' = 136587
				'about_Scopes' = 113260
				'about_Script_Blocks' = 113261
				'about_Script_Internationalization' = 113262
				'about_Scripts' = 144310
				'about_Session_Configurations' = 145152
				'about_Signing' = 113268
				'about_Special_Characters' = 113269
				'about_Split' = 113270
				'about_Switch' = 113271
				'about_Throw' = 145153
				'about_Transactions' = 135192
				'about_Trap' = 136586
				'about_Try_Catch_Finally' = 113444
				'about_Type_Operators' = 113273
				'about_Types.ps1xml' = 113274
				'about_Variables' = 157591
				'about_While' = 113275
				'about_Wildcards' = 113276
				'about_Windows_Powershell_2.0' = 113247
				'about_Windows_PowerShell_ISE' = 135178
				'about_WMI_Cmdlets' = 145766
				'about_WS-Management_Cmdlets' = 145774
			}

			$outBuffer = $null
			if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer))
			{
				$PSBoundParameters['OutBuffer'] = 1
			}

			$wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Get-Help', [System.Management.Automation.CommandTypes]::Cmdlet)

			if($Name -like 'about_*' -AND $about."$name" -AND $Online)
			{
				Start-Process ("$OnlineBaseHelpUrl" + $about."$name")
				continue
			}

			$scriptCmd = {& $wrappedCmd @PSBoundParameters }
			$steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin)
			$steppablePipeline.Begin($PSCmdlet)

			} 
		catch
		{
			throw
		}
	}

	
	process
	{
		try
		{        
			$steppablePipeline.Process($_)
		}
		catch 
		{
			throw
		}
	}

	
	end
	{
		try 
		{
			$steppablePipeline.End()
		}
		catch 
		{
			throw
		}
	}
}
