Eigene Dateien für Funktionen und Aliase.

This commit is contained in:
2022-12-13 20:01:46 +01:00
parent 6ef91214f1
commit ba202cf3eb
4 changed files with 155 additions and 0 deletions

1
aliases.ps1 Normal file
View File

@@ -0,0 +1 @@
set-alias -name Update -value Update

150
functions.ps1 Normal file
View File

@@ -0,0 +1,150 @@
function Update {
Write-Host "Beginne mit dem Update aller Pakete..."
winget upgrade --all
remove-item ~\Desktop* -include *.lnk
if (Get-Module -ListAvailable -Name PSWindowsUpdate) {
Write-Host "Installiere Windows Updates..."
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -IgnoreReboot
Write-Host "Update aller Powershell Module..."
if ($SimulationMode) {
Write-Host -ForegroundColor yellow 'Simulation mode is ON, nothing will be installed / removed / updated'
}
Write-Host -ForegroundColor Cyan 'Get all PowerShell modules'
function Remove-OldPowerShellModules {
param (
[string]$ModuleName,
[string]$GalleryVersion
)
try {
$oldVersions = Get-InstalledModule -Name $ModuleName -AllVersions -ErrorAction Stop | Where-Object { $_.Version -ne $GalleryVersion }
foreach ($oldVersion in $oldVersions) {
Write-Host -ForegroundColor Cyan "$ModuleName - Uninstall previous version ($($oldVersion.Version))"
if (-not($SimulationMode)) {
Remove-Module $ModuleName -ErrorAction SilentlyContinue
Uninstall-Module $oldVersion -Force -ErrorAction Stop
}
}
}
catch {
Write-Warning "$module - $($_.Exception.Message)"
}
}
if ($IncludedModules) {
$modules = Get-InstalledModule | Where-Object { $IncludedModules -contains $_.Name }
}
else {
$modules = Get-InstalledModule
}
foreach ($module in $modules.Name) {
if ($ExcludedModules -contains $module) {
Write-Host -ForegroundColor Yellow "Module $module is excluded from the update process"
continue
}
elseif ($module -like "$excludedModules") {
Write-Host -ForegroundColor Yellow "Module $module is excluded from the update process (match $excludeModules)"
continue
}
$currentVersion = $null
try {
$currentVersion = (Get-InstalledModule -Name $module -AllVersions -ErrorAction Stop).Version
}
catch {
Write-Warning "$module - $($_.Exception.Message)"
continue
}
try {
$moduleGalleryInfo = Find-Module -Name $module -ErrorAction Stop
}
catch {
Write-Warning "$module not found in the PowerShell Gallery. $($_.Exception.Message)"
}
if ($null -eq $currentVersion) {
Write-Host -ForegroundColor Cyan "$module - Install from PowerShellGallery version $($moduleGalleryInfo.Version) - Release date: $($moduleGalleryInfo.PublishedDate)"
if (-not($SimulationMode)) {
try {
Install-Module -Name $module -Force -SkipPublisherCheck -ErrorAction Stop
}
catch {
Write-Warning "$module - $($_.Exception.Message)"
}
}
}
elseif ($moduleGalleryInfo.Version -eq $currentVersion) {
Write-Host -ForegroundColor Green "$module already in latest version: $currentVersion - Release date: $($moduleGalleryInfo.PublishedDate)"
}
elseif ($currentVersion.count -gt 1) {
Write-Host -ForegroundColor Yellow "$module is installed in $($currentVersion.count) versions (versions: $($currentVersion -join ' | '))"
Write-Host -ForegroundColor Cyan "$module - Uninstall previous $module version(s) below the latest version ($($moduleGalleryInfo.Version))"
Remove-OldPowerShellModules -ModuleName $module -GalleryVersion $moduleGalleryInfo.Version
# Check again the current Version as we uninstalled some old versions
$currentVersion = (Get-InstalledModule -Name $module).Version
if ($moduleGalleryInfo.Version -ne $currentVersion) {
Write-Host -ForegroundColor Cyan "$module - Install from PowerShellGallery version $($moduleGalleryInfo.Version) - Release date: $($moduleGalleryInfo.PublishedDate)"
if (-not($SimulationMode)) {
try {
Install-Module -Name $module -Force -ErrorAction Stop
Remove-OldPowerShellModules -ModuleName $module -GalleryVersion $moduleGalleryInfo.Version
}
catch {
Write-Warning "$module - $($_.Exception.Message)"
}
}
}
}
# https://invoke-thebrain.com/2018/12/comparing-version-numbers-powershell/
elseif ([version]$currentVersion -gt [version]$moduleGalleryInfo.Version) {
Write-Host -ForegroundColor Yellow "$module - the current version $currentVersion is newer than the version available on PowerShell Gallery $($moduleGalleryInfo.Version) (Release date: $($moduleGalleryInfo.PublishedDate)). Sometimes happens when you install a module from another repository or via .exe/.msi or if you change the version number manually."
}
elseif ([version]$currentVersion -lt [version]$moduleGalleryInfo.Version) {
Write-Host -ForegroundColor Cyan "$module - Update from PowerShellGallery version " -NoNewline
Write-Host -ForegroundColor White "$currentVersion -> $($moduleGalleryInfo.Version) " -NoNewline
Write-Host -ForegroundColor Cyan "- Release date: $($moduleGalleryInfo.PublishedDate)"
if (-not($SimulationMode)) {
try {
Update-Module -Name $module -Force -ErrorAction Stop
Remove-OldPowerShellModules -ModuleName $module -GalleryVersion $moduleGalleryInfo.Version
}
catch {
if ($_.Exception.Message -match 'Authenticode') {
Write-Host -ForegroundColor Yellow "$module - The module certificate used by the creator is either changed since the last module install or the module sign status has changed."
if ($SkipPublisherCheck.IsPresent) {
Write-Host -ForegroundColor Cyan "$module - SkipPublisherCheck Parameter is present, so install will run without Authenticode check"
Write-Host -ForegroundColor Cyan "$module - Install from PowerShellGallery version $($moduleGalleryInfo.Version) - Release date: $($moduleGalleryInfo.PublishedDate)"
try {
Install-Module -Name $module -Force -SkipPublisherCheck
}
catch {
Write-Warning "$module - $($_.Exception.Message)"
}
Remove-OldPowerShellModules -ModuleName $module -GalleryVersion $moduleGalleryInfo.Version
}
else {
Write-Warning "$module - If you want to update this module, run again with -SkipPublisherCheck switch, but please keep in mind the security risk"
}
}
else {
Write-Warning "$module - $($_.Exception.Message)"
}
}
}
}
}
}
}

View File

@@ -126,6 +126,7 @@ do {
Install-Script winfetch
mkdir ~/.config/winfetch
New-Item -Path "~/.config/winfetch/config.ps1" -ItemType SymbolicLink -Value "~/.winconfig/config.ps1"
New-Item -Path "~/Documents/WindowsPowerShell/profile.ps1" -ItemType SymbolicLink -Value "~/.winconfig/profile.ps1"
Read-Host "Bitte das Terminal / Powershell neu starten damit Winfetch funktioniert."
}

3
profile.ps1 Normal file
View File

@@ -0,0 +1,3 @@
# Lädt Funktionen aus der Ffunctions.ps1
Get-ChildItem ~/.winconfig/functions.ps1 | %{. $_ } | out-null
Get-ChildItem ~/.winconfig/aliases.ps1 | out-null