Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
function UninstallUWPApps
{
    Add-Type -AssemblyName PresentationCore, PresentationFramework
 
    #region Variables
    # ArrayList containing the UWP apps to remove
    # Массив имен UWP-приложений для удаления
    $AppxPackages = New-Object -TypeName System.Collections.ArrayList($null)
 
    # List of UWP apps that won't be recommended for removal
    # UWP-приложения, которые не будут отмечены на удаление по умолчанию
    $UncheckedAppxPackages = @(
        # AMD Radeon UWP panel
        # UWP-панель AMD Radeon
        "AdvancedMicroDevicesInc*",
 
        # Intel Graphics Control Center
        # UWP-панель Intel
        "AppUp.IntelGraphicsControlPanel",
        "AppUp.IntelGraphicsExperience",
 
        # Sticky Notes
        # Записки
        "Microsoft.MicrosoftStickyNotes",
 
        # Screen Sketch
        # Набросок на фрагменте экрана
        "Microsoft.ScreenSketch",
 
        # Photos (and Video Editor)
        # Фотографии и Видеоредактор
        "Microsoft.Windows.Photos",
        "Microsoft.Photos.MediaEngineDLC",
 
        # Calculator
        # Калькулятор
        "Microsoft.WindowsCalculator",
 
        # Xbox Identity Provider
        # Поставщик удостоверений Xbox
        "Microsoft.XboxIdentityProvider",
 
        # Xbox
        # Компаньон консоли Xbox
        "Microsoft.XboxApp",
 
        # Xbox (beta version)
        # Xbox (бета-версия)
        "Microsoft.GamingApp",
        "Microsoft.GamingServices",
 
        # Xbox TCUI
        "Microsoft.Xbox.TCUI",
 
        # Xbox Speech To Text Overlay
        "Microsoft.XboxSpeechToTextOverlay",
 
        # Xbox Game Bar
        "Microsoft.XboxGamingOverlay",
 
        # Xbox Game Bar Plugin
        "Microsoft.XboxGameOverlay",
 
        # NVIDIA Control Panel
        # Панель управления NVidia
        "NVIDIACorp.NVIDIAControlPanel",
 
        # Realtek Audio Console
        "RealtekSemiconductorCorp.RealtekAudioControl"
    )
 
    # The following UWP apps will be excluded from the display
    # Следующие UWP-приложения будут исключены из отображения
    $ExcludedAppxPackages = @(
        # Microsoft Desktop App Installer
        "Microsoft.DesktopAppInstaller",
 
        # Store Experience Host
        # Узел для покупок Microsoft Store
        "Microsoft.StorePurchaseApp",
 
        # Microsoft Store
        "Microsoft.WindowsStore",
 
        # Web Media Extensions
        # Расширения для интернет-мультимедиа
        "Microsoft.WebMediaExtensions"
    )
    #endregion Variables
 
    #region XAML Markup
    [xml]$XAML = '
    <Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Name="Window"
        MinHeight="450" MinWidth="400"
        SizeToContent="Width" WindowStartupLocation="CenterScreen"
        TextOptions.TextFormattingMode="Display" SnapsToDevicePixels="True"
        FontFamily="Segoe UI" FontSize="12" ShowInTaskbar="False">
        <Window.Resources>
            <Style TargetType="StackPanel">
                <Setter Property="Orientation" Value="Horizontal"/>
            </Style>
            <Style TargetType="CheckBox">
                <Setter Property="Margin" Value="10, 10, 5, 10"/>
                <Setter Property="IsChecked" Value="True"/>
            </Style>
            <Style TargetType="TextBlock">
                <Setter Property="Margin" Value="5, 10, 10, 10"/>
            </Style>
            <Style TargetType="Button">
                <Setter Property="Margin" Value="20"/>
                <Setter Property="Padding" Value="10"/>
            </Style>
        </Window.Resources>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid Grid.Row="0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <StackPanel Grid.Column="1" Orientation="Horizontal">
                    <CheckBox Name="CheckboxRemoveAll" IsChecked="False"/>
                    <TextBlock Name="TextblockRemoveAll"/>
                </StackPanel>
            </Grid>
            <ScrollViewer Name="Scroll" Grid.Row="1"
                HorizontalScrollBarVisibility="Disabled"
                VerticalScrollBarVisibility="Auto">
                <StackPanel Name="PanelContainer" Orientation="Vertical"/>
            </ScrollViewer>
            <Button Name="Button" Grid.Row="2"/>
        </Grid>
    </Window>
    '
    #endregion XAML Markup
 
    $Reader = (New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML)
    $Form = [Windows.Markup.XamlReader]::Load($Reader)
    $XAML.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object -Process {
        Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name) -Scope Global
    }
 
    #region Functions
    function Get-CheckboxClicked
    {
        [CmdletBinding()]
        param
        (
            [Parameter(
                Mandatory = $true,
                ValueFromPipeline = $true
            )]
            [ValidateNotNull()]
            $CheckBox
        )
 
        $displayN = $CheckBox.Parent.Children[1].Text
        $AppxName = ($Packages | ? DisplayName -EQ $displayN).Name
 
        if ($CheckBox.IsChecked)
        {
            [void]$AppxPackages.Add($AppxName)
        }
        else
        {
            [void]$AppxPackages.Remove($AppxName)
        }
        if ($AppxPackages.Count -gt 0)
        {
            $Button.IsEnabled = $true
        }
        else
        {
            $Button.IsEnabled = $false
        }
    }
 
    function UninstallButton
    {
        [void]$Window.Close()
        $OFS = "|"
        if ($CheckboxRemoveAll.IsChecked)
        {
            Get-AppxPackage -PackageTypeFilter Bundle -AllUsers | Where-Object -FilterScript {$_.Name -cmatch $AppxPackages} | Remove-AppxPackage -AllUsers -Verbose -WhatIf
        }
        else
        {
            Get-AppxPackage -PackageTypeFilter Bundle | Where-Object -FilterScript {$_.Name -cmatch $AppxPackages} | Remove-AppxPackage -Verbose -WhatIf
        }
        $OFS = " "
    }
 
    function Add-AppxControl
    {
        [CmdletBinding()]
        param
        (
            [Parameter(
                Mandatory = $true,
                ValueFromPipeline = $true
            )]
            [ValidateNotNull()]
            $Packages
        )
 
         process {
            $CheckBox = New-Object -TypeName System.Windows.Controls.CheckBox
            $CheckBox.Add_Click({Get-CheckboxClicked -CheckBox $_.Source})
 
            $TextBlock = New-Object -TypeName System.Windows.Controls.TextBlock
            $TextBlock.Text = $Packages.DisplayName
 
            $StackPanel = New-Object -TypeName System.Windows.Controls.StackPanel
            [void]$StackPanel.Children.Add($CheckBox)
            [void]$StackPanel.Children.Add($TextBlock)
 
            [void]$PanelContainer.Children.Add($StackPanel)
 
            if ($UncheckedAppxPackages.Contains($Packages.Name))
            {
                $CheckBox.IsChecked = $false
                # Exit function, item is not checked
                # Выход из функции, если элемент не выделен
                return
            }
 
            # If package checked, add to the array list to uninstall
            # Если пакет выделен, то добавить в массив для удаления
            [void]$AppxPackages.Add($Packages.Name)
        }
    }
    #endregion Functions
 
    $NonSystemAppxPackages = Get-AppxPackage -PackageTypeFilter Bundle
    $PackageManager = [Windows.Management.Deployment.PackageManager]::new()
    $Packages = $PackageManager.FindPackages() | Select-Object DisplayName -ExpandProperty Id
 
    #region Events Handlers
    # Window Loaded Event
    $Window.Add_Loaded({
        $OFS = "|"
        $Packages | ? {($_.Name -in $NonSystemAppxPackages.Name) -and ($_.Name -notin $ExcludedAppxPackages) -and $_.DisplayName} | Add-AppxControl
        $OFS = " "
    })
 
    # Button Click Event
    $Button.Add_Click({UninstallButton})
    #endregion Events Handlers
 
    if ($Packages | Where-Object -FilterScript {$_.Name -cnotmatch ($ExcludedAppxPackages -join "|")})
    {
        Write-Verbose -Message "DialogBoxOpening" -Verbose
 
        $TextblockRemoveAll.Text = "UninstallUWPForAll"
        $Window.Title = "UninstallUWPTitle"
        $Button.Content = "Uninstall"
 
        # Display the dialog box
        # Отобразить диалоговое окно
        $Form.ShowDialog() | Out-Null
    }
    else
    {
        Write-Verbose -Message "NoData" -Verbose
    }
}
cls
UninstallUWPApps

Всего записей: 3522 | Зарегистр. 16-08-2012 | Отправлено: 23:15 25-01-2021
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru