Catégories
PowerShell WIFI Windows

Lister les erreurs d’authentification Radius (NPS) via PowerShell

Avec ça, vous aurez les dernières erreurs et leurs causes possibles.

 

$NpsServers=('DC01','DC02')
$ReturnArray=@()

$NPS_Filter="<QueryList>
 <Query Id=`"0`" Path=`"System`">
 <Select Path=`"System`">*[System[Provider[@Name='NPS']]]</Select>
 <Select Path=`"System`">*[System[Provider[@Name='HRA']]]</Select>
 <Select Path=`"System`">*[System[Provider[@Name='Microsoft-Windows-HCAP']]]</Select>
 <Select Path=`"Security`">*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and Task = 12552]]</Select>
 </Query>
</QueryList>"

foreach ( $NpsServer in $NpsServers ) {
 foreach ( $Event in (Get-WinEvent -MaxEvents 800 -ComputerName $NpsServer -FilterXml ([xml]$NPS_Filter) | where {$_.message -like "*denied*"} ) ){
 $Message=$Event.Message.Split("`n")

$Retour = [PSCustomObject]@{
 TimeCreated =$Event.TimeCreated
 MachineName =$Event.MachineName
 AccountName =((($Message |Select-String -Pattern "Account Name" -CaseSensitive)[0]).ToString().split(':')[1]).trim()
 AuthType =((($Message |Select-String -Pattern "Authentication Type" -CaseSensitive)[0]).ToString().split(':')[1]).trim()
 Reason =''
 }
 if ($Message |Select-String -Pattern "Reason" ){
 $Retour.Reason =((($Message |Select-String -Pattern "Reason:" -CaseSensitive)[0]).ToString().split(':')[1]).trim()
 }

$ReturnArray+=$Retour
 }
}
$ReturnArray| ft -autosize

 

Catégories
PowerShell WIFI Windows

Extraire les mots de passe des réseaux wifi connus de son PC

A lancer en PowerShell

mkdir wifi
 cd wifi

netsh wlan export profile key=clear

$retour=@()

dir *.xml |% {
 $xml=[xml] (get-content $_)
 $tmp='' |select SSID,Password
 $tmp.SSID=$xml.WLANProfile.SSIDConfig.SSID.name
 $tmp.password=$xml.WLANProfile.MSM.Security.sharedKey.keymaterial
 $retour+=$tmp
 }

cd ..
 rmdir -recurse wifi

$retour | format-table -autosize
Et voilà…
Catégories
Windows

EPSON EASY MP – Deploiement facile

Autant le savoir tout de suite, j’ai attendu 6 mois de trouver la solution à ce problème.

Pré-requis :

  • Avoir le fichier d’installation MSI (Battez-vous pendant 6 mois avec le support Epson, ou, téléchargez-le ICI)EPSON Easy MP MSI
  • Se créer un fichier avec la liste des projecteurs par site

La GPO :

  • Déploiement classique d’application MSI, rien de particulier (Vérifiez que ca s’installera bien sous 32bit/64bit : case est bien cochée)
  • Script a executer par la machine (startup script) pour faire les ouvertures firewall qui vont bien
netsh advfirewall firewall show rule name="EasyMP Network Projection Ver.2.87" >NUL

if ERRORLEVEL 1 (
 netsh advfirewall firewall add rule name="EasyMP Network Projection Ver.2.87" dir=in  action=allow program="%ProgramFiles(x86)%\EPSON Projector\EasyMP Network Projection V2\EMP_NSC.exe" enable=yes EDGE=yes
 netsh advfirewall firewall add rule name="EasyMP Network Projection Ver.2.87" dir=out action=allow program="%ProgramFiles(x86)%\EPSON Projector\EasyMP Network Projection V2\EMP_NSC.exe" enable=yes

  netsh advfirewall firewall add rule name="EasyMP Network Projection Ver.2.87" dir=in  action=allow program="%ProgramFiles%\EPSON Projector\EasyMP Network Projection V2\EMP_NSC.exe" enable=yes EDGE=yes
 netsh advfirewall firewall add rule name="EasyMP Network Projection Ver.2.87" dir=out action=allow program="%ProgramFiles%\EPSON Projector\EasyMP Network Projection V2\EMP_NSC.exe" enable=yes
 )
  • Ecrasez le fichier contenant la liste des projecteurs dans %ProgramData%\SEIKO EPSON CORPORATION\EMP NS Connection\Profile_s.plist
  • Créez le raccourci qui créera une belle petite icône sur le bureau qui pointe vers « C:\Program Files (x86)\EPSON Projector\EasyMP Network Projection V2\EMP_NSC.exe » (attention 32/64bit)
  • Créez ces entrées dans la base de registre pour éviter d’avoir les popup dérangeantes au démarrage :
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\SEIKO EPSON CORPORATION\EMP NS Connection\2.87]
"ConnectType"=dword:00000000
"StartUpAction"=dword:00000001
"FullScreenStream"=dword:00000001
"ApplicationRunningStatus"=dword:00000001
"NoInterruptConnect"=dword:00000000
"UseMultiDisplay"=dword:00000000
"ConnectedType"=dword:00000001

Et voilààààà ! 6 mois pour ça !

Catégories
PowerShell Windows

Lister toutes les mises a jour Windows

$Session = New-Object -ComObject « Microsoft.Update.Session »
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
$Searcher.QueryHistory(0, $historyCount) | Select-Object Date,
@{name= »Operation »; e={switch($_.operation){
1 {« Installation »}; 2 {« Uninstallation »}; 3 {« Other »}}}},
@{name= »Status »; e={switch($_.resultcode){
1 {« In Progress »}; 2 {« Succeeded »}; 3 {« Succeeded With Errors »}; 4 {« Failed »}; 5 {« Aborted »}}}},
@{name= »KB »;E={$_.title.split(« (« )[1].split(« ) »)[0]} },
Title | Export-Csv -NoType « $Env:userprofile\Desktop\Windows Updates.csv »
Source : https://social.technet.microsoft.com/wiki/contents/articles/4197.how-to-list-all-of-the-windows-and-software-updates-applied-to-a-computer.aspx

 

Catégories
Windows Windows 2012 Windows 7 Windows 8

Créer une GPO pour installer des applications.

Sources:
http://old.k2underground.com/blogs/johnny/archive/2012/09/13/deploying-the-silverlight-package-to-users-using-a-gpo.aspx
https://4sysops.com/archives/install-32-bit-and-64-bit-applications-with-group-policy-and-sccm/

L’application à déployer peut exister en 32 et 64 bit (avec 2 installeurs différents).

Etape 1 : Créer les packages MSI

Prenons l’exemple de Silverlight. Celui-ci doit être « préparé » pour être déployable par GPO.

    • Télécharger l’installeur depuis le site de Microsoft.
    • Dans une invite de commande, se rendre dans le répertoire où on a téléchargé l’application et tapper cette commande :
    • Silverlight_x64.exe -x ou Silverlight.exe -x (pour la version 32bit)
    • Indiquer le même répertoire que celui où vous avez téléchargé le package
    • Utiliser un soft comme 7zip pour extraire le contenu de Silverlight.7z (silverlight.msp ) dans le même répertoire que celui où vous avez téléchargé le package
    • msiexec /p silverlight.msp /a silverlight.msi
    • Déplacer le fichier silverlight.msi et les répertoires PFiles et PFiles_64 (ce dernier n’existe QUE dans la version 64 bit) dans le répertoire où se trouvent vos binaires de déploiement des GPO. Exemple : \\domaine.local\DSL\Silverlight\x64\.

Notez bien que j’ai indiqué x64! car j’ai traité le package 64 bit. Pour la version 32 bit, déplacez le dans …x86. Le nom n’est pas obligatoire, mais admettez que c’est quand même plus facile.

Etape 2 : déployer le(s) package(s)

    • Donner les bonnes permissions sur le share !!! (Authenticated users : Read)
    • Lancer la console GPO (gpmc.msc)
    • Créer une GPO à la bonne O.U.
    • Aller dans Computer Configuration > Policies > Software Settings > Software Installation
    • Pointer vers le MSI (32 ou 64bit) via son share réseau !!!
    • Choisissez un déploiement « assigné »

Attention ! Si vous avez 2 packages (32 et 64 bit) vous devez faire 2 déploiement. MAIS pour la version 32 bit, il ne faut pas choisir « assigné » mais avancé > Déploiement > Options Avancées et DECOCHER la case qui rend les applis 32bit installables sous 64 bit.

Une fois finit, pour tester, rendez-vous sur une machine cible et faites un « gpupdate /force ». Si la commande vous demande de redémarrer, c’est qu’il s’est rendu compte qu’il a une application à installer (ca se fait au reboot.)

Tadaaa!

Catégories
PowerShell Scripting Windows Windows 2012 Windows 7 Windows 8

Windows et les fichiers invisibles

ca peux sembler être le titre d’un roman, mais dans la catégorie cauchemar alors ! Je m’explique :

Aujourd’hui, j’ai écrit un super script qui fait plein de choses intéressantes, et histoire de faire ça correctement, je mets quelques programmes exécutable supplémentaires dans le répertoire C:\Windows\system32.

Jusque-là, rien de bien méchant, sauf que mon script qui est lancé par un service supplémentaire, refuse d’exécuter les programmes que j’ai ajouté. Fichier introuvable qu’il me dit.

Introuvable, introuvable? Il lui faut des lunettes, oui!

Je lance à la main, ça fonctionne. Je le lance à partir du service, ça ne fonctionne plus.

Là, on se dit qu’on commence à perdre la tête ou que Windows est une belle merde. Et donc on se retrouve a faire des choses aussi stupide que de faire un « dir » des fichiers en question .

Et c’est là que ça se corse, comme dirait Napoléon

Quand mon script liste les fichiers, il ne trouve rien. Quand je liste les fichiers, je les vois…

Je vous passe tous les noms d’oiseaux qui me sont passés par l’esprit…

Et j’en suis arrivé à la conclusion que la seule différence était le service en question, vieux service qui fonctionnait en 32 bits. Je démarre une console PowerShell en 32 bits, et tente de lister les fichiers? Surprise, pas de fichiers présents. Ou plutôt, pas de fichier 32 bits!!!!!

Windows, pour une raison que je n’explique toujours pas, n’affiche pas les programmes 32 bits qui se trouve dans le répertoire C:\Windows\system32.

J’ai donc trouvé 2 solutions:

  • Mettre à jour mon service en 64 bits, j’ai de la chance il est disponible.
  • Déplacer mes exécutables dans un autre endroit (ce qui n’est pas une bonne idée quand ce sont des fichiers standards Microsoft comme « dfsutil »)

Si vous êtes arrivés sur cette page, et que cela solutionne votre problème, merci de me laisser un message en commentaire, afin que je me sente moins seul merci!

En fait, Microsoft est déjà prêt pour les ordinateurs quantiques. En fonction de la manière dont on regarde, le résultat n’est pas le même. Tu existes et tu n’existes pas en même temps.