<#
    .SYNOPSIS
    Checks whether the running system is a QEMU virtual machine.
#>
function Test-Qemu {
    ((Get-WmiObject win32_computersystem).Manufacturer) -eq "QEMU";
}

<#
    .SYNOPSIS
    Checks whether the active session is executed with admin rights.
#>
function Test-Admin {
    net session 2> $null | Out-Null;
    return $?;
}

<#
    .SYNOPSIS
    Removes desktop icons which apply to the specified pattern.

    .PARAMETER Pattern
    The pattern to match the icons to delete.
#>
function Remove-DesktopIcon {
    param(
        [string] $Pattern
    )

    $path = "Desktop/$Pattern";

    foreach ($userDir in @("~", $env:PUBLIC, "$env:SystemDrive/Users/Default")) {
        $fullName = "$userDir/$path";

        if (Test-Path -PathType Leaf $fullName) {
            Remove-Item -Force $fullName;
        }
    }
}

<#
    .SYNOPSIS
    Adds a new shortcut to the start menu.

    .PARAMETER Name
    The name of the icon to create.

    .PARAMETER Target
    The file to link to.
#>
function Add-StartMenuIcon {
    param(
        [string] $Name,
        [string] $Target
    )

    Import-Module KnownFolders;
    Import-Module "$env:ChocolateyInstall/helpers/chocolateyInstaller.psm1";
    Install-ChocolateyShortcut -ShortcutFilePath "$((Get-KnownFolder "Common Programs").Path)/$Name.lnk" -TargetPath ((Get-Item $Target).FullName);
}

<#
    .SYNOPSIS
    Removes icons from the task bar.

    .PARAMETER Pattern
    The pattern of the icon names to remove.
#>
function Remove-TaskbarItem {
    param(
        [string] $Pattern
    )

    Import-Module -UseWindowsPowerShell PinnedItem;
    Get-PinnedItem -Type TaskBar | Where-Object { $_.Name -like "$Pattern" } | ForEach-Object { Remove-PinnedItem $_ };
}