PowerShell
Connaitre la version de PowerShell:
Admin> $PSVersionTable
(s’incrémente a partir de $PSV)
Utilisateurs:
vérifier qui est connecté sur un poste dont on connait le nom.
on peu vérifier les ordinateurs connectés la liste du serveur DHCP; une fois identifié le poste, on peu lancer la commande ( ici les poste s appelle « serveur2019 et UD2_WIN10″):
Admin> quser /server:serveur2019 (répond l’administrateur)
Admin> quser /server:UD2_WIN10 (répond p.costau)
Si on veut fermer une session d’un utilisateur depuis le serveur si on connait le poste utilisé, la commande > quser /server:UD2_WIN10 nous donne le nom de l’utilisateur et l’ID de sa session :
ici l’ID de la session est 4 , on va donc utilisé la commande :> logoff IDSESSION /server:NOMDUPOSTE soit :
> logoff 4 /server:UD2_WIN10
pour la création d’un utilisateur AD en powershell, on peut sécuriser le mot de passe dans une variable:
$password = « P@ssw@rd » | convertto-securestring -asplaintext -force
le mot de passe P@ssw@rd est donc stocker de façon sécurisé dans la variable $password
new-aduser -name « usertest » -accountpassword $password -samaccountname « utest » -cannotchangepassword $false -city « bergerac » -description « utilisateur de test » -passwordneverexpires $true
c’est un exemple et a part le mot de passe et le samaccountname les autres options ne sont pas obligatoires.
Création d’un groupe en AD
new-adgroup -groupescope globale -name Groupe-comptabilité -description » groupe de la comptabilité » -displayname G_compta
Ajout d’un utilisateur dans un groupe
Add-adgroupmember -identity ‘G_compta’ -members ‘nguillin’
Quand un nouvel ordinateur est connecté au domaine, il est directement enregistré dans le conteneur Computeurs (utilisateur et ordinateurs active directory)
on peu transférer les Nouveaux PC dans une ou que l’on aura créé au paravent avec cette commande ms-dos:
>> redircmp « OU=Cordinateurs, DC=formation, DC=local »
la commande transférera tous els ordinateurs existant du conteneur Computeurs ainsi que les prochains ordinateurs qui se connecteront au domaine.
Utilitaires
afficher la configuration reseau :
Admin>Get-NetIPConfiguration
Afficher les fonctionnnalités disponibles
admin>Get-WindowsCapability -online
La meme en specifant une recherche :
admin>Get-WindowsCapability -online | ? Name -like « *ssh* »
Installer la fonctionnnalité :
admin>Add-WindowsCapability – online – Name OpenSSS.Server~~~~0.0.1.0
Créer un dossier
admin>New-Item -ItemType Directory -Path c:\data\dossiertest
Créer un fichier
admin>New-Item -ItemType File -Path c:\data\test.txt
Lire un fichier texte:
admin>get-content c:\data\test.txt
ouvrir le fichier
admin>notepad c:\data\test.txt
exécuter 2 commandes à la suite ( séparées par un 😉
admin>get-date; get-item c:\windows
afficher la liste des commande :
admin> get-command
rechercher une commande get ( idem new ou autres)
admin> get-command -verb get
rechercher une commande avec le nom alias :
admin>get-command -noun alias
afficher des infos sur un module :
admin>get-command -module microsoft.powershell.archive
affiche les fonctions du module
calculer le nom de lignes d’une resultat de commande :
admin>(get-command).count
recuperer les commandes de type comandelet ( ou autre type):
admin>get-command- comandtype cmdlet
rechercher une commande avec une partie du nom
admin>get-command *date*
afficher les infos du powershell ( dont le fichier de l’historique):
admin>get-psreadlineoption
afficher l’historique des commandes:
admin>get-history
effacer l’historique:
admin>clear-history
afficher l’aide d’une commande:
admin>get-help get-verb
afficher des exemples d’utilisation:
admin>get-help get-verb -example
admin>get-help about_if
envoyer le résultat d’une commande dans un fichier:
admin>get-process | out-file c:\data\proces.txt
sélectionner seulement le nom d’une résultat:
admin>get-process | select-object name
admin>get-process | select-object name | out-file c:\data\proces.txt
paginer le résultat d’une commande
admin>get-command | out-host -paging
afficher le résultat d’une commande en tableau (au lieu d’une liste)
admin>get-host | format-table
admin>get-process | format-list
admin>get-process | format-list -property name
les alias:
on va créer une alias gcd qui renvoie la command : « get-command »
admin>new-alias -name gcd -value get-command ( il n est pas persistant)
afficher la liste des alias:
admin>get-alias
supprimer un alias:
admin>remove-alias -name gcd
importer un fichier alias
admin>import-alias -path c:\data\alias.txt
les providers:
lister les providers:
admin>get-psproviders
admin>get-psdrive
changer d’emplacement
admin>set-location h:
admin>get-item + tabulation
se placer dans le registre :
admin>set-location hkcu
créer une clé
admin>new-item -name test
admin>remove-item hkcu:\test
provider ENV
se placer dedans:
set-location env:
afficher les item:
dir
afficher une item en particulier
get-item env:\computername
Exemple d’utilisation
admin>get-service | ForEach-Object { if ($_.status -eq « stopped ») {« service arrété: « + $_.name } }
Redirection vers fichiers :
> redirige la sortie vers un fichier et écrase le contenu du fichier.
>> redirige la sortie vers un fichier sans écraser le contenu déjà existant.
2> redirige les messages d’erreurs vers un fichier et écrase le contenu du fichier existant.
2>> redirige les messages d’erreurs vers un fichier sans écraser le contenu existant.
afficher l’emplacement du profile de chaque utilisateur :
admin>$profile
afficher l’emplcement du profile pour tous les utilisateur:
admin>$profile .allusersallhosts
afficher le contenu d’un dossier:
admin>get-childitem -path c:\data
on peut rajouter un parametres pour la recursivité
admin>get-childitem -path c:\data -recurse
-file ne liste que les fichiers
-directory ne liste que les dossiers
(get-item -path c:\data\erreur.txt).fullname
(get-item -path c:\data\erreur.txt).exists
(get-item -path c:\data\erreur.txt).delete()
création d’un ficher avec du contenu
new-item -itemtype file -path c:\data\ -name test3.txt -value » powershell »
supprimer un fichier
remove-item -path c:\data\test.txt
copier un fichier
admin>copy-item -path c:\data\test1.txt -destination c:\documents\test1.txt
déplacer un fichier
admin>move-item -path c:\data\test\ -destination c:\documents\
renomer un fichier
admin>rename-item -path c:\data\tes1.txt -newname testok.txt
création d’un dossier
admin>new-item -itemtype directory -path c:\data\ -name dossiertest
supprimer un dossier :
admin>remove-item -path c:\data\dossiertest
si le dossier n’est pas vide, il faut rajouter un paramètre
admin>remove-item -path c:\data\dossiertest -force
copier un dossier
admin>copy-item -path c:\data -recurse -destination c:\documents\
afficher les services
admin>get-service
afficher les services en cours
admin>get-service | where-object -property status -eq « running »
afficher les status desctivés
admin>get-service | where-object -property starttype -eq « disabled »
afficher les ervices differement
admin>get-service | select-object displayname, status, statrype
arreter un service
admin>stop-service -name adobearmservice
demarrer le service:
admin>start-service adobearmservice
changer son type de demarrage:
admin>set-service -name adobearmservice -startuptype disabled (ou automatic, manual)
admin>start-process cmd -argumentlist « /k ipconfig »
enregistrer toutes entrées dans powershell:
admin>Start-Transcript -OutputDirectory c:\data\log
stoper l’enregistrement :
admin>stop-transcript
Script Powershell
mettre un commentaire:
# comme dans python ou
<# au debut et #> pour commenter sur plusieurs lignes
on peu aussi mettre des region avec
delimiter une partie de script(permet de replier le script
#region partie 1 du script
script
#end region
#requires (permet de specifier un element qui etere requis ( ex : version de powershell))