vendredi 19 novembre 2021

(POWERSHELL) WINDOWS 10 - Supprimer les applications du Windows Store pour alléger les configurations

 # Functions

function Write-LogEntry {

    param(

        [parameter(Mandatory=$true, HelpMessage="Value added to the RemovedApps.log file.")]

        [ValidateNotNullOrEmpty()]

        [string]$Value,


        [parameter(Mandatory=$false, HelpMessage="Name of the log file that the entry will written to.")]

        [ValidateNotNullOrEmpty()]

        [string]$FileName = "RemovedApps.log"

    )

    # Determine log file location

    $LogFilePath = Join-Path -Path $env:windir -ChildPath "Temp\$($FileName)"


    # Add value to log file

    try {

        Out-File -InputObject $Value -Append -NoClobber -Encoding Default -FilePath $LogFilePath -ErrorAction Stop

    }

    catch [System.Exception] {

        Write-Warning -Message "Unable to append log entry to RemovedApps.log file"

    }

}


# Get a list of all apps

Write-LogEntry -Value "Starting built-in AppxPackage, AppxProvisioningPackage and Feature on Demand V2 removal process"

$AppArrayList = Get-AppxPackage -PackageTypeFilter Bundle -AllUsers | Select-Object -Property Name, PackageFullName | Sort-Object -Property Name


# White list of appx packages to keep installed

$WhiteListedApps = @(

    "Microsoft.DesktopAppInstaller", 

    "Microsoft.Messaging", 

    "Microsoft.MSPaint",

    "Microsoft.Windows.Photos",

    "Microsoft.StorePurchaseApp",

    "Microsoft.MicrosoftOfficeHub",

    "Microsoft.MicrosoftStickyNotes",

    "Microsoft.WindowsAlarms",

    "Microsoft.WindowsCalculator", 

#    "Microsoft.WindowsCommunicationsApps", # Mail, Calendar etc

    "Microsoft.WindowsSoundRecorder" 

#    "Microsoft.WindowsStore"

)


# Loop through the list of appx packages

foreach ($App in $AppArrayList) {

    # If application name not in appx package white list, remove AppxPackage and AppxProvisioningPackage

    if (($App.Name -in $WhiteListedApps)) {

        Write-LogEntry -Value "Skipping excluded application package: $($App.Name)"

    }

    else {

        # Gather package names

        $AppPackageFullName = Get-AppxPackage -Name $App.Name | Select-Object -ExpandProperty PackageFullName -First 1

        $AppProvisioningPackageName = Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -like $App.Name } | Select-Object -ExpandProperty PackageName -First 1


        # Attempt to remove AppxPackage

        if ($AppPackageFullName -ne $null) {

            try {

                Write-LogEntry -Value "Removing AppxPackage: $($AppPackageFullName)"

                Remove-AppxPackage -Package $AppPackageFullName -ErrorAction Stop | Out-Null

            }

            catch [System.Exception] {

                Write-LogEntry -Value "Removing AppxPackage '$($AppPackageFullName)' failed: $($_.Exception.Message)"

            }

        }

        else {

            Write-LogEntry -Value "Unable to locate AppxPackage: $($AppPackageFullName)"

        }


        # Attempt to remove AppxProvisioningPackage

        if ($AppProvisioningPackageName -ne $null) {

            try {

                Write-LogEntry -Value "Removing AppxProvisioningPackage: $($AppProvisioningPackageName)"

                Remove-AppxProvisionedPackage -PackageName $AppProvisioningPackageName -Online -ErrorAction Stop | Out-Null

            }

            catch [System.Exception] {

                Write-LogEntry -Value "Removing AppxProvisioningPackage '$($AppProvisioningPackageName)' failed: $($_.Exception.Message)"

            }

        }

        else {

            Write-LogEntry -Value "Unable to locate AppxProvisioningPackage: $($AppProvisioningPackageName)"

        }

    }

}


# White list of Features On Demand V2 packages

Write-LogEntry -Value "Starting Features on Demand V2 removal process"

$WhiteListOnDemand = "NetFX3|Tools.Graphics.DirectX|Tools.DeveloperMode.Core|Language|Browser.InternetExplorer|ContactSupport|OneCoreUAP|Media.WindowsMediaPlayer"


# Get Features On Demand that should be removed

try {

    $OSBuildNumber = Get-WmiObject -Class "Win32_OperatingSystem" | Select-Object -ExpandProperty BuildNumber


    # Handle cmdlet limitations for older OS builds

    if ($OSBuildNumber -le "16299") {

        $OnDemandFeatures = Get-WindowsCapability -Online -ErrorAction Stop | Where-Object { $_.Name -notmatch $WhiteListOnDemand -and $_.State -like "Installed"} | Select-Object -ExpandProperty Name

    }

    else {

        $OnDemandFeatures = Get-WindowsCapability -Online -LimitAccess -ErrorAction Stop | Where-Object { $_.Name -notmatch $WhiteListOnDemand -and $_.State -like "Installed"} | Select-Object -ExpandProperty Name

    }


    foreach ($Feature in $OnDemandFeatures) {

        try {

            Write-LogEntry -Value "Removing Feature on Demand V2 package: $($Feature)"


            # Handle cmdlet limitations for older OS builds

            if ($OSBuildNumber -le "16299") {

                Get-WindowsCapability -Online -ErrorAction Stop | Where-Object { $_.Name -like $Feature } | Remove-WindowsCapability -Online -ErrorAction Stop | Out-Null

            }

            else {

                Get-WindowsCapability -Online -LimitAccess -ErrorAction Stop | Where-Object { $_.Name -like $Feature } | Remove-WindowsCapability -Online -ErrorAction Stop | Out-Null

            }

        }

        catch [System.Exception] {

            Write-LogEntry -Value "Removing Feature on Demand V2 package failed: $($_.Exception.Message)"

        }

    }    

}

catch [System.Exception] {

    Write-LogEntry -Value "Attempting to list Feature on Demand V2 packages failed: $($_.Exception.Message)"

}


# Complete

Write-LogEntry -Value "Completed built-in AppxPackage, AppxProvisioningPackage and Feature on Demand V2 removal process"


ALTERNATIVE très intéressante  : Windows 10 Debloater

https://github.com/Sycnex/Windows10Debloater

jeudi 18 novembre 2021

Exchange (Office 365) & Powershell - Gestion des groupes de distribution dynamiques

 1) Préalable pour se connecter à Exchange (Office 365)

Install-Module -Name ExchangeOnlineManagement

(si ce n'est pas déjà fait)

2) Se connecter à Exchange (Office 365)

Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -UserPrincipalName moncompteadmin@mondomaine.com


Voir l'ensemble des boites aux lettres appartenant au groupe de distribution dynamique

Get-Recipient -Filter (Get-DynamicDistributionGroup “groupedynamique@mondomaine.com”).RecipientFilter


Créer un groupe dynamique contenant l'ensemble des boites mails des utilisateurs 

Set-DynamicDistributionGroup -Identity groupedynamique@mondomaine.com -RecipientFilter {(RecipientType -eq 'UserMailbox') -and (-not(RecipientTypeDetails -eq 'SharedMailbox')) -and (-not(RecipientTypeDetails -eq 'RoomMailbox')) -and (-not(RecipientTypeDetails -eq 'MailContact')) -and (-not(RecipientTypeDetails -eq 'DynamicDistributionGroup')) -and (-not(RecipientTypeDetails -eq 'EquipmentMailbox')) }

Par ces paramètres on élimine :
  • Les boites aux lettres partagées
  • Les boites aux lettres de salles
  • Les boites aux lettres des contacts
  • Les boites aux lettres de groupes de distribution dynamiques
  • Les boites aux lettres d'équipement

Connaitre les filtres appliqués sur un groupe de distribution dynamique

Get-DynamicDistributionGroup -Identity groupedynamique@mondomaine.com | fl Name,RecipientFilter















vendredi 10 août 2018

Désactiver l’autoconfiguration IP dans Windows - Invite de commande

1. Repérer l'identifiant (IDX) de la carte réseau 

netsh interface ipv4 show inter

2. Saisir la commande 

netsh interface ipv4 set interface [IDX de la carte réseau] dadtransmits=0 store=persistent


mardi 16 mai 2017

Ransomware WANNACRY : les moyens de se protéger Ransonware

Il est fort probable que mon article ne fait pas entièrement le tour du sujet, il est là pour vous simplifier la vie et d'appliquer le plus rapidement possible des solutions correctives...
A bon entendeur...

Sources d’informations importantes

Désactivation du protocole SMB V1

https://support.microsoft.com/fr-fr/kb/2696547

Serveurs SMB

Windows 8 et Windows Server 2012

Lancer Windows Powershell :
Set-SmbServerConfiguration -EnableSMB1Protocol $false

Windows 7, Windows Server 2008 R2, Windows Vista et Windows Server 2008

Lancer Windows Powershell :
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force


Clients SMB

Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8 et Windows Server 2012

Lancer le mode de commande (CMD.EXE)
SC.exe config lanmanworkstation depend = bowser/mrxsmb20/nsi
SC.exe config mrxsmb10 start = disabled

Windows 8.1, Windows 10, 2012 R2 de Windows et Windows Server 2016

Systèmes d’exploitation serveurs
Lancer Windows Powershell :
Remove-WindowsFeature FS-SMB1

Systèmes d’exploitation clients
Lancer Windows Powershell :
Disable-WindowsOptionalFeature –Online –Featurename SMB1Protocol



mercredi 5 avril 2017

Windows 10 : Erreur lorsque l'on est administrateur de son poste sur certaines applications : Impossible d'ouvrir ..... à l'aide du compte Administrateur intégré. Connectez-vous avec avec l'aide d'un autre compte puis réssayez

Typiquement nous avons eu ce message d'erreur lors d'une tentative d'ouverture de Microsoft Edge sur un compte du domaine qui est également administrateur local du poste : 

 Impossible d'ouvrir microsoft Edge à l'aide du compte Administrateur intégré. 
Connectez-vous avec avec l'aide d'un autre compte puis réssayez 

 Malgré les instructions de modification de la base du registre ci-joint, le problème persiste : 

Lancez l'éditeur du Registre Windows.

  • Appuyez sur la touche Windows + R
  • Saisir regedit et OK.
  • Déroulez l'arborescence suivante en cliquant sur les + : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  • A droite, vérifiez que EnableLUA soit à 1
  • Si la valeur FilterAdministratorToken est existant, positionnez la à 1.


 La solution trouvée est de lancer Powershell en mode administration et de taper la commande suivante (il faudra patienter un peu pour que l'ensemble des opérations soient effectifs) : 

Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"} 


Pensez bien a redémarrer l'ordinateur après l'application de cette commande powershell.

lundi 8 février 2016

ORA-39126: + ORA-12899: (Problème lors d'un export datapump (expdp) d'une base ORACLE 12c vers ORACLE 11.2)

Lorsque vous effectuez un export d'une base Oracle 12c pour l'importer vers un serveur Oracle 11.2

exemple : expdp user/password@MySid SCHEMAS=MySchema DUMPFILE=MyFile.dmp VERSION=11.2 LOGFILE=MyLogFile.log DIRECTORY=MYDATAPUPDIR EXCLUDE=STATISTICS

l'export se termine avec une erreur du type :

ORA-39126: Erreur fatale inattendue du processus esclave dans KUPW$WORKER.FIXUP_MASTER_TABLE_EXPORT [TABLE_DATA:"C##PARAM"."SYS_EXPORT_SCHEMA_01"] 
ORA-12899: valeur trop grande pour la colonne "SYS"."KU$_DATAPUMP_MASTER_11_1"."PROCESSING_STATUS" (réelle : 3, maximum : 1)
ORA-06512: à "SYS.DBMS_SYS_ERROR", ligne 95
ORA-06512: à "SYS.KUPW$WORKER", ligne 11259
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
00007FFCA1A29F90     27116  package body SYS.KUPW$WORKER
00007FFCA1A29F90     11286  package body SYS.KUPW$WORKER
00007FFCA1A29F90     14133  package body SYS.KUPW$WORKER
00007FFCA1A29F90      3560  package body SYS.KUPW$WORKER
00007FFCA1A29F90     12049  package body SYS.KUPW$WORKER
00007FFCA1A29F90      2081  package body SYS.KUPW$WORKER
00007FFC80B20500         2  anonymous block
BULK COLLECT
BULK COLLECT
In procedure BUILD_OBJECT_STRINGS
In PROCESS_TABLE_DATA_METRICS
In procedure UPDATE_TD_BASE_PO_INFO
Updated 771 td objects with bpo
In procedure FIXUP_MASTER_TABLE_EXPORT Worker code version: 12.1.0.2.0 and compatibility version: 11
0 rows updated for template base object information
Using temporary master table "SYS"."KU$_DATAPUMP_MASTER_11_1" 
In procedure DETERMINE_FATAL_ERROR with ORA-12899: valeur trop grande pour la colonne "SYS"."KU$_DATAPUMP_MASTER_11_1"."PROCESSING_STATUS" (réelle : 3, maximum : 1)
Travail "C##PARAM"."SYS_EXPORT_SCHEMA_01" arrêté en raison d'une erreur fatale à Lun. Févr. 8 13:49:27 2016 elapsed 0 00:02:03

Solution :

Connectez vous à votre base via SQLPLUS  en SYSDBA

sqlplus User/Password@MySID as SYSDBA

lancez ensuite les scripts suivants :
SQL> @?/rdbms/admin/catproc.sql
SQL> @?/rdbms/admin/utlrp.sql

mardi 15 décembre 2015

WIndows Server 2012 R2 - Ralentissement du serveur après l'installation des services Kerberos (Local Security Authority Process occupe plus de 50% du CPU)

En activant les services Kerberos, il peut arriver que la majeure partie du processeur est occupé par ces services et attenants jusqu'à saturation de celui-ci. :

Local Security Authority Process occupe plus de 50% du CPU

Voici la solution que nous avons trouvés :

Dans l'éditeur des clés de registre (REGEDIT)

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters

Ajouter une nouvelle valeur DWORD 32 Bits :

MaxConcurrentApi 

La valeur doit être comprise entre 1 et 150 

Ajustez cette valeur en fonction de ce que vous remarquez au niveau de l'occupation du processeur.