Supprimer un port d’impression via PowerShell

Si comme moi vous avez désinstallé une imprimante mais que le port est toujours présent, mais qu’il est impossible de le supprimer via une interface graphique, il est possible de tenter de le faire via PowerShell. Ci-dessous voici les 2 principales commandes pour le faire : lister, puis supprimer.

# Lister les ports
Get-PrinterPort

# Lister les ports ayant un nom commençant par "wsd"
Get-PrinterPort -Name wsd*
# Suppression d'un port nommé par exemple "MonPort"
Remove-PrinterPort -Name MonPort

Afficher sa clé de licence numérique Windows

Sur les ordinateurs récents pré-assemblés et équipés de Windows , on ne retrouve plus l’étiquette autocollante apposée sur les châssis des PC.

A présent, la licence est numérique et directement stockée dans la carte mère de l’ordinateur. Ainsi, plus de saisie fastidieuse lors des réinstallations.

Si l’envie de l’afficher se fait sentir, une simple commande à lancer en tant qu’Administrateur depuis une invite de commande Windows

wmic path SoftwareLicensingService get OA3xOriginalProductKey

Contourner l’erreur 0xc004f050 – Passage de Windows 10 Home à Pro

Un ordinateur Lenovo était livré avec Windows 10 Home, il fallait que je le passe en version Pro pour pouvoir l’ajouter dans un domaine Active Directory. Et ma plus grosse contrainte était d’éviter de devoir totalement le réinstaller et de perdre la partition de récupération.

Pour avoir changer la clé produit, il faut aller dans Paramètres, Mise à jour et sécurité, Activation, puis cloquer sur Modifier la clé de produit.

J’ai donc acheté une licence Microsoft Windows 10 Pro, mais au moment de valider le changement de clé produit, je me suis retrouvé confronté à l’erreur 0xc004f050. Pour la contourner, voici il suffit dans un premier temps de renseigner la clé suivante – c’est une clé de mise à niveau pour permettre de tester Windows 10 Pro temporaire, cela n’empêche pas de devoir en acheter une !

VK7JG-NPHTM-C97JM-9MPGT-3V66T

Une fois la clé saisie, il faudra laisser le processus arriver à 100%, ce qui entrainera un redémarrage de l’ordinateur. L’ordinateur devrait être en version Pro, il ne reste plus qu’à refaire la procédure avec la « vraie » clé pour finaliser la migration.


Je laisse cette vidéo (en anglais) qui résume bien comment procéder.

Pour les plus expérimentés, il est possible de passer via la commande slmgr pour gérer la licence Windows. Le site de Malekal résume bien toutes les commandes possibles et leur utilisation.

Envoi d’un fichier sur un serveur FTP via Microsoft Excel

J’avais besoin de pouvoir envoyer un fichier sur un serveur FTP après avoir fait une série de traitements via Microsoft Excel. Ci-dessous, vous trouverez le code VBA que j’ai adapté pour parvenir à mes fins.

Ici, la fonction EnvoiFichierFTP() est affectée à un bouton pour déclencher l’envoi d’un fichier texte nommé « test.txt » présent sur mon bureau pour l’envoyer à la racine d’un serveur FTP.

Il suffit d’adapter les 5 valeurs contenues dans « Définition des paramètres FTP », puis dans « Définition des emplacements du fichier local et distant ».

' Open the Internet object
Private Declare PtrSafe Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long

' Connect to the network
Private Declare PtrSafe Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _
(ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long

' Get a file using FTP
Private Declare PtrSafe Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _
(ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, _
ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean

' Send a file using FTP
Private Declare PtrSafe Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" _
(ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean

' Close the Internet object
Private Declare PtrSafe Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer

Sub EnvoiFichierFTP()

   Dim HwndConnect As Long
   Dim HwndOpen As Long, MyFile
   Dim ftpAddress As String
   Dim ftpUser As String
   Dim ftpPassword As String
   Dim ftpLocalFilepath As String
   Dim ftpRemoteFilepath As String

   ' Définition des paramètres FTP
   ftpAddress = "80.80.80.1"
   ftpUser = "monUtilisateur"
   ftpPassword = "MotDePasse"
   
   ' Définition des emplacements du fichier local et distant
   ftpLocalFilepath = "C:\Users\Lumo\Desktop\test.txt"
   ftpRemoteFilepath = "./test.txt"
   
   ' -----------------
   ' NE PLUS TOUCHER
   ' -----------------

   ' Initialisation de la connexion FTP
   HwndOpen = InternetOpen("connexionFTP", 0, vbNullString, vbNullString, 0)

   ' Connexion au serveur FTP
   HwndConnect = InternetConnect(HwndOpen, ftpAddress, 21, ftpUser, ftpPassword, 1, 0, 0)

   If HwndConnect = 0 Then
    MsgBox ("Une erreur est survenue lors de la connexion. Vérifiez les informations de connexion.")
    InternetCloseHandle HwndConnect
    InternetCloseHandle HwndOpen
    Exit Sub
   End If

   ' Envoi du fichier
   HwndPut = FtpPutFile(HwndConnect, ftpLocalFilepath, ftpRemoteFilepath, &H0, 0)
   If HwndPut = 0 Then
    MsgBox ("Une erreur est survenue lors de l'envoi du fichier. Vérifiez les emplacements des fichiers")
   End If

   ' Fermeture des connexions
   InternetCloseHandle HwndConnect
   InternetCloseHandle HwndOpen
   
End Sub

Disque saturé à cause du répertoire de temporaires Windows

Si comme moi vous avez un système Windows dont le disque dur principal se remplit à vue d’œil alors qu’il n’est pas censé le faire, sachez qu’il est potentiellement possible de remédier à ce problème.

Il est possible dans un premier temps de vérifier via un utilitaire comme TreeFileSize comment sont répartis les fichiers sur le disque dur. Dans mon cas, sur un disque dur de 80 Go, le répertoire « Temp » présent dans « C:\Windows » occupait 65Go ! Dedans, plein de fichiers CAB de 150 Mo environ …

Visiblement, d’après quelques recherches Internet, la raison provient du fichier « C:\Windows\logs\cbs\cbs.log » qui a atteint 2 Go ou plus. Lors de l’utilisation de la commande makecab, celle-ci plante à chaque fois, créant une archive incomplète ajouté à « C:\Windows\temp »

Pour supprimer ces fichiers indésirables, il faut :

  • Aller dans le répertoire « C:\Windows\logs\ »
  • Supprimer tous les fichiers se terminant par l’extension *.log
  • Aller dans le répertoire « C:\Windows\temp\ »
  • Supprimer tous les fichiers

Sources :
https://support.solarwindsmsp.com/kb/solarwinds_rmm/C-Windows-Temp-is-full-of-cab-files

DiskPart, l’outil en lignes de commandes pour gérer les partitions de ses périphériques de stockage

Présentation rapide de la commande « diskpart » présente sur les ordinateurs tournant sous Windows. Cette dernière permet de gérer le système de partitionnement d’un périphérique, le tout en lignes de commande.

Ci dessous, un exemple pour formater une clé USB (ayant servie pour liveCD Clonezilla). On en profite pour recréer une seule partition formatée en NTFS ici.

La première étape est de lancer une invite de commande « cmd » en tant qu’administrateur puis de saisir les commandes suivantes.

  • diskpart Permet de rentrer dans l’utilitaire
  • list disk Liste des disques
  • select disk 1 Sélection du disque sur lequel on souhaite travailler
  • clean pour effacer le partitionnement actuel
  • create partition primary pour crééer une partition de type primaire
  • select partition 1 pour sélectionner la partition fraichement créée
  • format fs=ntfs quick pour formater rapidement en NTFS
  • exit pour quitter l’utilitaire
  • exit pour fermer l’invite de commandes

Commutateurs de ligne de commande pour Outlook pour Windows

Pour dépanner Microsoft Office Outlook, il faut savoir qu’il est possible d’ajouter des commutateurs (ou arguments) lors du lancement d’Outlook.

Pour les utiliser, le plus simple est de créer un raccourci d’Outlook. Voici comment faire :

  • Cliquer sur Démarrer,
  • Choisir Tous les programmes, chercher Outlook
  • Clic droit, puis envoyer vers Bureau
  • Retour sur le bureau,
  • Clic droit sur la nouvelle icône créée, puis cliquer sur propriétés
  • La fenêtre ci-dessous s’affiche, il ne reste qu’à ajouter à la fin du champs « Cible » le commutateur voulu
  • Puis terminer en cliquant sur OK
  • A présent lors d’un double clic sur la nouvelle icône Outlook, celui ci se lancera avec l’option supplémentaire qui lui est fourni.

Note : Une fois votre Outlook « réparé », il est possible de supprimer le raccourci.

Voici ceux que j’ai eu l’occasion d’utiliser :

Commutateur Action réalisée
/cleanviews Restaure les affichages par défaut. Tous les affichages personnalisés que vous avez créés seront perdus.
/resetfolders Restaure les dossiers manquants à l’emplacement de remise par défaut.
/resetfoldernames Redéfinit les noms de dossier par défaut (tels que Boîte de réception ou Éléments envoyés) en utilisant les noms par défaut dans la langue d’interface utilisateur Office en cours.
/safe Démarre Outlook sans les personnalisations de barre d’outils ou de volet de lecture. Les compléments COM (Component Object Model) natifs et managés sont désactivés.

Lien utile

Article issu du support Office

Fusionner plusieurs fichiers de contacts vCard en un seul

Vous avez plusieurs fichiers vCard et vous voulez les fusionner pour n’en former qu’un seul ? La commande Windows suivante est là pour vous aider.

Dans mon cas, j’ai créé un dossier Contacts à la racine de mon disque dur principal (C: pour information) où se trouvent tous mes contacts au format vCard et portant l’extension .vcf.

R:>copy /B C:Contacts*.vcf C:Contactsall_contacts.vcf
C:Contacts1.vcf
C:Contacts2.vcf
C:Contacts3.vcf
1 fichier(s) copié(s).

A présent, un fichier nommé « all_contacts.vcf » doit se trouver dans le dossier. A l’intérieur, tous vos contacts doivent présents.

Lien utile

Site de Thibaut

Exportation massive des pièces jointes d’Outlook

A ma connaissance, il n’existe pas de moyen de récupérer toutes les pièces jointes des courriers électroniques en une seule fois … Comme toute tâche répétitive qui se respecte, il est possible d’automatiser tout ça via un script. Pour cela, nous allons faire appel à un script Visual Basic que nous exécuterons à partir d’Outlook directement.

  1. Nous allons commencer par aller télécharger le script disponible à l’adresse. Il faudra dé-zipper le fichier « EmailAttachement.zip » dans un répertoire pour récupérer un fichier nommé « GetEmailAttachments.bas » ;
  2. Si ce n’est déjà fait, il faut ouvrir à présent Microsoft Office Outlook ;
  3. Appuyer simultanément sur les touches Alt + F11 pour ouvrir Microsoft Visual Basic ;
  4. Cliquer sur « Fichier », puis sur « Importer un fichier » puis aller chercher notre fichier « GetEmailAttachments.bas » ;
  5. Appuyer sur la touche F5 pour lancer le script ;
  6. Choisir le répertoire dans lequel sont les pièces jointes à extraire (pour information : on ne peut traiter qu’un seul répertoire à la fois) ;
  7. La récupération se met en route. Il n’y a pas d’état d’avancement de la tâche, donc pas d’inquiétude si rien ne semble se passer ;
  8. Un message final résume ce qui a été récupéré. Les pièces jointes extraites sont stockées dans « Email Attachments », un dossier créé dans le répertoire « Mes documents ».

Script d'exportation de toutes les pièces jointes - Message de confirmation

Lien utile

Article de The Techie Guy

Redimensionner un disque dur virtuel VMware VMDK ayant une partition LVM

Attention ! Avant de commencer, il faut savoir que cette opération n’est pas sans risque car nous allons toucher à la structure du disque dur, des pertes de données sont donc possible. Cependant, la procédure décrite ci-dessous a été testée à plusieurs reprises sur des machines en production sans présenter de soucis.

Présentation

Mon disque dur virtuel VMDK de 4 Go dispose de l’organisation suivante :

  • Une seule et unique partition nommée « sda1 » occupant tout l’espace,
  • Un groupe LVM « vg0 » utilisant tout « sda1 »,
  • Deux volumes LVM nommés « lv_root » (3,72 Go) et « lv_swap » (280 Mo) sont présents sur « vg0 »

Partitionnement disque LVM

Procédure

Tout d’abord, il faut commencer par éteindre la machine virtuelle afin de pouvoir augmenter la taille du disque. Dans mon cas, j’ai édité les paramètres de ma machine virtuelle pour faire passer le disque dur de 4 Go à 8 Go. Il faut savoir que le disque ne peut dépasser une taille de 2 To, et qu’il est impossible de le réduire par la suite.

Nous pouvons à présent démarrer la machine virtuelle pour continuer le travail et commencer en utilisant l’outil « fdisk » pour modifier la table des partitions.

fdisk /dev/sda

  • p pour afficher la table des partitions
  • d et choisir la partition 1 et supprimer
  • n, p, 1 pour créer (ici il proposera de prendre tout l’espace disponible, 2x Entrée pour valider le secteur de début et de fin)
  • t, 8e changer type (LVM)
  • p pour afficher nouvelle table
  • w

A nouveau, une redémarrage pour que la machine prenne en compte totalement le changement de taille.

reboot

La commande « pvdisplay » doit pour le moment retourner une taille de 4 Go.

pvdisplay

On va demander à vg0 de prendre la taille de « sda1 ».

pvresize vg0 /dev/sda1

Cette fois, « pvdisplay » doit nous retourner une taille de 8 Go.

pvdisplay

Pour connaitre précisément la taille restante disponible, utilisez la commande suivante et relevez la valeur de la colonne « PFree ».

pvs

On peut maintenant étendre le volume « lv_root » à la taille voulue.

lvextend -L +4G /dev/vg0/lv_root

On demande au système de fichier de « lv_root » de prendre en compte sa nouvelle taille.

resize2fs /dev/vg0/lv_root

Enfin, on vérifie nos changements sur « lv_root ».

lvdisplay

Liens utiles