Question
es-ce que vous êtes satisfait de la V3
- jojo
- Auteur du sujet
- Hors Ligne
- Membre elite
- Messages : 187
- Remerciements reçus 0
tout est dans le titre....es-ce que le team de PS a \"oublier\" d'ajouter à PS3 une chose que vous juger importante ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
De la doc, de la doc et du temps pour étudier la doc.es-ce que le team de PS a \"oublier\" d'ajouter à PS3 une chose que vous juger importante ?
Sinon, des directives de 'parsing conditionnel' :
Je pense que je vais proposer ce souhait d'évolution à l'équipe pour la prochaine version.#ifdef Version 3.0
(Get-Process).Close()
#else
Get-Process|Foreach {$_.Close()}
#endif
#ifdef Debug
Write-info debug
Write-debug xx
Send-debugger $Object
#endif
...suite du code de production
#ifdef x86
...
#ifdef Windows_2008r2
...
On peut déjà faire une fonction qui filtre sur un couple de tag avec des regex , mais il faut du temps pour la coder...
Et aussi un éditeur/cmdlets pour générer des fichiers MAML (fichier d'aide au format XML).
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- jojo
- Auteur du sujet
- Hors Ligne
- Membre elite
- Messages : 187
- Remerciements reçus 0
Laurent Dardenne écrit:
Sinon, des directives de 'parsing conditionnel' :
#ifdef Version 3.0
(Get-Process).Close()
#else
Get-Process|Foreach {$_.Close()}
#endif
#ifdef Debug
Write-info debug
Write-debug xx
Send-debugger $Object
#endif
...suite du code de production
#ifdef x86
...
#ifdef Windows_2008r2
...
c'est bien, ça ressemble aux instructions IE, et c'est plus flexible que la directive #requires
Laurent Dardenne écrit:
des regex
j'espère que le team PS ajoutera à l'arsenal un objet personnaliser contenant des Regex's pour faciliter le parsing et avoir des pattern prêt pourr l'utilisation, pourquoi réinventer la roue , on porra l'utiliser ainsi:
[code:1]
$mail -match $Regex.email
$url -match $Regex.uri
[/code:1]
et tant qu'on parle des Regex es-ce que en V3 l'opérateur -match a un alias -m
?
Laurent Dardenne écrit:
Et aussi un éditeur/cmdlets pour générer des fichiers MAML (fichier d'aide au format XML).
ça c'est génial, le mieux est de créer un nouveau volée spécialiser dans l'edition des fichiers MAML avec coloration syntaxique, intelisense..etc et l'intégrer à ISE
Message édité par: jojo, à: 6/10/12 21:24
Message édité par: jojo, à: 6/10/12 21:27<br><br>Message édité par: jojo, à: 6/10/12 21:29
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
Tu peux déjà le faire, ce n'est qu'une question de structure de données, cf. projet PSCX.j'espère que le team PS ajoutera à l'arsenal un objet personnaliser contenant des Regex's, on porra l'utiliser ainsi:
jojo écrit:
Non. Et ce n'est pas plus mal !et tant qu'on parle des Regex es-ce que en V3 l'opérateur -match a un alias -m
?
jojo écrit:
Dans la v3, il est possible d'ajouter des Add-On codés en C#.et l'intégrer à ISE
Sur le sujet du parsing conditionnel, une fonction à la v1, qui sert juste à retirer des lignes, pas d'imbrication de directives, etc... :
[code:1]
#<IFDEF %V3%>
#requires -Module PSDiagnostics
#<IFDEF %V3%>
#Remove-Conditionnal.ps1
Filter Remove-Conditionnal {
param ([String]$ConditionnalsKeyWord)
function Parse([String] $FileName,[String]$ConditionnalsKeyWord)
{ #renvoi toutes les lignes sauf celles du bloc de la 'directive'
$isDirectiveBloc=$False
Get-Content -Path $FileName|
Foreach-Object {
switch -regex ($_)
{
\"^#<\s*IFDEF %${ConditionnalsKeyWord}%>\" {$isDirectiveBloc=$True;continue}
\"^#<\s*ENDIF %${ConditionnalsKeyWord}%>\" {$isDirectiveBloc=$False;Continue}
default {
if ($isDirectiveBloc -eq $false)
#On traite les lignes qui ne se trouvent pas dans le bloc de la 'directive'
{$_}
}#default
}#Switch
}#Foreach
}#Parse
if ($_ )
{
#Récupére un nom de fichier créé par l'OS
$TempFile = [IO.Path]::GetTempFileName()
$FullPath=Resolve-Path \"$_\"
#<IFDEF %DEBUG%>
Write-Debug \"$TempFile\"
Write-Debug \"$FullPath\"
#<ENDIF %DEBUG%>
#Extrait toutes les lignes, sauf celles contenues dans un bloc de directive', dans un fichier temporaire
Parse \"$FullPath\" $ConditionnalsKeyWord|Set-Content \"$TempFile\"
#Ecrase le fichier d'origine à partir du fichier temporaire
#$FileInfo.Replace ne fonctionne pas car %Temp%
#peut être sur un disque différent de celui de la source :/
Get-Content \"$TempFile\"|Set-Content \"$FullPath\"
Del \"$TempFile\"
#<IFDEF %DEBUG%>
Write-Debug \"Fin\"
#<ENDIF %DEBUG%>
}
else {Write-Error \"[Remove-Conditionnal] Ce filtre a reçu une donnée `$null du pipeline.\"}
} #Remove-Conditionnal
#<IFDEF %TEST%>
Set-Location C:\Temp
md Test
Copy-Item \"Remove-Conditionnal.ps1\" C:\Temp\Test
Set-Location C:\Temp\Test
\"Remove-Conditionnal.ps1\"|Remove-Conditionnal \"DEBUG\"
\"Remove-Conditionnal.ps1\"|Remove-Conditionnal \"TEST\"
#<ENDIF %TEST%>
[/code:1]
ça ne casse pas trois pattes à un canard, mais peut aider
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- es-ce que vous êtes satisfait de la V3