Question reduire les parametres d'une function
- usopp
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 34
- Remerciements reçus 0
Connaissez-vous :
- le fonctionnement et la gestion des exceptions dans un langage de programmation?
Oui ☐ Non ☐
- le framework dotnet (objet, Garbage Collector, type de données, managed code) ?
Oui ☐ Non ☐
- WMI (Classe, namespace) ?
Oui ☐ Non ☐
- les principes du pipeline ?
Oui ☐ Non ☐
- les principes de base de la programmation objet (POO) : objet, méthode, propriété, héritage (classe), Polymorphisme ?
Oui ☐ Non ☐
- ceux de la programmation événementielle : gestion d’événement et traitement asynchrone ?
Oui ☐ Non ☐
- les expressions régulières (appelés aussi regex) ?
Oui ☐ Non ☐
- le principe de gestion de version de code source, tel Subversion ou CVS ?
Oui ☐ Non ☐
dur de répondre a ton questionnaire
oui = je maitrise, oui je connait un peu, oui j'ai entendu parlé ?
moi perso au boulot tous les gens qui font du powershell ont aucune notion du vocabulaire etc ils scriptent tous un tas de truc en faisant juste 2-3 functions pour la forme et voila ils essayent pas de bosser avec des collections d'objets etc..
tu peux coder comme un crasseux et faire un code fonctionnel, ils sera très dur a le faire évoluer / debugger mais qui dérange pas énormément de gens
Le truc c'est qu'avec PS on ne fait pas attention aux détails, comme avec ces langages. A moins d'écrire des outils pour des admins.
oui c'est un avantage et un inconvénient je trouve defois je trouve que le powershell fait un peu n'importe quoi quand on le maitrise pas en particulier quand on cast pas les variables dans certains cas on a des résultats surprenant..
De mon côté je m'efforce d'expliquer, là ou certains veulent juste savoir faire. C'est peut être une des raisons qui fait que mes doc nécessitent plus d'efforts.
Sur le net on peut trouver à la pelle des infos sur 'comment faire' ceci ou cela. Ne serait-ce que lire la doc et les fichiers About_xxx.
exact ! mais c'est tellement poussé que c'est réservé a une minorité d'utilisateurs je pense.. mais bon ce genre de documents est précieux quand on atteins un certain niveau:P
pour l'instant je vais relire des cours de base avant de relire les tiens et te faire un retour
Connexion ou Créer un compte pour participer à la conversation.
- usopp
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 34
- Remerciements reçus 0
je viens de tester ton code je viens de voir le principe merci$DebugPreference = \"continue\"
Function Get-ServicesStatus {
[CmdletBinding()]
Param (
[Parameter(Mandatory=$true)]
[string]$ServerName,
[String[]] $Services
)
#Niveau 1: porte une collection
$Properties =@{
Name=$ServerName
ServicesStatus=New-Object System.Collections.Arraylist
}
$Object = New-Object PSObject -Property $Properties
$Services|
Foreach {
$ServiceName=$_
$CurrentService=Get-Service $ServiceName -ea SilentlyContinue
$isExist=$CurrentService -ne $null
#Niveau 1.1: crée un nouvel objet
$Service=New-Object PSObject -Property @{
Name=$ServiceName;
Exist=$isExist;
State=if ($isExist) {$CurrentService.Status} else {$null}
}
#Niveau 2: Ajoute l'objet dans la collection
[void] $Object.ServicesStatus.Add($Service)
}
Write-Output $Object
}#Get-ServicesStatus
$Srv=Get-ServicesStatus localhost winrm,Power,bthserv,NotExist
par contre si je veux afficher tout les serveurs avec leur service en exist et running ben j'ai pas trouver comment faire
avec ca cela m'affiche le name exist et state mais pas le nom du serveur et d'autre information dont j'aurais besoin d'afficher
$Srv.ServicesStatus | ? { $_.exist -eq 1} |ft -autosize
Name Exist State
----
winrm True Running
Power True Running
bthserv True Stopped
et les utilisateurs de ce script risque encore - de trouver la bonne commande
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Celui-ci est à titre indicatif.dur de répondre a ton questionnaire
usopp écrit:
Oui, seul le pipeline est ici important, les autres points, ormis le dernier, concernent des fonctionnalités avancées de Powershell.entre le premier oui et le dernier il y a une énorme différence
usopp écrit:
Le vocabulaire informatique est tout de même spécifique, lorsqu'on utilise le même référentiel on risque moins d'incompréhension.moi perso au boulot tous les gens qui font du powershell ont aucune notion du vocabulaire
usopp écrit:
C'est un autres sujet, quoique intéressant.etc ils scriptent tous un tas de truc en faisant juste 2-3 functions pour la forme et voila ils essayent pas de bosser avec des collections d'objets etc..
tu peux coder comme un crasseux et faire un code fonctionnel, ils sera très dur a le faire évoluer / debugger mais qui dérange pas énormément de gens
usopp écrit:
L'apprentissage, à mon avis, passe par la connaissance de ces comportements, au moins les plus courant, la maîtrise vient avec le temps au travers des différent traitements que l'on automatise.oui c'est un avantage et un inconvénient je trouve defois je trouve que le powershell fait un peu n'importe quoi quand on le maitrise pas en particulier
Pour les comportements on peut lire les spécifications de Powershell...
usopp écrit:
Sur les fonctions avancées tu peux visionner ceci .je viens de tester ton code je viens de voir le principe merci
usopp écrit:
Une piste :par contre si je veux afficher tout les serveurs avec leur service en exist et running ben j'ai pas trouver comment faire
[code:1]
Function Test-ServicesStatus {
[CmdletBinding()]
Param (
$Services
)
Foreach ($Current in $Services){
Write-debug \"Valide $($Current.Name)\"
if (($Current.Exist -ne $true) -and ($Current.State -ne\"Running\"«»))
{ return $false }
}
return $true
}
$Srv=@(Get-ServicesStatus localhost winrm,Power,bthserv,NotExist)
$Srv +=Get-ServicesStatus localGhost winrm,Power,bthserv,NotExist
$Srv +=Get-ServicesStatus localPhost winrm
Test-ServicesStatus $Srv[0].ServicesStatus
Test-ServicesStatus $Srv[2].ServicesStatus
[/code:1]
usopp écrit:
C'est ici que tu dois construire d'autres objets dédiés au rapport final.avec ca cela m'affiche le name exist et state mais pas le nom du serveur et d'autre information dont j'aurais besoin d'afficher
usopp écrit:
Oui, c'était juste un exemple rapido, maintenant tu abordes le fonctionnel et l'usage.et les utilisateurs de ce script risque encore - de trouver la bonne commande
Je te l'ai dit précédement :
Laurent Dardenne écrit:
Là, personne ne peut t'aider, car pour l'instant tu es le seul à le savoir. Pour proposer une solution il faut déjà connaitre le problème dans son intégralitécela dépend de ce que tu veux faire avec tes objets
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- usopp
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 34
- Remerciements reçus 0
bon ben je crois pour l'instant je vise trop haut ..j'ai des deadline pour les scripts..vais me contenter de faire du code de crasseux en attendant d'avoir un peu plus de temps pour lire et apprendre et pouvoir mettre en application tout ca...merci en tout cas j'ai appris pleins de trucs
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
..j'ai des deadline pour les scripts..vais me contenter de faire du code de crasseux
On en reviens au 'savoir faire sans apprendre'.
usopp écrit:
Je ne pense pas que cela soit si haut que ça.je crois pour l'instant je vise trop haut
Sans avoir le temps d'apprendre ce n'est pas facile de décoller
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- usopp
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 34
- Remerciements reçus 0
non c'est pas forcement un truc de fou mais avec une deadline ultra short je peux pas me permettre de tester 50 trucs que je maitrise absolument pas pendant des heures:(Je ne pense pas que cela soit si haut que ça.
biensur certains me diront que j'ai les weekends et soirée pour apprendre au risque de finir celib
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- reduire les parametres d'une function