PowerShell

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)
gpo91

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 :
gpo92
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))