#Updatet all the things function allupdates { Write-Host "Beginne mit dem Update aller Pakete..." -ForegroundColor Blue winget upgrade --all Remove-Item C:\Users\Public\Desktop\*.lnk if (Get-Module -ListAvailable -Name PSWindowsUpdate) { Write-Host "Installiere Windows Updates..." -ForegroundColor Blue Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -IgnoreReboot # ooshutup10 ausführen. Manchmal werden settings nach Windos updates zurückgesetzt Write-Host "Spiele aktuelle OOSHUTUP10 config ein... " -ForegroundColor Blue Set-Location $HOME/.winconfig ; ./OOSU10.exe configs/ooshutup10/ooshutup10.cfg /quiet Write-Host "Ziehe aktuelle winconfig von git..." -ForegroundColor Blue Set-Location $HOME/.winconfig ; git pull Write-Host "Aktuallisiere AutoHokey Scripts ..." -ForegroundColor Blue $sourceDir = "$HOME\.winconfig\configs\autohotkey" $targetDir = "$HOME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" Get-ChildItem -Path $targetDir -Filter *.ahk -Recurse | Remove-Item -Force -ErrorAction SilentlyContinue Get-ChildItem -Path $sourceDir | ForEach-Object { $linkPath = Join-Path $targetDir $_.Name New-Item -ItemType SymbolicLink -Path $linkPath -Target $_.FullName -ErrorAction SilentlyContinue | Out-Null } Write-Host "Update aller Powershell Module..." -ForegroundColor Blue Write-Host -ForegroundColor Blue '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)" } } } } } } }