<# SSRS / PBIRS #> Register-ArgumentCompleter -ParameterName ReportServerUri -ScriptBlock { "http://localhost:8016/Reports_SQL2016", 'http://localhost:8081/PBIRServer' | ForEach-Object { $CompletionText = $_ New-Object System.Management.Automation.CompletionResult ( $CompletionText, $_, 'ParameterValue', "$_ (SSRSInstance)" ) } }; <# When the Parameter is called -Destination we do this #> Register-ArgumentCompleter -ParameterName Destination -ScriptBlock { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) if ($fakeBoundParameter.ContainsKey('ReportServerUri')) { (Get-RsFolderContent -ReportServerUri $($fakeBoundParameter.ReportServerUri) -Path /).Name | ForEach-Object { $CompletionText = $_ New-Object System.Management.Automation.CompletionResult ( $CompletionText, $_, 'ParameterValue', "$_ (SSRS Item)" ) } } }; <# When the Parameter is called -Path we do this #> Register-ArgumentCompleter -ParameterName RsFolder -ScriptBlock { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) if ($fakeBoundParameter.ContainsKey('ReportServerUri')) { (Get-RsFolderContent -ReportServerUri $($fakeBoundParameter.ReportServerUri) -Path /).Name | ForEach-Object { $CompletionText = $_ New-Object System.Management.Automation.CompletionResult ( $CompletionText, $_, 'ParameterValue', "$_ (SSRS Item)" ) } } }; <# When the Parameter is called -DestinationFolder we do this #> Register-ArgumentCompleter -ParameterName DestinationFolder -ScriptBlock { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) if ($fakeBoundParameter.ContainsKey('ReportServerUri')) { (Get-RsFolderContent -ReportServerUri $($fakeBoundParameter.ReportServerUri) -Path /).Name | ForEach-Object { $CompletionText = $_ New-Object System.Management.Automation.CompletionResult ( $CompletionText, $_, 'ParameterValue', "$_ (SSRS Item)" ) } } };