Dmitry Nefedov
3 years ago
committed by
GitHub
1 changed files with 0 additions and 177 deletions
@ -1,177 +0,0 @@ |
|||
<# |
|||
.SYNOPSIS |
|||
The TAB completion for functions and their arguments |
|||
|
|||
Version: v5.12.4 |
|||
Date: 05.10.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", UninstallUWPApps |
|||
|
|||
.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 v5.12.4 | Made with $([char]::ConvertFromUtf32(0x1F497)) of Windows | $([char]0x00A9) farag & Inestic, 2014–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} |
|||
|
|||
# If a module command is PinToStart |
|||
if ($Command -eq "PinToStart") |
|||
{ |
|||
# Get all command arguments, excluding defaults |
|||
foreach ($ParameterSet in $ParameterSets.Name) |
|||
{ |
|||
# If an argument is Tiles |
|||
if ($ParameterSet -eq "Tiles") |
|||
{ |
|||
$ValidValues = ((Get-Command -Name PinToStart).Parametersets.Parameters | Where-Object -FilterScript {$null -eq $_.Attributes.AliasNames}).Attributes.ValidValues |
|||
foreach ($ValidValue in $ValidValues) |
|||
{ |
|||
# The "PinToStart -Tiles <function>" construction |
|||
"PinToStart" + " " + "-" + $ParameterSet + " " + $ValidValue | Where-Object -FilterScript {$_ -like "*$wordToComplete*"} | ForEach-Object -Process {"`"$_`""} |
|||
} |
|||
|
|||
# The "PinToStart -Tiles <functions>" construction |
|||
"PinToStart" + " " + "-" + $ParameterSet + " " + ($ValidValues -join ", ") | Where-Object -FilterScript {$_ -like "*$wordToComplete*"} | ForEach-Object -Process {"`"$_`""} |
|||
} |
|||
|
|||
continue |
|||
} |
|||
} |
|||
|
|||
# If a module command is UnpinTaskbarShortcuts |
|||
if ($Command -eq "UnpinTaskbarShortcuts") |
|||
{ |
|||
# Get all command arguments, excluding defaults |
|||
foreach ($ParameterSet in $ParameterSets.Name) |
|||
{ |
|||
# If an argument is Shortcuts |
|||
if ($ParameterSet -eq "Shortcuts") |
|||
{ |
|||
$ValidValues = ((Get-Command -Name UnpinTaskbarShortcuts).Parametersets.Parameters | Where-Object -FilterScript {$null -eq $_.Attributes.AliasNames}).Attributes.ValidValues |
|||
foreach ($ValidValue in $ValidValues) |
|||
{ |
|||
# The "UnpinTaskbarShortcuts -Shortcuts <function>" construction |
|||
"UnpinTaskbarShortcuts" + " " + "-" + $ParameterSet + " " + $ValidValue | Where-Object -FilterScript {$_ -like "*$wordToComplete*"} | ForEach-Object -Process {"`"$_`""} |
|||
} |
|||
|
|||
# The "UnpinTaskbarShortcuts -Shortcuts <functions>" construction |
|||
"UnpinTaskbarShortcuts" + " " + "-" + $ParameterSet + " " + ($ValidValues -join ", ") | Where-Object -FilterScript {$_ -like "*$wordToComplete*"} | ForEach-Object -Process {"`"$_`""} |
|||
} |
|||
|
|||
continue |
|||
} |
|||
} |
|||
|
|||
# If a module command is UninstallUWPApps |
|||
if ($Command -eq "UninstallUWPApps") |
|||
{ |
|||
(Get-Command -Name $Command).Name | Where-Object -FilterScript {$_ -like "*$wordToComplete*"} |
|||
|
|||
# Get all command arguments, excluding defaults |
|||
foreach ($ParameterSet in $ParameterSets.Name) |
|||
{ |
|||
# If an argument is ForAllUsers |
|||
if ($ParameterSet -eq "ForAllUsers") |
|||
{ |
|||
# The "UninstallUWPApps -ForAllUsers" construction |
|||
"UninstallUWPApps" + " " + "-" + $ParameterSet | Where-Object -FilterScript {$_ -like "*$wordToComplete*"} | ForEach-Object -Process {"`"$_`""} |
|||
} |
|||
|
|||
continue |
|||
} |
|||
} |
|||
|
|||
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 "UninstallUWPApps, `"PinToStart -UnpinAll`"" -Verbose |
|||
Write-Verbose -Message "`"Set-Association -ProgramPath ```"%ProgramFiles%\Notepad++\notepad++.exe```" -Extension .txt -Icon ```"%ProgramFiles%\Notepad++\notepad++.exe,0```"`"" -Verbose |
Loading…
Reference in new issue