Affichage des articles dont le libellé est Powershell. Afficher tous les articles
Affichage des articles dont le libellé est Powershell. Afficher tous les articles

mardi 26 février 2019

Windows Defender et powershell - Protection réseau

Bien le bonjour,

Sixième billet sur Windows Defender : Protection réseau

La protection du réseau étend la portée de WindowsDefenderSmartScreen pour bloquer tout trafic HTTP sortant qui tente de se connecter à des sources de mauvaise réputation (sur la base du domaine ou du nom d’hôte)

#Activer la protection réseau
Set-MpPreference -EnableNetworkProtection Enabled

#Définir la protection réseau en mode audit (génère des journaux d'événements)
Set-MpPreference -EnableNetworkProtection AuditMode

Evénements      
5007     Événement lors de la modification des paramètres
1125     Événement lorsque la protection du réseau se déclenche en mode audit
1126     Événement lors du déclenche de la protection du réseau en mode blocage

#Désactiver la protection réseau
Set-MpPreference -EnableNetworkProtection Disabled

Salutation,
Guillaume

dimanche 24 février 2019

Windows Defender et powershell - Accès contrôlés aux dossiers

Bien le bonjour,

Cinquième billet sur Windows Defender : Accès contrôlés aux dossiers

La fonctionnalité Accès contrôlé aux dossiers permet de protéger vos données importantes des applications malveillantes et autres menaces comme les ransomware.
Il est nécessaire d'indiquer les dossiers à protéger et les applications autorisées à apporter des modifications sur ces dossiers

#Activer l'accès contrôlés aux dossiers
Set-MpPreference -EnableControlledFolderAccess Enabled

#Désactiver l'accès contrôlés aux dossiers
Set-MpPreference -EnableControlledFolderAccess Disabled

#Définir l'accès contrôlés aux dossiers en mode audit
Set-MpPreference -EnableControlledFolderAccess AuditMode

#Ajouter des dossiers contrôlés
add-MpPreference -ControlledFolderAccessProtectedFolders C:\demo\

#Ajouter les applications autorisées à accéder aux dossiers contrôlés
Add-MpPreference -ControlledFolderAccessAllowedApplications "c:\apps\test.exe"

Salutation,
Guillaume

jeudi 21 février 2019

Windows Defender et powershell - Exploit protection

Bien le bonjour,

Quatrième billet sur Windows Defender : Exploit protection

Protection contre les exploits (anciennement EMET) permet de protéger les appareils contre les programmes malveillants qui utilisent des attaques pour se propager et infecter les appareils.
Il se compose de plusieurs atténuations qui peuvent être appliquées au niveau du système d’exploitation ou d’une application individuelle.

#Exporter la configuration
Get-ProcessMitigation -RegistryConfigFilePath filename.xml

#Importer une configuration. Microsoft propose une configuration de base ProcessMitigation.xml
$url = 'https://demo.wd.microsoft.com/Content/ProcessMitigation.xml'
Invoke-WebRequest $url -OutFile ProcessMitigation.xml
Set-ProcessMitigation -PolicyFilePath ProcessMitigation.xml

#Afficher la configuration d'exploit protection pour un processus
Get-ProcessMitigation -Name processName.exe

Il est possible de configurer en powershell pour chaque processus les sécurités à mettre en place.

#Page de test des sécurités Windows defender
https://demo.wd.microsoft.com/?ocid=cx-wddocs-testground

Salutation,
Guillaume

mardi 19 février 2019

Windows Defender et powershell - Scan et ménaces

Bien le bonjour,

Troisième billet sur Windows Defender : analyse et gestion des menaces

#Mise à jour des définitions
Update-MpSignature

#Mise à jour des définitions à distance
Update-MpSignature -CimSession pc1

#Retourne le catalogue des définitions des logiciels malveillants
Get-MpThreatCatalog

#Lancer un scan rapide
Start-MpScan -ScanType QuickScan

#Lancer un scan complet
Start-MpScan -ScanType FullScan

#Lancer un scan personnalisé
Start-MpScan -ScanPath C:\Users\guillaume\Downloads

#Lancer un scan hors ligne (redémarre dans un mode protégé spécifique à Defender, scan et redémarre le poste normalement)
Start-MpWDOScan

#Retourne l’historique des menaces détectées sur le poste de travail
Get-MpThreat

#Afficher le nom des menaces détectées
(Get-MpThreat).ThreatName

#Récupérer l’historique des menaces détectées à distance
Get-MpThreat -CimSession pc1

CategoryID
0           Invalid
1           Adware
2           Spyware
3           Passwordstealer
4           Trojandownloader
5           Worm
6           Backdoor
7           Remoteaccesstrojan
8           Trojan
9           Emailflooder
10         Keylogger
11         Dialer
12         Monitoringsoftware
13         Browsermodifier
14         Cookie
15         Browserplugin
16         Aolexploit
17         Nuker
18         Securitydisabler
19         Jokeprogram
20         Hostileactivexcontrol
21         Softwarebundler
22         Stealthnotifier
23         Settingsmodifier
24         Toolbar
25         Remotecontrolsoftware
26         Trojanftp
27         Potentialunwantedsoftware
28         Icqexploit
29         Trojantelnet
30         Filesharingprogram
31         Malware_Creation_Tool
32         Remote_Control_Software
33         Tool
34         Trojan_Denialofservice
36         Trojan_Dropper
37         Trojan_Massmailer
38         Trojan_Monitoringsoftware
39         Trojan_Proxyserver
40         Virus
42         Known
43         Unknown
44         Spp
45         Behavior
46         Vulnerability
47         Policy

SeverityID
0           Unknown
1           Low
2           Moderate
4           High
5           Severe

TypeID
ID          Identification method
0           Known bad threat
1           Behavior monitoring
2           Unknown threat
3           Known good threat
4           Network Inspection System (NIS) threat

#Récupérer toutes les détections des logiciels malveillants lors des analyses...
Get-MpThreatDetection

#Récupère toutes les détections à distance
Get-MpThreatDetection -CimSession pc1

#Supprime toutes les menaces détectées
Remove-MpThreat

Salutation,
Guillaume

samedi 16 février 2019

Windows Defender et powershell - options de sécurité

Bien le bonjour,

Un deuxième billet sur les options de sécurité de Windows Defender

#Afficher les paramètres désactivables
Get-MpPreference | fl disable*

#Activer l’analyse des médias amovibles
Set-MpPreference -DisableRemovableDriveScanning $false

#Activer l’analyse des archives
Set-MpPreference -DisableArchiveScanning $false

#Activer l’analyse des mails
Set-MpPreference -DisableEmailScanning $false

#Activer l’analyse des support amovibles
Set-MpPreference -DisableRemovableDriveScanning $false

#Activer la protection contre les intrusions réseaux
Set-MpPreference -DisableIntrusionPreventionSystem $false

#Forcer la mise à jour des définitions virales avant une analyse Windows Defender
Set-MpPreference -CheckForSignaturesBeforeRunningScan $true

#Activation de PUA (Potentially Unwanted Application), en charge des rogues (scareware)
Set-MpPreference -PUAProtection enabled

#Activer le blocage de fichiers avant leurs exécutions (Bloc at first seen), vérification en temps réel via Microsoft Active Protection Service (cloud)
Set-MpPreference -DisableBlockAtFirstSeen $false

#Définir la protection cloud à 'High'"
Set-MpPreference -CloudBlockLevel High

#Définir le timeout de vérification dans le cloud à 40 secondes (10 par défaut + 30)
Set-MpPreference -CloudExtendedTimeout 30

#Définir le niveau de reporting
Set-MpPreference -MAPSReporting Advanced

#Activer le moniteur de comportement, il surveille les processus de fichier, les modifications au niveau des fichiers et du Registre, et d’autres événements, en recherchant des activités malveillantes connues et suspectes
Set-MpPreference -DisableBehaviorMonitoring $false

#Activer l'analyse des fichiers téléchargés
Set-MpPreference -DisableIOAVProtection $false

#Ne pas permettre à un utilisateur de voir l'historique des détections
Set-MpPreference -DisablePrivacyMode $false

Salutation,
Guillaume

jeudi 14 février 2019

Windows Defender et powershell - préférence et status

Bien le bonjour,

Je n'avais jamais fait trop le point sur Windows Defender, hormis les améliorations apportées avec Windows 1709 (protection des dossiers, protection, exploit guard...) car je ne croise jamais de clients utilisant cette solution.
Mais voilà, le jour J est arrivé, du coup un petit tour de ce que propose Defender en plusieurs billets.

#Lister les commandes powershell
Get-Command -Module Defender

#Etat du service
Get-Service WinDefend

#Désactiver Defender
Set-MpPreference -DisableRealtimeMonitoring $true

#Activer Defender
Set-MpPreference -DisableRealtimeMonitoring $false

#Afficher le status de Defender
Get-MpComputerStatus | Select-Object -Property Antivirusenabled,AMServiceEnabled, AntispywareEnabled, BehaviorMonitorEnabled, IoavProtectionEnabled, NISEnabled,OnAccessProtectionEnabled, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated

#Afficher le status de Defender à distance
Get-MpComputerStatus -cimsession pc1

#Affiche l’ensemble des paramètres de Windows Defender
Get-MpPreference

#Affiche l’ensemble des paramètres de Windows Defender à distance
Get-MpPreference -cimsession pc1

#Ajouter des chemins à exclure de l’analyse
Add-MpPreference -ExclusionPath "D:\Video", "D:\vm"

#Ajouter des extensions à exclure de l’analyse
Add-MpPreference -ExclusionExtension ".ps1",".psd1",".psm1"

#Ajouter des processus à exclure de l’analyse
Add-MpPreference -ExclusionProcess "mailpv.exe"

#Afficher les exclusions
Get-MpPreference | fl exclusion*

#Supprimer une exclusion
Remove-MpPreference -ExclusionPath C:\install

Salutation,
Guillaume

dimanche 10 février 2019

Afficher le code powershell dans l’explorateur

Bien le bonjour,

Voici comment afficher le code powershell dans le volet de visualisation de l'explorateur

$extensions = ".psm1",".psd1",".ps1"
foreach ( $extension in $extensions ) {
    if (!(Test-Path "HKCU:\Software\Classes\$extension")) {
        New-Item "HKCU:\Software\Classes\$extension"      }
                                                                   }

Get-Item HKCU:\Software\Classes\* -Include $extensions | Set-ItemProperty -Name PerceivedType -Value text

Salutation,
Guillaume

samedi 9 février 2019

Lister les URI ms-settings en powershell

Bien le bonjour,

Microsoft a mis en place sur Windows 10 des URI (Uniform Resource Identifier) permettant d'accéder directement à des sections dans paramètres.
Par exemple en cliquant sur ms-settings:notifications, la section de configuration des notifications dans paramètres va s'ouvrir.
Vous pouvez aussi taper ms-settings:notifications dans exécuter ou dans la barre d'adresse de l'explorateur

La référence complète est ici et évolue à chaque version de Windows 10 :
https://docs.microsoft.com/fr-fr/windows/uwp/launch-resume/launch-settings-app#ms-settings-uri-scheme-reference

Si vous souhaitez obtenir la liste des URI directement à partir de votre système et via powershell, téléchargez la fonction powershell suivante :
https://www.powershellgallery.com/packages/PowerSploit/1.0.0.0/Content/ReverseEngineering%5CGet-Strings.ps1

Chargez la fonction et exécutez la commande powershell suivante :
Get-Strings C:\Windows\ImmersiveControlPanel\SystemSettings.dll -Encoding Unicode | select-string "ms-setting"

Salutations,
Guillaume

mardi 5 février 2019

Get-pnpdevice et get-pnpdeviceproperty

Powershell dispose de 2 commandes qui permettent de jouer avec les périphériques: Get-pnpdevice et get-pnpdeviceproperty

Afficher tous les périphériques (même ceux qui ne sont plus connectés)
get-pnpdevice

Afficher uniquement les périphériques en ligne
get-pnpdevice -PresentOnly

Afficher uniquement les périphériques USB en ligne
get-PnpDevice -Class usb -PresentOnly | ft -AutoSize

Afficher les périphériques présents et en erreur
get-pnpdevice -Status error,degraded -PresentOnly | ft -AutoSize

Afficher les périphériques désactivés
Get-PnpDevice | where "problem" -eq "CM_PROB_DISABLED"  |  ft -AutoSize

Désactiver un périphérique
Get-PnpDevice | where "FriendlyName" -eq "BCM20702A0"  | Disable-PnpDevice

Activer un périphérique
Get-PnpDevice | where "FriendlyName" -eq "BCM20702A0" | enable-PnpDevice -Confirm:$false

Afficher toutes les propriétés d'un périphérique
Get-PnpDevice | where "FriendlyName" -eq "BCM20702A0" | Get-PnpDeviceProperty | ft -AutoSize

mercredi 20 mai 2015

Configuration de l'espace de stockage sur Windows serveur 2012 via powershell

Bien le bonjour,

Voici un exemple de configuration de pool de stockage via powershell.

#Lister les disques disponibles pour le pool
Get-PhysicalDisk -CanPool $true

#Créer un pool
$poolDisks = Get-PhysicalDisk -CanPool $true
New-StoragePool -FriendlyName "Pool1" -PhysicalDisks $poolDisks `
-ProvisioningTypeDefault Thin -StorageSubSystemFriendlyName "Storage Spaces*"

#Créer un disque virtuel dans le pool en taille dynamique
Get-StoragePool -FriendlyName Pool1 | New-VirtualDisk -FriendlyName "data1" -Size 10GB -ProvisioningType Thin

#Créer un disque virtuel dans le pool en taille fixe utilisant tout l’espace du pool disponible
Get-StoragePool -FriendlyName Pool1 | New-VirtualDisk -FriendlyName "data" -ProvisioningType Fixe -usemaximumsize

#Créer un disque virtuel dans le pool en taille fixe en mirroir (choix : mirror, parity, simple)
Get-StoragePool -FriendlyName Pool1 | New-VirtualDisk -FriendlyName "mirroir" -Size 10GB `
-ProvisioningType Fixe -ResilencySettingsName Mirror

#Initialiser et formater le disque
Get-VirtualDisk -FriendlyName data1 | Initialize-Disk -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -Confirm:$false 

#Afficher les informations sur les pools
Get-StoragePool | Format-Table FriendlyName, `
@{Name="AllocGB";Expression={$_.AllocatedSize/1GB}}, `
@{Name="SizeGB";Expression={$_.Size/1GB}}

#Afficher les disques virtuels
Get-VirtualDisk | Format-Table FriendlyName, `
@{Name="AllocGB";Expression={$_.AllocatedSize/1GB}}, `
@{Name="FootPrintGB";Expression={$_.FootprintOnPool/1GB}}, `
@{Name="SizeGB";Expression={$_.Size/1GB}}

#Ajouter un disque supplémentaire au pool en mode échange à chaud
Add-PhysicalDisk -StoragePoolFriendlyName "Pool1" -PhysicalDisks (Get-PhysicalDisk -friendlyname PhysicalDisk5) –Usage Hot-Spare

#Supprimer un espace de stockage
Remove-VirtualDisk -FriendlyName "data"

#Supprimer un pool

Remove-StoragePool -FriendlyName "Pool1"

#Supprimer un disque du pool
Set-PhysicalDisk -FriendlyName PhysicalDisk5 -Usage Retired
Get-PhysicalDisk -FriendlyName PhysicalDisk5 | Get-VirtualDisk | Repair-VirtualDisk
Remove-PhysicalDisk –FriendlyName PhysicalDisk8

Salutation,
Guillaume

vendredi 24 avril 2015

Configuration et administration de la déduplication via powershell

Bien le bonjour,

Après la configuration voici la configuration et l'administration de la déduplication via powershell.

#Installer la fonctionnalité
Add-WindowsFeature FS-Data-Deduplication 

Avant de paramétrer la déduplication de données, vous pouvez évaluer le gain possible sur votre serveur de fichiers.
Pour cela, il existe un utilitaire sur Windows Server 2012 nommé DDPEval.exe sous C:\Windows\System32.
#Exemple d'utilisation pour la lettre e:
ddpeval e:\ /v /e
Ou à distance
ddpeval \\nom_ou_ip_serveur\e$ /v /e

#Activer le déduplication sur un volume
Enable-DedupVolume e: -usagetype default
Enable-DedupVolume e: -usagetype Hyperv

#Définir la durée avant deduplication (dédupliquer les fichiers après X jours)
Set-DedupVolume e: -MinimumFileAgeDays 1 

#Lancer une déduplication
Start-DedupJob e: -type Optimization

#Lancer une deduplication en différé
Start-DedupJob e: -type Optimization -wait

#Lancer une deduplication immédiatement en stoppant tous les jobs en cours
Start-DedupJob e: -type Optimization -preempt

#Lancer une deduplication qui s'arrête si le serveur ne dispose pas d'assez de resource.
Start-DedupJob e: -type Optimization -StopWhenSystemBusy

#Lancer une deduplication avec une priorité haute
Start-DedupJob e: -type Optimization -Priority high -Memory 50

#Lister les volumes avec la deduplication activée
Get-dedupvolume | fl

#Afficher les tâches de déduplication
Get-DedupJob

#Afficher le status de déduplication
Get-DedupStatus | fl

#Afficher les planifications de déduplication
Get-DedupSchedule

#Afficher les informations sur la deduplication
Update-DedupStatus
Get-DedupMetadata
Measure-DedupFileMetadata

#Si le volume est entier et que vous rencontrez des défaillances d’accès aux fichiers, envisagez l’une des options suivantes pour contourner le problème :
#Exécutez une tâche de nettoyage de la mémoire pour récupérer l’espace disque à l’aide d’une invite de commandes Windows PowerShell avec élévation de privilèges :
Start-DedupJob E: -Type GarbageCollection -full
#Copiez les fichiers ailleurs à l’aide d’un outil qui prend en charge le mode E/S non mis en mémoire tampon, tel que XCOPY avec l’option /J ou Robocopy avec l’option /J.
#Vérifier l'intégrité des données du volume et réparer si possible
Start-DedupJob E: -Type Scrubbing -full 

#Il est possible depuis 2012r2 "d'étendre" un fichier dans son état initial si nécessaire pour des besoins de performances ou de compatibilités applicatives.
Expand-DedupFile -Path "D:\partage\fichier3.doc"

#Déterminer la récupération de l’espace possible avec la cmdlet Measure-DedupFileMetadata
#vous pouvez déterminer la quantité d’espace disque possible pouvant être récupérée sur un volume si vous supprimez un groupe de dossiers, un seul dossier ou un seul fichier, puis exécutez une tâche de nettoyage de la mémoire.
#La valeur DedupDistinctSize indique la quantité d’espace récupérée si vous supprimez ces fichiers.
Measure-DedupFileMetadata -path e:\dossier1,e:\fichier1

#La déduplication utilise deux services :
#Service de déduplication des données : Gère la déduplication des données
#Service de cliché instantané des volumes de déduplication des données : Permet de sauvegarder des volumes dédupliqués.

Prochain article, présentation des espaces (pools) de stockage.

Salutation,
Guillaume

lundi 20 avril 2015

Mise en place des dossiers de travail en HTTPS via powershell

Bien le bonjour,

Si vous souhaitez tester les dossiers de travail avec un certificat auto-signé, voici la procédure même si le mieux est d'avoir un serveur de certificats, mais à défaut.
Le processus est le même que pour le HTTP mais sans la clé de registre à modifier et à la place la création et mise en place du certificat.

##Sur le serveur de dossier de travail :
#Ajoutez le service de rôle Dossier de travail situé dans rôle/services de fichiers et de stockage/services de fichiers et iscsi (la console IIS est facultative)
Add-WindowsFeature FS-SyncShareService,Web-Mgmt-Console

#Créer l'enregistrement workfolders pointant sur le serveur de dossier de travail (l'enregistrement workfolders est automatiquement recherché lors de la configuration des clients).
Add-DnsServerResourceRecordCName workfolders -HostNameAlias srv-fs.domaine.tld -zonename domaine.tld

#Créer le certificat autosigné
New-SelfSignedCertificate -DnsName "WorkFolders.domaine.tld" -CertStoreLocation cert:Localmachine\My

#Ajouter le certificat au site par défaut IIS. les commandes suivantes présupposent qu'aucun autre certificat n'est présent dans local\machine\my
$thumbprint=(Get-ChildItem -Path cert:\LocalMachine\My).Thumbprint 
$cert = Get-ChildItem -Path cert:\LocalMachine\My\$thumbprint
New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
get-item $cert | new-item "IIS:\SslBindings\0.0.0.0!443"

#Exporter le certificat
Export-Certificate -Cert $cert -Filepath c:\servercert.p7b -Type P7B

#Copier le fichier sur le client ou déployer le certificat via GPO
Copy-Item c:\servercert.p7b  -Destination \\machine-cliente\c$

#Créer le dossier de synchronisation pour le groupe dl-compta en chiffrant le contenu, en verrouillant automatiquement l’écran, demandant un mot de passe pour déverrouiller, en limitant la taille des fichiers à 2gb et en conservant les permissions héritées.
New-SyncShare Compta -path C:\compta -User domaine\dl-compta -RequireEncryption $true -RequirePasswordAutoLock $true -InheritParentFolderPermission -maxuploadfile 2gb

##Sur le client
#Importer le certiticat
$file = (Get-ChildItem -Path C:\servercert.p7b)
$file | Import-Certificate -CertStoreLocation cert:\CurrentUser\Root

Rechercher ensuite dossier de travail dans le panneau de configuration.
Cliquez sur configurer Dossiers de travail.
Cliquez sur entrer une URL de Dossiers de travail à la place
L'email de l'utilisateur permet juste à l'assistant de connaitre le nom de domaine et de se connecter automatiquement à https://workfolders.ldomaine.tld

Validez les options de chiffrement et les configurations de sécurité imposées.

La synchronisation s'effectue immédiatement à chaque changement. Si aucun changement, une synchronisation à lieu toutes les 10 minutes.

Prochain article. présentation de la déduplication.

Salutation,
Guillaume

vendredi 17 avril 2015

Mise en place des dossiers de travail en HTTP via powershell

Bien le bonjour,

Si vous souhaitez tester les dossiers de travail sans jouer avec les certificats, voici la procédure.

##Sur le serveur de dossier de travail :
#Ajoutez le service de rôle Dossier de travail situé dans rôle/services de fichiers et de stockage/services de fichiers et iscsi (la console IIS est facultative)
Add-WindowsFeature FS-SyncShareService,Web-Mgmt-Console

#Créer l'enregistrement workfolders pointant sur le serveur de dossier de travail (l'enregistrement workfolders est automatiquement recherché lors de la configuration des clients).
Add-DnsServerResourceRecordCName workfolders -HostNameAlias srv-fs.domaine.tld -zonename domaine.tld

#Créer le dossier de synchronisation pour le groupe dl-compta en chiffrant le contenu, en verrouillant automatiquement l’écran, demandant un mot de passe pour déverrouiller, en limitant la taille des fichiers à 2gb et en conservant les permissions héritées.
New-SyncShare Compta -path C:\compta -User domaine\dl-compta -RequireEncryption $true -RequirePasswordAutoLock $true -InheritParentFolderPermission -maxuploadfile 2gb

##Sur le client
#Permettre l'utilisation du http, exécutez la commande suivante dans un invité de commande.
Reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WorkFolders /v AllowUnsecureConnection /t REG_DWORD /d 1

Rechercher ensuite dossier de travail dans le panneau de configuration.
Cliquez sur configurer Dossiers de travail.
Cliquez sur entre une URL de Dossiers de travail à la place
L'email de l'utilisateur permet juste à l'assistant de connaitre le nom de domaine et de se connecter automatiquement à http://workfolders.ldomaine.tld

Validez les options de chiffrement et les configurations de sécurité imposées.

La synchronisation s'effectue immédiatement à chaque changement. Si aucun changement, une synchronisation à lieu toutes les 10 minutes.

Prochain article sur la mise en place des dossiers de travail en HTTPS, avec certificat auto-signé.

Salutation,
Guillaume

mercredi 15 avril 2015

Configuration du chiffrement smb via powershell

Bien le bonjour,

Article sur la configuration du chiffrement smb client/serveur et sur la désactivation du smbv1
Note 1 : Le chiffrement smb n'est supporté qu'à partir de smbv3 (Windows 8, serveur 2012 ou ultérieur)
Note 2 : Ne pas désactiver SMBv1 si vous avez encore des postes sous Windows 2000, XP ou Serveur 2003/R2

#Afficher la configuration du serveur
Get-SmbServerConfiguration

#Afficher la configuration du client
Get-SmbClientConfiguration

#Désactivation smb v1
Set-SmbServerConfiguration -EnableSMB1Protocol:$false
#ou
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force
#ou
Remove-WindowsFeature FS-SMB1

#Activer le chiffrement smb sur le serveur
Set-SmbServerConfiguration -RequireSecuritySignature $true

#Activer le chiffrement smb sur le client
Set-SmbClientConfiguration -RequireSecuritySignature $true

#Permettre aux clients non smb v3 d’accéder aux partages si le chiffrement est activé
Set-SmbServerConfiguration -RejectUnencryptedAccess $false


Prochain article sur les dossiers de travail.

Salutation,
Guillaume

lundi 13 avril 2015

Gestion des sessions et fichiers ouverts sur un partage via powershell

Bien le bonjour,

Voici quelques commandes powershell permettant de gérer les sessions et les fichiers ouverts sur vos partages.

#Lister les sessions smb
Get-SmbSession

#Fermer une session en se basant sur le nom de l’utilisateur
Close-SmbSession -ClientUserName Domaine\nom_utilisateur

#Fermer une session en se basant sur le nom de l’ordinateur
Close-SmbSession -ClientComputerName \\10.0.0.4

#Fermer une session en se basant sur l’id de session
Close-SmbSession -SessionId 395204100293

#Lister les fichiers ouverts
Get-SmbOpenFile

#Lister les fichiers ouverts en se basant sur le nom de l’utilisateur
Get-SmbOpenFile -ClientUserName Domaine\nom_utilisateur

#Fermer un fichier en se basant sur l’id du fichier
Close-SmbOpenFile -FileID 401847881305

#Fermer des fichiers en se basant sur le nom de l’ordinateur

Close-SmbOpenFile -ClientcomputerName nom_ordinateur

#Fermer les fichiers en se basant sur le nom du fichier
Get-SmbOpenFile | Where-Object -Property ShareRelativePath -Match ".DOCX" | Close-SmbOpenFile

#Fermer tous les fichiers ouverts sans demande de confirmation
Get-SmbOpenFile | Close-SmbOpenFile -force

Prochain article sur la configuration du chiffrement smb et sur la désactivation du smb1

Salutation,
Guillaume

vendredi 10 avril 2015

Gestion des permissions de partage via powershell

Bien le bonjour,

Voici comment gérer les permissions pour les partages via powershell.

#Afficher les droits du partage
Get-SmbShare | Get-SmbShareAccess
#ou
Get-SmbShareAccess -Name partage1

#Définir des droits sur les partages
Grant-SmbShareAccess -Name Share1 -AccountName domaine\foo -AccessRight Full -Confirm:$false

#Bloquer un utilisateur ou un groupe
Block-SmbShareAccess -Name Share2 -AccountName domaine\bar -Confirm:$false

#Débloquer un utilisateur ou un groupe
Unblock-SmbShareAccess -Name partage1 -AccountName nom_user_ou_groupe

#Utiliser les droits du partage pour définir les droits NTFS
(Get-SmbShare -Name partage2).PresetPathAcl | Set-Acl
#ou

Set-SmbPathAcl -ShareName partage2

Prochain article sur la gestion des sessions et des fichiers ouverts.

Salutation,
Guillaume

mercredi 8 avril 2015

Création de partage via Powershell

Bien le bonjour,

Article concernant la création de partage via powershell

#lister les commandes disponibles pour les partages
Get-Command -Module smbshare

#Lister les partages
Get-SmbShare

#Création du dossier et partage du dossier
New-Item -Path E:\partage1 -ItemType Directory
New-SmbShare -Name partage1 -Path E:\partage1

#Création du dossier, partage du dossier, application des droits, ajout d’une description et activation du chiffrement
New-Item -Path E:\partage2 -ItemType Directory
New-SmbShare -Name partage2 -Path E:\partage2 -ReadAccess "tout le monde" -ChangeAccess "utilisateurs" -FullAccess Administrateur -Description "Test de partage2" -encryptdata $true

#Suppression d’un partage
Remove-SmbShare -Name partage1

#Modification du partage

Set-SmbShare -Name partage1 -Description “test partage1”

Prochain article sur la gestion des droits des partages via powershell.

Salutation,
Guillaume

lundi 6 avril 2015

Configuration WSUS via powershell, approbation automatique et nettoyage

Bien le bonjour,

Voici comment créer des règles d'approbation automatique et exécuter un nettoyage de WSUS via powershell

##Créer une règle d'approbation automatique
$Wsus = Get-WsusServer
$Rule = $Wsus.CreateInstallApprovalRule("Mise à jour critique")
#Définir une échéance
$Deadline = New-Object Microsoft.UpdateServices.Administration.AutomaticUpdateApprovalDeadline
$Deadline.DayOffset = 3
$Deadline.MinutesAfterMidnight = 180
$Rule.Deadline = $Deadline
#Ajouter une classification à la règle
$Class = $Rule.GetUpdateClassifications()
$Class.Add(($Wsus.GetUpdateClassifications() | Where-Object Title -eq "Mise à jour critique"))
$Rule.SetUpdateClassifications($Class)
#Assigner la règle au groupe d'ordinateurs
$Groups = New-Object Microsoft.UpdateServices.Administration.ComputerTargetGroupCollection
$Groups.Add(($Wsus.GetComputerTargetGroups() | Where-Object Name -eq "Controleurs de domaine"))
$Rule.SetComputerTargetGroups($Groups)
#Activer et sauvegarder la règle
$Rule.Enabled = $true
$Rule.Save()

##Nettoyage de wsus
Invoke-WsusServerCleanup -CleanupObsoleteUpdates -CleanupObsoleteComputers `
-CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates
#CleanupObsoleteComputers : Supprimer les ordinateurs clients obsolètes de la base de données (+ de 30 jours)
#CleanupObsoleteUpdates : Supprimer les mises à jour obsolètes de la base de données
#CleanupUnneededContentFiles : Supprimer les fichiers de mise à jour inutilisés
#CompressUpdates : Supprimer de la base de données les fichiers de mise à jour inutilisés (allègement de la base)
#DeclineExpiredUpdates : Décliner les mises à jour expirées

Prochain article sur la création des partages via powershell.

Salutation,
Guillaume

vendredi 3 avril 2015

Configuration WSUS via powershell

Bien le bonjour,

Article sur la configuration de WSUS, faisant suite à celui sur son installation.

#Configurer la synchronisation automatique :
$subs = $Wsus.GetSubscription()
$subs.SynchronizeAutomatically = $true
$subs.NumberOfSynchronizationsPerDay = 1
$subs.Save()

#Création de la GPO de configuration des postes
New-GPO -Name "WSUS Client"
#Lier la GPO aux objets ordinateurs concernés
New-GPLink -Name "WSUS Client" -Target "OU=Ordinateurs,DC=domaine,DC=tld"
#Configurer la GPO, update.domaine.tld correspond au nom de mon serveur WSUS, 8530 port par défaut.
$wuServer = "http://update.domaine.tld:8530"
Set-GPRegistryValue -Name "WSUS Client" `
-Key "HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU" `
-ValueName "UseWUServer" -Type DWORD -Value 1
Set-GPRegistryValue -Name "WSUS Client" `
-Key "HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU" `
-ValueName "AUOptions" -Type DWORD -Value 2
Set-GPRegistryValue -Name "WSUS Client" `
-Key "HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate" `
-ValueName "WUServer" -Type String -Value $wuServer
Set-GPRegistryValue -Name "WSUS Client" `
-Key "HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate" `
-ValueName "WUStatusServer" -Type String -Value $wuServer

##Côté client
#Mettre à jour les GPO
Gpupdate /force
#Forcer le client à contacter le serveur WSUS
Wuauclt /detectnow

#Création d'un groupe d'ordinateur (exemple)
$Wsus = Get-WsusServer
$Wsus.CreateComputerTargetGroup("Controleurs de domaine")
#Ajouter les ordinateurs dans le groupe
Get-WsusComputer -NameIncludes dc | Add-WsusComputer -TargetGroupName "Controleurs de domaine"

#Lister tous les ordinateurs
Get-WsusComputer -All

#Lister les ordinateurs d'un groupe
Get-WsusComputer -ComputerTargetGroups "Controleurs de domaine"

#Lister les ordinateurs en fonction de leur système d'exploitation et les ajouter dans un groupe
Get-WsusComputer | Where { $_.OSDescription -eq "Windows 8.1" } |
Add-WsusComputer -TargetGroupName "Clients Windows 8.1" -Verbose

#Appouver des mises à jour (au choix : critical, security, wsus, all) pour un groupe
Get-WsusUpdate -Classification Security -Approval Unapproved |
Approve-WsusUpdate -Action Install -TargetGroupName "Clients Windows 8.1"

#Définir la synchronisation via Microsoft update
Set-WsusServerSynchronization -SyncFromMU
#Définir la synchronization via un WSUS en amont

#Set-WsusServerSynchronization -UssServerName <nom-serveur>

Prochain article sur la configuration de règles d'approbation automatique et sur le nettoyage

Salutation,
Guillaume

mercredi 1 avril 2015

Installation WSUS via powershell sur un serveur 2012

Bien le bonjour,

Un petit article sur l'installation de WSUS via powershell.

#Installation WSUS
Install-WindowsFeature UpdateServices -IncludeManagementTools 

#Effectuer la configuration initiale
New-Item E:\WSUS -ItemType Directory
cd 'C:\Program Files\Update Services\Tools\'
.\WsusUtil.exe postinstall content_dir=e:\wsus 

#Afficher la configuration courante
$wsus = Get-WsusServer
$wsus.GetSubscription()

#En cas de Proxy
#$wuConfig = $Wsus.GetConfiguration()
#$wuConfig.ProxyName = "proxy.domaine.tld"
#$wuConfig.ProxyServerPort = 8080
#$wuConfig.UseProxy = $true
#$wuConfig.Save()

#Effectuer la synchronisation initiale
$Subs = $Wsus.GetSubscription()
$Subs.StartSynchronizationForCategoryOnly()

#Effectuer un rapport du status de synchronisation
$Subs.GetSynchronizationProgress() 
$Subs.GetSynchronizationStatus() 
$Subs.GetLastSynchronizationInfo()

#Lister les produits
Get-wsusproduct

#Désactiver toutes les produits
Get-Wsusproduct | Set-WsusProduct -Disable

#Définir les catégories de produit à inclure :
Get-WsusProduct | Where-Object {$_.Product.Title -in ('Windows Server 2012 R2')} | Set-WsusProduct

#Lister les classifications
Get-wsusclassification

#Désactiver toutes les classifications
Get-WsusClassification | Set-WsusClassification -Disable

#Définir les classifications d'update :
Get-WsusClassification | Where-Object { $_.Classification.Title -in ('Mise à jour critique','Mise à jour de la sécurité')} | Set-WsusClassification

#Initier la synchronisation :
$Subs = $Wsus.GetSubscription()
$Subs.StartSynchronization()

Prochain article sur la configuration du service WSUS.

Salutation,
Guillaume