Script to setup Windows 10 1903
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

109 lines
3.4 KiB

<#
.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