Script Powershell pour trier ses vidéos

Je possède près d’un 1 To de vidéos sur un disque externe… lequel est régulièrement plein avec les nouveautés.

Je cherchais donc un moyen de pouvoir trier les trier facilement en les ouvrant une à une dans VLC histoire de voir quelques extraits et me rappeler l’histoire puis m’afficher un popup pour la conserver (choix par défaut) ou l’effacer.

Voici un petit script Powershell que j’ai fait pour l’occasion :

[void] [System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

# Demande de sélectionner un répertoire
$OpenFolderDialog = New-Object System.Windows.Forms.FolderBrowserDialog
$OpenFolderDialog.SelectedPath = [System.Environment+SpecialFolder]::UserProfile
$OpenFolderDialog.ShowDialog()
$SearchPath = $OpenFolderDialog.SelectedPath

# Parcours récursif du répertoire
$SearchDirInfo = New-Object System.IO.DirectoryInfo $SearchPath
$SearchEnumerator = $SearchDirInfo.EnumerateFiles("*", [System.IO.SearchOption]::AllDirectories).GetEnumerator()

foreach ($Result in $SearchEnumerator)
{
    # Affiche le chemin dans la console
    Write-Host "Found" $Result.FullName

    # Ouvre VLC
    & 'C:\Program Files\VideoLAN\VLC\vlc.exe' $Result.FullName | Out-Null

    # Pose la question de le conserver
    $Answer = [System.Windows.Forms.MessageBox]::Show( `
        [string]::Concat("Conserver ", $Result.Name, " ?"), `
        "Conserver le fichier ?", `
        [System.Windows.MessageBoxButton]::YesNo,
        [System.Windows.Forms.MessageBoxIcon]::Question,
        [System.Windows.Forms.MessageBoxDefaultButton]::Button1
    )

    if ($Answer -eq [System.Windows.MessageBoxResult]::Yes)
    {
        Write-Host "A garder !"
    }
    elseif ($Answer -eq [System.Windows.MessageBoxResult]::No)
    {
        Write-Host "A supprimer !"
        Remove-Item -Verbose $Result.FullName
    }
    else
    {
        Write-Error "Oops, réponse invalide"
        break
    }
}

Résultat, je le lance depuis l’explorateur (clic-droit > Exécuter avec Powershell), il me demande de sélectionner le répertoire de départ :

Capture-1

Puis, pour chaque vidéo, m’ouvre VLC pour que je visionne quelques extraits et, à la fermeture, pose la question de la conservation :

Capture-2

Si le script est ouvert depuis une invite Powershell, on peut voir clairement le chemin du fichier et s’il a était conservé ou supprimé :

Capture-2

Bonus : J’avais fait il y a quelques temps un script équivalent en shell, moins évolué et non documenté (pas drôle sinon). Il utilise zenity pour afficher le dialogue et indique également la date de création du fichier. Le voici :

#!/bin/sh
find "${PWD}" -type f | sort -R | while read -r f
do
    vlc --no-qt-error-dialogs  "${f}" >/dev/null
    dc="$(stat "${f}" | sed 's/\\/\\\\/')"
    if ! zenity --question --text="Conserver '${f}' ?\nDate de création : ${dc}" --no-wrap
    then
        rm -fv "${f}"
    fi
done

Utilisation :

cd /mnt/usb && sh script.sh

Kaspersky : Désactiver l’alerte pour certificat SSL auto-signé

Kaspersky Internet Security avertit par défaut lorsque l’on consulte un site avec un certificat SSL auto-signé :

Alerte Kaspersky SSL

Pratique au début, cela en devient vite pénible tellement le nombre de sites concernés est important. J’arrive rapidement à une bonne dizaine d’alertes en regardant mes flux RSS…

Pour le désactiver, deux possibilités : désactiver complètement l’inspection SSL ou uniquement le bloqueur de de pub + la navigation privée.

Désactiver l’inspection SSL

Dans les réglages de Kaspersky > Avancé > Réseaux, sélectionner « Ne pas analyser les connexions sécurisées ». Une demande de confirmation s’affichera :

Désactiver le bloqueur de pub et la navigation privée :

Dans les réglages de Kaspersky > Protection :

Kaspersky Désactive Analyse SSL

Dans les deux cas, à vos risques et périls car cela réduit forcément la sécurité 🙂

Windows + PHP : cURL error 60: SSL certificate problem: unable to get local issuer certificate

J’ai rencontré l’erreur suivante sous Windows 10 avec PHP 7.1 installé via Chocolatey :

[GuzzleHttp\Exception\RequestException]
cURL error 60: SSL certificate problem: unable to get local issuer certificate

Pour la corriger, deux étapes :

  1. Télécharger le fichier cacert.pem depuis curl.haxx.se/docs/caextract.html (lien direct) et le placer dans le répertoire d’installation de PHP (ici C:\tools\php71)
  2. Editer le fichier php.ini et préciser le chemin de cacert.pem :
    [curl]
    ; A default value for the CURLOPT_CAINFO option. This is required to be an
    ; absolute path.
    curl.cainfo = "C:\tools\php71\extras\ssl\cacert.pem"
    

Il est bien sûr possible de partager cacert entre plusieurs versions de PHP.

Ce fichier est un instantané du catalogue d’autorités de certification de Mozilla et évolue régulièrement. curl.haxx.se fournit sur son site un script pour l’extraire depuis une installation locale de Firefox.

Source : https://www.zen-cart.com/showthread.php?213892-Windows-server-Curl-error-(60)-SSL-Certificate-problem-Unable-to-get-local-issuer

Créer une image Windows 10 à jour

Sommaire :

  1. Télécharger l’image ISO de base
  2. Télécharger les mises à jour
  3. Créer l’ISO

Télécharger l’ISO

Se rendre sur www.microsoft.com/fr-fr/software-download/windows10 et télécharger l’outil.

Exécuter et demander à télécharger uniquement l’ISO :

Télécharger les mises à jour

WSUS Offline Update permet de télécharger toutes les mises à jour pour une version de Windows donnée. Il est capable de détecter celles déjà téléchargées.

Se rendre sur download.wsusoffline.net, télécharger et exécuter le programme. La dernière version à l’écriture de cet article est la 10.9.

Cocher la case correspondant à l’architecture souhaitée (x64 dans mon cas) :

000018-wsus-offline-update-10-9-generator
L’outil télécharge forcément les mises à jour pour toutes les langues

Inclure les définitions Defender :

000017-wsus-offline-update-10-9-generator

Comme vous pouvez le voir, on peut se limiter aux mises à jour de sécurité (« Use ‘security only updates’ instead of ‘quality rollups’ »)

Sélectionner un dossier comme destination en cochant Copy updates for selected products into directory :

000016-WSUS Offline Update 10.9 - Generator.png

Et cliquer sur le bouton Start. Vous pouvez aller faire une longue balade…

000007-wget-74-http___download-microsoft-com_download_1_6_b_16b06f60-3b20-4ff2-b699
WSUS Offline Update va télécharger une à une toutes les mises à jour disponibles, toutes langues confondues.

Une fois terminé, il vous propose de consulter les logs de téléchargement.

Créer l’ISO

Maintenant que l’ISO de base et les différentes mises à jour sont téléchargés, nous pouvons passer à la création de l’ISO.

Extraire les fichiers de l’ISO de Windows 10 (téléchargé avec MediaCreationTool depuis le site de Microsoft) par l’explorateur (en la montant) ou via 7-zip.

Télécharger NTlite sur son site officiel, l’installer et le lancer.

Ajouter le dossier où a été extraite l’ISO :

000026-ntlite

Une fois ajouté, on peut voir les différentes éditions disponibles :

000025-ntlite

Sélectionner l’édition qui vous intéresse et cliquer sur Charger (via clic-droit ou dans l’onglet « Image ») :

000027-ntlite

 

Le message suivant s’affiche, l’accepter :

Patienter un (long) instant pendant la conversion + lecture.

NTLite est très puissant, on peut s’en servir pour supprimer des langues, configurer les  fonctionnalités, etc. A noter que certaines fonctions sont réservées aux éditions payantes.

Passer dans l’onglet Mises à jour (section Intégrer) et ajouter le dossier où toutes les màj ont été téléchargées :

Une fenêtre d’erreur risque de s’afficher pour lister les mises à jour déjà embarquées ainsi que les fichiers qui n’en sont pas (tant pis pour Silverlight…). On peut l’ignorer.

Une fois la personnalisation terminée, aller dans Appliquer (section Terminer) et cocher les cases « Compression ESD » et « Créer l’ISO » puis lancer la création.

000031-NTLite.png

L’opération va prendre, pour changer, pas mal de temps. A l’issue de la première étape (« Intégration des mises à jour »), un popup s’affiche lorsque des mises à jour sont ignorées ou en erreur.

Utiliser ensuite un outil comme Rufus pour créer une clé USB à partir de l’ISO générée.

Windows Subsystem for Linux Distribution Switcher

Windows Subsystem for Linux (WSL) intègre par défaut l’environnement utilisateur d’Ubuntu suite à un partenariat avec Canonical.

Concrètement, lorsque WSL est installé et que bash est lancé pour la première fois, le rootfs d’Ubuntu 16.04 est décompressé dans le répertoire utilisateur (%AppLocalData%\lxss\rootfs). Exactement comme le ferait un OpenVZ ou (à peu près) Docker.

Le projet Windows Subsystem for Linux Distribution Switcher – indépendant de Microsoft – permet de remplacer le rootfs d’Ubuntu par celui d’autres distributions. Il ne s’agit uniquement de remplacer des fichiers pour l’utilisateur courant, cela ne touche pas à WSL lui-même et peut aussi se faire manuellement (voir la procédure avec OpenSuSE).

Voici une liste des distributions disponibles à ce jour :

debian – 8.5, 8, jessie, latest | jessie-backports | oldstable | oldstable-backports | sid | stable | stable-backports | stretch | testing | unstable | 7.11, 7, wheezy | wheezy-backports | rc-buggy | experimental
ubuntu – 12.04.5, 12.04, precise-20160707, precise | 14.04.5, 14.04, trusty-20160802, trusty | 16.04, xenial-20160809, xenial, latest | 16.10, yakkety-20160806.1, yakkety, devel
fedora – latest, 24 | 23 | 22 | 21 | rawhide | 20, heisenbug
centos – latest, centos7, 7 | centos6, 6 | centos5, 5 | centos7.2.1511, 7.2.1511 | centos7.1.1503, 7.1.1503 | centos7.0.1406, 7.0.1406 | centos6.8, 6.8 | centos6.7, 6.7 | centos6.6, 6.6 | centos5.11, 5.11
opensuse – 42.1, leap, latest | 13.2, harlequin | tumbleweed
mageia – latest, 5
oraclelinux – latest, 7, 7.2 | 7.1 | 7.0 | 6, 6.8 | 6.7 | 6.6 | 5, 5.11
alpine – 3.1 | 3.2 | 3.3 | 3.4, latest | edge
crux – latest, 3.1
clearlinux – latest, base

Voyons sa mise en place.

Pour commencer, il faut Python 3.6 d’installer sur la machine à télécharger sur le site officiel :

python-3-6-0-32-bit-setup

Récupérer ensuite la dernière version de WSL-Distribution-Switcher à l’adresse suivante : https://github.com/RoliSoft/WSL-Distribution-Switcher/releases/download/v0.1.0/WSL-Distribution-Switcher_v0.1.0.zip

Extraire l’archive dans C:\ (cela donne C:\WSL-Distribution-Switcher) et ouvrir une ligne de commande dedans :

wsl-distribution-switcher

Installer de nouvelles distributions

Télécharger le ou les distributions – on va voir qu’il est possible de passer d’une à l’autre – :

get-source.exe centos:latest
get-source.exe fedora:latest

c__windows_system32_cmd-exe

Lorsqu’une nouvelle distribution est téléchargée, il faut l’installer une fois. Je précise que bash doit être fermé.

install.exe centos:latest
rootsimon-laptop_-_mnt_c_wsl-distribution-switcher
Bienvenue sur CentOS 7 !

Passer de l’une à l’autre

Pour switcher de l’une à l’autre, on utilisera le script switch.exe. Les distributions disponibles sont listées s’il est appelé sans argument :

000002-c__windows_system32_cmd-exe

Exemple avec OpenSuSE 42.2 :

switch.exe opensuse:42.2

000003-rootsimon-laptop_-_mnt_c_wsl-distribution-switcher

Docker !

Attention : cela ne fonctionne pas avec toutes les images, loin de là.

WSL-Distribution-Switcher permet également de partir d’une image Docker en allant chercher sur Docker Hub grâce au script get-prebuild.exe :

get-prebuild.exe kalilinux/kali-linux-docker
install.exe kalilinux/kali-linux-docker

Note : J’ai régulièrement l’erreur Accès refusé avec install.exe. Il suffit d’insister un peu (= le relancer) et cela a toujours fini par passer.

Dans le cas d’une erreur 0x80070002, il s’agirait d’une erreur de permissions (source et source) mais je suis preneur d’une solution…

C’est cassé !

Si l’installation part en cacahuète, il est possible de repartir de zéro avec les trois commandes suivantes :

lxrun /uninstall /full /y
lxrun /install /y
lxrun /setdefaultuser root /y

Il faudra ensuite réinstaller ses distributions.

Zimbra Connector : MAPI n’a pu charger LSMSSP.DLL

Suite à la désinstallation du connecteur Outlook pour Zimbra, Outlook refusait de démarrer avec l’erreur suivante :

microsoft-outlook
MAPI n’a pas pu charger le service d’information LSMSSP.DLL

Le wiki Zimbra donne toute une série de commandes à exécuter… qui ne fonctionne pas avec Outlook 2016 (les répertoire indiqués n’existent pas).

La solution est en faite très simple : le connecteur créé un nouveau profil Outlook « Zimbra » dans lequel est mentionné le fichier DLL manquant. Il suffit donc de le supprimer depuis le panneau de configuration (en vue icônes) > Mail (Microsoft Office 2016).

Au prochain lancement, Outlook proposera soit de créer un nouveau profil soit reprendra celui par défaut (nommé Outlook).

Installer .Net 3.5 via Powershell

Sous Windows 10, .Net Framework 3.5 est disponible sous forme d’une fonctionnalité optionnelle. Son installation peut se faire depuis l’écran Fonctionnalités de Windows mais aussi par Powershell, méthode qui nous intéresse aujourd’hui.

Pour commencer, listons les fonctionnalités disponibles :

Get-WindowsOptionalFeature -Online

.NET Framework 3.5 se cache sous le nom NetFx3, à installer avec le cmdlet Enable-WindowsOptionalFeature :

Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All

A noter que, sous Windows Server 2012, la ligne de commande est un peu différente :

Install-WindowsFeature –name NET-Framework-Core

Source : https://technet.microsoft.com/en-us/library/dn376466.aspx