<#
. SYNOPSIS
The TAB completion for functions and their arguments
Version : v5 . 2 . 19
Date : 15 . 12 . 2021
Copyright ( c ) 2014 — 2021 farag
Copyright ( c ) 2019 — 2021 farag & Inestic
Thanks to all https : / / forum . ru-board . com members involved
. DESCRIPTION
Dot source the script first : . . \ Function . ps1 ( with a dot at the beginning )
Start typing any characters contained in the function ' s name or its arguments , and press the TAB button
. EXAMPLE
Sophia -Functions < tab >
Sophia -Functions temp < tab >
Sophia -Functions " DiagTrackService -Disable " , " DiagnosticDataLevel -Minimal "
. NOTES
Set execution policy to be able to run scripts only in the current PowerShell session :
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
. NOTES
Separate functions with a comma
. LINK
https : / / github . com / farag2 / Sophia-Script -for -Windows
#>
#Requires -RunAsAdministrator
#Requires -Version 5.1
function Sophia
{
[ CmdletBinding ( ) ]
param
(
[ Parameter ( Mandatory = $false ) ]
[string[]]
$Functions
)
foreach ( $Function in $Functions )
{
Invoke-Expression -Command $Function
}
# The "RefreshEnvironment" and "Errors" functions will be executed at the end
Invoke-Command -ScriptBlock { RefreshEnvironment ; Errors }
}
Clear-Host
$Host . UI . RawUI . WindowTitle = " Sophia Script for Windows 10 LTSC v5.2.19 | Made with $( [char] :: ConvertFromUtf32 ( 0x1F497 ) ) of Windows 10 | $( [char] 0x00A9 ) farag & Inestic, 2014 $( [char] 0x2013 ) 2021 "
Remove-Module -Name Sophia -Force -ErrorAction Ignore
Import-Module -Name $PSScriptRoot \ Manifest \ Sophia . psd1 -PassThru -Force
Import-LocalizedData -BindingVariable Global: Localization -FileName Sophia -BaseDirectory $PSScriptRoot \ Localizations
# The mandatory checkings. Please, do not comment out this function
# Обязательные проверки. Пожалуйста, не комментируйте данную функцию
Checkings
$Parameters = @ {
CommandName = " Sophia "
ParameterName = " Functions "
ScriptBlock = {
param
(
$commandName ,
$parameterName ,
$wordToComplete ,
$commandAst ,
$fakeBoundParameters
)
# Get functions list with arguments to complete
$Commands = ( Get-Module -Name Sophia ) . ExportedCommands . Keys
foreach ( $Command in $Commands )
{
$ParameterSets = ( Get-Command -Name $Command ) . Parametersets . Parameters | Where-Object -FilterScript { $null -eq $_ . Attributes . AliasNames }
foreach ( $ParameterSet in $ParameterSets . Name )
{
# The "Function -Argument" construction
$Command + " " + " - " + $ParameterSet | Where-Object -FilterScript { $_ -like " * $ wordToComplete* " } | ForEach-Object -Process { " `" $ _ `" " }
continue
}
# Get functions list without arguments to complete
Get-Command -Name $Command | Where-Object -FilterScript { $null -eq $_ . Parametersets . Parameters } | Where-Object -FilterScript { $_ . Name -like " * $ wordToComplete* " }
continue
}
}
}
Register-ArgumentCompleter @Parameters
Write-Information -MessageData " " -InformationAction Continue
Write-Verbose -Message " Sophia -Functions <tab> " -Verbose
Write-Verbose -Message " Sophia -Functions temp<tab> " -Verbose
Write-Verbose -Message " Sophia -Functions `" DiagTrackService -Disable `" , `" DiagnosticDataLevel -Minimal `" , UninstallUWPApps " -Verbose
Write-Information -MessageData " " -InformationAction Continue
Write-Verbose -Message " `" Set-Association -ProgramPath `` `" %ProgramFiles%\Notepad++\notepad++.exe `` `" -Extension .txt -Icon `` `" %ProgramFiles%\Notepad++\notepad++.exe,0 `` `" `" " -Verbose