mardi 28 décembre 2021

CHOCOLATEY

Qu'est ce que CHOCOLATEY ?

 CHOCOLATEY est un gestionnaire d'installation et de déploiement de packages logiciels. Dédié au déploiement sous les systèmes d'exploitation Microsoft Windows, il permet de simplifier le téléchargement, l'installation, la mise à jour des applications. Chocolatey se base sur NuGet et Windows Powershell.

INSTALLATION

Le mieux est d'aller directement sur le site concerné :
https://chocolatey.org/install

RECHERCHER UN LOGICIEL

PS > choco search --by-id-only NomDuLogiciel

INSTALLER UN LOGICIEL

PS > choco install NomDuLogiciel -y

SUPPRIMER UN LOGICIEL

PS > choco uninstall NomDuLogiciel

MISES A JOUR :

Vérifier la disponibilité des mises à jour

PS > choco outdated

Mettre à jour un logiciel

PS > choco upgrade NomDuLogiciel -y

Mettre à jour tous les logiciels possèdant une mise à jour disponible

PS > choco upgrade all -y

LOGICIELS DEPLOYES PAR CHOCOLATEY

Lister les logiciels déployés via Chocolatey

PS > choco list -l

RESUME DES COMMANDES

  • config – récupère et configure les paramètres du fichier de configuration
  • Download – télécharge 
  • feature ou features – affiche et configure les fonctionnalités de choco
  • install – installe 
  • info – affiche les informations
  • list  – liste les installations distantes ou locales
  • new – génère les fichiers nécessaires pour un paquet chocolatey à partir d’un modèle
  • optimize – optimise l’installation et réduit l’utilisation de l’espace
  • outdated – affiche les paquets obsolètes. Similaire à choco upgrade all --noop
  • pack – converti un nuspec en un nupkg compilé
  • pin – supprime les mises à jour 
  • push – pousse un nupkg compilé
  • search - Recherche 
  • setapikey ou apikey – recupère ou sauvegarde une apikey depuis une source définie
  • sources ou source – affiche et configure les sources par défaut
  • support – fournit des informations de support
  • synchronize ou sync – se synchronise avec le logiciel installé sur le système – génère des packages manquants
  • uninstall – désinstalle un paquet
  • upgrade – met à jour des paquets
Il existe également une alternative afin d'utiliser OneGet de Microsoft :

https://github.com/HansOMartinsen/ChocolateyGet





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