dimanche 25 octobre 2015

Powershell - Administration : Afficher les chemins dont le nombre de caractères excède 260.


Pratique avant d'envisager une migration :


Get-ChildItem -r * |? {$_.GetType().Name -match "File"  } |? {$_.fullname.length -ge 260} |%{$_.fullname}

#!:)!

Powershell - Echange : Afficher les destinataires d'une liste de distribution


Y a pas plus simple (forme à améliorer) :



Get-DistributionGroup "nomlidtededistribution" | fl name,accept*

#!:)!

Powershell - Administration à distance : Vérifier le statut d'un service et le démarrer et administration à distance



Commandes permettant l'administration du PC & Registre à distance (interrogation) :



get-service winrm -computer pcpolux

Status   Name               DisplayName

------   ----               -----------

Stopped  winrm              Gestion à distance de Windows (Gest...


 get-service remoteregistry -computer pcpolux

Status   Name               DisplayName

------   ----               -----------

Stopped  remoteregistry     Registre à distance




Start-Service -InputObject (get-Service -ComputerName pcpolux -Name  RemoteRegistry)

Stop-Service -InputObject (get-Service -ComputerName pcpolux -Name  RemoteRegistry) 

Attention cela ne marche pas si le service est désactivé sur le PC distant.


#!:)!



Powershell - Exchange : Connecter un boîte aux lettres


Commande permettant de connecter une boîte aux lettres à un utilisateur :



Connect-Mailbox -Identity "Polux" -Database NomDelaBase -User "Polux"

Powershell - Exchange : Afficher les boîtes aux lettres désactivées

Commande qui affiche les boîtes au lettres désactivées :




Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -eq "Disabled " } | Where { $_.LastLoggedOnUserAccount -like "Toto\Filtrezdequat*" } | Format-List DisplayName, DisconnectReason


DisplayName      : Polux
DisconnectReason : Disabled


Powershell - Logs : Récupérer les logs




Dans ce mini script, je demande les logs des dernières 24 heures :


$a = (Get-Date).AddMonths(-1)





write-host "votreserveur"  -foregroundcolor red -backgroundcolor white



Get-WinEvent -computername ordi -FilterHashtable @{logname = 'setup'; id = 2} | where {$_.timecreated -gt $a } |Format-Table timecreated, message -AutoSize -Wrap

Il est évidemment possible d'envoyer un rapport par mail et d'ajouter des serveurs avec l'option "- append " dans un fichier texte, à suivre...


Autre script (ici un serveur récupère les logs des autres à configurer en amont) :



$a = (Get-Date).Adddays(-10)

Get-WinEvent -computername votreserveur  -FilterHashtable @{logname = 'forwarded*'} | where {$_.timecreated -gt $a } |Format-Table MachineName,TimeCreated,Message  -AutoSize -Wrap| Out-File "d:\shell\logs\errors.txt"

#Get-WinEvent -computername votreserveur -FilterHashtable @{logname = 'forwarded*'} | where {$_.timecreated -gt $a }| format-list -property *

$dir = "d:\shell\logs\"

$expediteur = "Polux@polux.com "
$destinataire = "Tata@polux.com "
$serveur = "serveursmtp.polux.com"


Get-ChildItem "$dir"| Where {-NOT $_.PSIsContainer}| foreach {$_.fullname} |send-mailmessage -from "$expediteur" -to "$destinataire" -subject "Logs $i"  -smtpServer $serveur
 
 Options :


#Id
#Version
#Qualifiers
#Level
#Task
#Opcode
#Keywords
#RecordId
#ProviderName
#ProviderId
#LogName
#ProcessId
#ThreadId
#MachineName
#UserId
#TimeCreated
#ActivityId
#RelatedActivityId
#ContainerLog
#MatchedQueryIds
#Bookmark
#LevelDisplayName
#OpcodeDisplayName
#TaskDisplayName
#KeywordsDisplayNames
#Properties
 


#!:)!