J’ai quelle GPO sur le pc ?…

La console RSoP (Resultant Set Of Policy), « jeu de stratégie résultant en français« , permet de visualiser sous interface graphique les paramètres appliqués aux configurations « ordinateur » et « utilisateur ». En naviguant dans les menus, vous pourrez voir quels sont les stratégies liées à votre ordinateur.

Pour ouvrir l’utilitaire RSoP, ouvrez une fenêtre Exécuter en appuyant sur les touches Windows + R, tapez rsop.msc puis appuyez sur la touche Entrée :

Notez bien que cet utilitaire ne vous permet pas de modifier les paramètres collectés.

Vous pouvez juste naviguer et double cliquer sur un élément pour visualiser des détails.


…et pour rappel, GPRESULT est aussi un bon outil 😉

Steam Deck et programmes utiles…

Pour tous ces programmes, il faut désactiver le mode « famille » en cliquant sur l’icone « verte »…

et la passer en « rouge »… Puis aller dans « Steam MENU » et faire « basculer vers le bureau »

A partir d’ici on est + sur un bureau (souris/clavier seront + pratique) et on lance le Discover

Dans Discover vous pourrez recherchez aussi bien Chrome, que VLC…

…que Warpinator (pour transférer vos fichier de votre Windows à votre steam deck), en passant par Heroic Game Launcher qui permet de lancer aussi vos jeux EPIC, GOG )…

Mention spéciale à Open RA qui est un clone de Red Alerte 🙂 … et pour info en mode Skirmish il vous suffit de taper « entrer » et « /all » pour avoir un mode triche


Côté optimisation, vous pouvez installer Cryo Utilities qui permet d’optimiser le fichier swap et de ne plus avoir de lag et des meilleurs perfs en général

https://github.com/CryoByte33/steam-deck-utilities

…et FlatSeal qui permet par exemple de donner les droits à Warpinator pour écrire directement sur la microSD

Bref, cette petite machine me donne envi de me pencher un peu plus sur Linux… c’est beau quand même

Les raccourcis cachés dans Windows ?…

  1. Dossier des Applications (Apps Folder): SHELL:APPSFOLDER
  2. Dossier Menu Démarrer (Start Menu Folder): SHELL:PROGRAMS
  3. Dossier Démarrage (Startup Folder): SHELL:STARTUP
  4. Dossier Envoyer Vers (Send To Folder): SHELL:SENDTO
  5. Dossier commun à tous les utilisateurs : SHELL:common programs
  6. et idem pour le startup : SHELL:common startup

LUPAS RENAME 2000 remplacé par Bulk Rename Utility…

Voilà quelques années que j’utilisais Lupas Rename pour renommer mes fichiers… la dernière mise à jour était de 2005… nostalgique (comme winamp que j’ai remplacé par Harmonoid Music + a jour et avec les paroles en auto 😉 )

Il était temps que je m’occupe de trouver un remplaçant mais avec autant de fonction…c’est fait

L’installation se fait depuis le site, le store de Microsoft ou même avec un Winget :

winget install -e –id TGRMNSoftware.BulkRenameUtility

Côté option…on est full et c’est ce que je voulais donc Thanks Messieurs de TGRMN 🙂

HDD de 12to USB3 en Externe : Lecture seul uniquement…

Sur un Windows Serveur 2019 suite à une ejection rapide, je me suis retrouvé avec un HDD en « lecture seule » … Des tests on été fait sur d’autres serveurs et pc, et pas de soucis…

En cherchant du coté de la commande DISKPART, j’ai pu débloquer la situatuion comme cela :

1. Ouvrez l’Invite de commandes en tapant: commande dans la zone de recherche, cliquez sur Invite de commandes. 
2. Tapez: diskpart et appuyez sur Entrée. 
3. Tapez: list disk et appuyez sur Entrée. 
4. Tapez: select disk 0 et appuyez sur Entrée. ( 0 doit être remplacé par la lettre de lecteur de votre disque dur externe crypté.) 
5. Tapez: attributes disk clear readonly et appuyez sur Entrée. 
6. Tapez: exit et appuyez sur Entrée pour terminer le processus. 

Le disque est maintenant « en ligne »…Par contre je n’ai pas l’explication du pourquoi …

PowerShell : liste par date des programmes installés

Voici un petit script pour avoir la date d’installation de windows, et les programmes installés du plus récent au plus ancien, avec extraction en fichier TXT vers C:\temp\ :

$uninstallKey = « HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall »
$programs = Get-ChildItem $uninstallKey | Get-ItemProperty

$sortedPrograms = $programs | Where-Object { $_.InstallDate -ne $null } | Sort-Object -Property InstallDate -Descending

$exportPath = « C:\temp\date-installation.txt »
$dateWindowsInstalled = (Get-ItemProperty « HKLM:\Software\Microsoft\Windows NT\CurrentVersion »).InstallDate
$dateWindowsInstalledFormatted = (Get-Date -Date ([DateTimeOffset]::FromUnixTimeSeconds($dateWindowsInstalled)).DateTime).ToString(« yyyy-MM-dd HH:mm:ss »)

Set-Content -Path $exportPath -Value « Date d’installation de Windows : $dateWindowsInstalledFormattedrnrn »

foreach ($program in $sortedPrograms) {
$programName = $program.DisplayName
$installDate = $program.InstallDate
$installDateFormatted = (Get-Date -Date ([DateTimeOffset]::FromUnixTimeSeconds($installDate)).DateTime).ToString(« yyyy-MM-dd HH:mm:ss »)

$output = « Nom du programme : $programNamern »
$output += « Date d’installation : $installDateFormattedrn »
$output += « ————————————-rn »

Add-Content -Path $exportPath -Value $output

}


Script PowerShell pour scan ip et réseau de nom…

Oui il y a des applis Advanced Port Scanner qui le font, mais c’est pour la beauté du script 😀

for ($i = 150; $i -le 254; $i++) {
$ip = "192.168.0.$i"
# Exécution de la commande "arp -a"
$result = & "arp" "-a" $ip

# Récupération de l'adresse MAC
$mac = $result | Select-String -Pattern "\s([0-9a-fA-F]{2}[:-]){5}([0-9a-fA-F]{2})\s" | ForEach-Object {
    $_.Line -replace "-", ":"
}

# Récupération du nom de la machine
$hostname = (Resolve-DnsName -Name $ip -ErrorAction SilentlyContinue).NameHost

# Affichage des résultats
if ($mac) {
    if ($hostname) {
        Write-Host "IP: $ip | MAC: $mac | Hostname: $hostname"
    } else {
        Write-Host "IP: $ip | MAC: $mac | Hostname: (Non résolu)"
    }
}
}

On programme un reboot tous les dimanches en CMD…

Pratique pour les serveurs 😉 Avec une invite de commande en tant qu’administrateur :

schtasks /create /sc weekly /d SUN /tn « Reboot PC » /tr « shutdown /r /f » /st 02:00

Cela créé une tâche planifiée qui exécute la commande shutdown /r /f (redémarrage forcé de la machine) tous les dimanches à 2h du matin.

/create : indique que vous souhaitez créer une nouvelle tâche planifiée.
/sc weekly : indique que la tâche doit être exécutée toutes les semaines.
/d SUN : indique que la tâche doit être exécutée le dimanche.
/tn « Reboot PC » : spécifie le nom de la tâche planifiée (« Reboot PC »).
/tr « shutdown /r /f » : spécifie la commande à exécuter (redémarrage forcé de la machine).
/st 02:00 : spécifie l’heure à laquelle la tâche doit être exécutée (2h du matin).

et pour lister les taches :

schtasks /query

et en powershell pour savoir quelle tache contient le mot « reboot » :

Get-ScheduledTask | Where-Object {$_.TaskName -like « *reboot* »} | Select-Object TaskName, NextRunTime

Désactiver la Déduplication …

Pourquoi faire ça ?… Car ça prend un peu de ressource cpu… ou dans mon cas, car cela pose soucis avec VEEAM pour restaurer un fichier directement d’une sauvegarde…

Avant tout on pense à augmenter la capacité de son disque virtuel … Si vous avez 43% de déduplication, il faut rajouter au minimum 43% pour avoir le même espace disque libre

Ensuite… On ajoute les commandes en PowerShell

get-windowsfeature -name FS-Data-deduplication

On regarde si on a bien un volume activé :

get-dedupvolume

Ensuite on désactive la dédup… (ici du volume D: )

start-dedupjob -full d: -Type UnOptimization

et ensuite pour voir l’état d’avancement on lance un :

get-dedupjob


Arrivé à 100% on attend encore un peu qu’il fasse le ménage…Et ensuite on a plus de retour donc tout est ok ^^

ROBOCOPY Copier uniquement les droits NTFS…

Suite à une fausse manipe, les droits NTFS d’un répertoire sont remis à zero… ok vous avez une sauvegarde mais les utilisateurs ont déjà bosser dessus…

Vous aller ressortir votre sauvegarde avec vos droits NTFS ok… la stocker dans un autre enplacement et lancer une commande votre plus beau CMD

robocopy « C:\temp\b » « C:\temp\a » /sec /secfix /s /XF *.*

C:\temp\b étant votre réstauration, et C:\temp\a votre répertoire de travail, ROBOCOPY va répliquer uniquement les ACL de « b » vers « a »

SQL 2019 express… Réindexation

(rappel : dans cette version on ne peut pas faire de plan de maintenance…)

Le script présenté ci-dessous charge le nom des tables et des schémas associés dans un curseur, à partir duquel, après reconstitution de la commande SQL, nous exécutons la commande de réindexation des tables DBCC DBREINDEX.

DECLARE cursorDb CURSOR FOR 
	SELECT 
		t.name nom_table,s.name nom_schema 
	FROM 
		sys.tables AS t 
		INNER JOIN sys.schemas AS s ON t.schema_id=s.schema_id;
DECLARE @table VARCHAR(1024);
DECLARE @schema VARCHAR(1024);
DECLARE @sql VARCHAR(1024);
OPEN cursorDb;
FETCH NEXT FROM cursorDb INTO @table, @schema;
WHILE @@FETCH_STATUS = 0  
BEGIN  
	SET @sql='DBCC DBREINDEX (''['+@schema+'].['+ @table + ']'')  WITH NO_INFOMSGS';
	-- PRINT @sql;
	EXECUTE (@sql);
	FETCH NEXT FROM cursorDb INTO @table,@schema;
END;
CLOSE cursorDb;
DEALLOCATE cursorDb;
GO

Merci à Denis Szalkowski  🙂


N’oubliez pas de controler l’intégrité de la base en lançant une requête :

DBCC CHECKDB


De réduire les logs …


De mettre à jour les stats avec la requette :

sp_MSforeachdb ‘use [?]; exec sp_updatestats’


et de supprimer l’historique de tous les travaux de l’instance SQL:


USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory
go

Votre plan de maintenance pour sql Express 2019 est pas trop mal (on peut toujours faire mieux, n’hésitez pas à commenter !)

Oter la protection d’un fichier Excel (mot de passe de modification de la feuille)

Pour ôter la protection d’un fichier Excel (XLS), ouvrez le fichier puis aller dans Outils > Macro > Visual Basic Editor et copier/coller du code suivant

Sub Deproteger()

Dim A As Byte, B As Byte, C As Byte, D As Byte, E As Byte
Dim F As Byte, G As Byte, H As Byte, I As Byte, J As Byte
Dim K As Byte, L As Byte, M As Byte, N As Byte, O As Byte
Dim Reponse As Byte, Temps As Variant
Dim Cible As Object, Passe As String

‘ Demande ce qu’il faut déprotéger.
Reponse = MsgBox(« Voulez-vous déprotéger le classeur actif ? » & vbCrLf & _
« Si vous répondez non, c’est la feuille active qui sera déprotégée. « , _
vbYesNoCancel, « Déprotectionnateur »)

On Error Resume Next
‘ Teste ce qu’il faut déprotéger.
Select Case Reponse
Case vbYes
‘ Définit le classeur actif comme cible à déprotéger.
Set Cible = ActiveWorkbook
‘ Teste si le classeur est protégé.
If Not (Cible.ProtectStructure Or Cible.ProtectWindows) Then
MsgBox « Le classeur actif n’est pas protégé.  » & vbCrLf & _
vbCrLf & « Andouille ! », vbOKOnly, « Déprotectionnateur »
Exit Sub
End If
‘ Teste si le classeur est protégé sans mot de passe.
Err.Clear
Cible.Unprotect vbNullString
If Err = 0 Then
MsgBox « La protection du classeur actif a été supprimée.  » _
& vbCrLf & « Il n’y avait pas de mot de passe. Petit rigolo ! », _
vbOKOnly, « Déprotectionnateur »
Exit Sub
End If
Case vbNo
‘ Définit la feuille active comme cible à déprotéger.
Set Cible = ActiveSheet
‘ Teste si la feuille est protégée (on ne teste pas UserInterfaceOnly qui ne peut être positionné que par macro
‘ et n’est pas enregistré avec le classeur).
If Not (Cible.ProtectContents Or Cible.ProtectDrawingObjects Or _
Cible.ProtectScenarios) Then
MsgBox « La feuille active n’est pas protégée.  » & vbCrLf & _
vbCrLf & « Patate ! », vbOKOnly, « Déprotectionnateur »
Exit Sub
End If
‘ Teste si la feuille est protégée sans mot de passe.
Err.Clear
Cible.Unprotect vbNullString
If Err = 0 Then
MsgBox « La protection de la feuille active a été supprimée.  » _
& vbCrLf & « Il n’y avait pas de mot de passe. Quelle burne ! », _
vbOKOnly, « Déprotectionnateur »
Exit Sub
End If
Case Else
‘ Annulation demandée par l’utilisateur.
MsgBox String(14,  » « ) & « Ciao ! », vbOKOnly, « Déprotectionnateur »
Exit Sub
End Select

‘ Note l’instant de départ.
Temps = Timer

‘ Boucles de calcul des mots de passe. On utilise ici les codes ascii des caractères « 0 » et « 1 ».
For A = 48 To 49
For B = 48 To 49
For C = 48 To 49
For D = 48 To 49
For E = 48 To 49
For F = 48 To 49
For G = 48 To 49
For H = 48 To 49
For I = 48 To 49
For J = 48 To 49
For K = 48 To 49
For L = 48 To 49
For M = 48 To 49
For N = 48 To 49
For O = 48 To 49
‘ Calcule le mot de passe.
Passe = Chr(A) & Chr(B) & Chr(C) & Chr(D) & Chr(E) & _
Chr(F) & Chr(G) & Chr(H) & Chr(I) & Chr(J) & _
Chr(K) & Chr(L) & Chr(M) & Chr(N) & Chr(O)
‘ Essaie de déprotéger la cible.
Err.Clear
Cible.Unprotect Passe
‘ Teste si la cible est bien déprotégé.
If Err = 0 Then
‘ Si oui, affiche le mot de passe et sort.
MsgBox « La protection a été supprimée en  » & _
Timer – Temps &  » secondes.  » & vbCrLf & _
« Le mot de passe équivalent trouvé est : » & _
vbCrLf & vbCrLf & String(28,  » « ) & Passe, _
vbOKOnly, « Déprotectionnateur »
Exit Sub
End If
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next

‘ Message impossible à atteindre.
MsgBox « Mot de passe introuvable. » & vbCrLf & vbCrLf & _
« C’est pas normal !!! », vbOKOnly, « Déprotectionnateur »

End Sub

Macro qui m’a dépanné en Mai 2022 sur un fichier XLSX créé sous excel 2016 😉

source : VBFrance

Export CSV des fichiers effacés depuis l’observateur d’évènement en PowerShell

Un petit script qui permet d’exporter un csv pour savoir qui a effacé quoi sur un serveur (uniquement les 1000 derniers fichiers)…

A mettre dans un fichier .PS1 et ne pas oublier d’activer l’audit sur le disque que vous voulez auditer 😉 …

$Date = (Get-Date).AddDays(-1)

Get-EventLog -LogName security -Instance 4663 | Select -First 1000 | Select EventId, TimeGenerated, @{Label= »SID »;Expression={$_.ReplacementStrings[0] -eq « Users SID »}}, @{Label= »Machine Name »;Expression={$_.ReplacementStrings[1]}}, @{Label= »Path »;Expression={$_.ReplacementStrings[6]}} | Export-Csv C:\TEMP\Test.CSV

Rename-Item C:\TEMP\Test.CSV exportok.csv