Question reduire les parametres d'une function

Plus d'informations
il y a 11 ans 5 mois #18271 par usopp

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é ? :silly: entre le premier oui et le dernier il y a une énorme différence :p

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 :P

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.

Plus d'informations
il y a 11 ans 4 mois #18272 par usopp

$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

je viens de tester ton code je viens de voir le principe merci :)

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 :S

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18273 par Laurent Dardenne
usopp écrit:

dur de répondre a ton questionnaire

Celui-ci est à titre indicatif.
usopp écrit:

entre le premier oui et le dernier il y a une énorme différence

Oui, seul le pipeline est ici important, les autres points, ormis le dernier, concernent des fonctionnalités avancées de Powershell.
usopp écrit:

moi perso au boulot tous les gens qui font du powershell ont aucune notion du vocabulaire

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.
usopp écrit:

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 :P

C'est un autres sujet, quoique intéressant.
usopp écrit:

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

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.
Pour les comportements on peut lire les spécifications de Powershell...

usopp écrit:

je viens de tester ton code je viens de voir le principe merci :)

Sur les fonctions avancées tu peux visionner ceci .
usopp écrit:

par contre si je veux afficher tout les serveurs avec leur service en exist et running ben j'ai pas trouver comment faire

Une piste :
[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:

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

C'est ici que tu dois construire d'autres objets dédiés au rapport final.
usopp écrit:

et les utilisateurs de ce script risque encore - de trouver la bonne commande

Oui, c'était juste un exemple rapido, maintenant tu abordes le fonctionnel et l'usage.
Je te l'ai dit précédement :
Laurent Dardenne écrit:

cela dépend de ce que tu veux faire avec tes objets

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é :-)<br><br>Message édité par: Laurent Dardenne, à: 22/10/14 10:23

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18274 par usopp
merci pour la videos ! :)

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.

Plus d'informations
il y a 11 ans 4 mois #18276 par Laurent Dardenne
usopp écrit:

..j'ai des deadline pour les scripts..vais me contenter de faire du code de crasseux

:P
On en reviens au 'savoir faire sans apprendre'.
usopp écrit:

je crois pour l'instant je vise trop haut

Je ne pense pas que cela soit si haut que ça.
Sans avoir le temps d'apprendre ce n'est pas facile de décoller :laugh:

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18278 par usopp

Je ne pense pas que cela soit si haut que ça.

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:(

biensur certains me diront que j'ai les weekends et soirée pour apprendre au risque de finir celib :lol:

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.088 secondes
Propulsé par Kunena