Idée Partage du fichier profile.ps1

Plus d'informations
il y a 17 ans 1 mois #97 par Arnaud Petitjean
Allez je me lance à partager mon fichier profile. N'hésitez pas à faire de même, comme ça on pourra tout mettre en commun et en faire un complet.
[code:1]
# www.PowerShell-Scripting.com
# profile.ps1 version 0.01 du 20/02/2007

# Définition de l'alias Out-Clipboard pour envoier un flux dans le presse-papier.
# Exemple d'utilisation : (get-location).path | out-clipboard
#

Set-Alias -name Out-Clipboard -value \"c:\windows\system32\clip.exe\"

# Modification de l'entete de la fenêtre PowerShell
$host.ui.RawUI.set_windowtitle(\"www.PowerShell-Scripting.com\"«»)

# Modification de la couleur du prompt en jaune
function prompt
{
Write-Host (\"PS \" + $(get-location) +\">\"«») -nonewline -foregroundcolor(\"yellow\"«»)
return \" \"
}
[/code:1]

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 17 ans 1 mois #99 par Robin Lemesle
Il est poli ce powershell, il me dit bonjour. :P


[code:1]# www.PowerShell-Scripting.com
# profile.ps1 version 0.01 du 24/02/2007

# Définition de l'alias Out-Clipboard pour envoier un flux dans le presse-papier.
# Exemple d'utilisation : (get-location).path | out-clipboard
#

Set-Alias -name Out-Clipboard -value \"c:\windows\system32\clip.exe\"

# Modification de l'entete de la fenêtre PowerShell
$host.ui.RawUI.set_windowtitle(\"www.PowerShell-Scripting.com\"«»)


. c:\scripts\out-voice.ps1

\"Bonjour\" | out-voice

# Modification de la couleur du prompt en jaune
function prompt
{
Write-Host (\"PS \" + $(get-location) +\">\"«») -nonewline -foregroundcolor(\"yellow\"«»)
return \" \"
} [/code:1]

Robin MVP PowerShell

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

Plus d'informations
il y a 17 ans 1 mois #102 par x-trem
Réponse de x-trem sur le sujet Re:Partage du fichier profile.ps1
je rajouterai la date date le titre B)


[code:1]# www.PowerShell-Scripting.com
# profile.ps1 version 0.02 du 1/03/2007

# Définition de l'alias Out-Clipboard pour envoier un flux dans le presse-papier.
# Exemple d'utilisation : (get-location).path | out-clipboard
#

Set-Alias -name Out-Clipboard -value \"c:\windows\system32\clip.exe\"

# Modification de l'entete de la fenêtre PowerShell
$date=get-date
$host.ui.RawUI.set_windowtitle(\"www.PowerShell-Scripting.com \" + $date)


# Modification de la couleur du prompt en jaune
function prompt
{
Write-Host (\"PS \" + $(get-location) +\">\"«») -nonewline -foregroundcolor(\"yellow\"«»)
return \" \"
} [/code:1]

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

Plus d'informations
il y a 16 ans 9 mois #505 par Jacques Barathon
Voici le mien:

[code:1]function prompt
{
$nextId = (get-history -count 1).Id + 1;
$currentPath = (get-location).Path.replace($home, \"~\"«»)
$windowsIdentity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$windowsPrincipal = new-object 'System.Security.Principal.WindowsPrincipal' $windowsIdentity
if ($windowsPrincipal.IsInRole(\"Administrators\"«») -eq 1)
{
$color = \"Red\"
$role = \"Admin\"
}
else
{
$color = \"Green\"
$role = \"User\"
}
$dirs = ([array](gci | where {$_.PSIsContainer})).length
$files = ([array](gci | where {! $_.PSIsContainer})).length
$host.UI.RawUI.windowTitle = ($CurrentPath + \" (as \" + $role + \"«»)\"«»)
write-host ((split-path -leaf $CurrentPath) + \"[\" + $files + \"/\" + $dirs + \"]>\"«») -nonewline -foregroundcolor $color
return \" \"
}

set-location $home

# mettre à jour le PATH pour la session en cours si ce n'est pas déjà fait
$(join-path (split-path $profile) Scripts), \"c:\localbin\" | foreach {
if ($env: path -notcontains $_) {$env: path+=\";$_\"}
}

# créer quelques alias maison:
#
gcm -noun object|%{set-alias $_.Verb $_ -ea silentlycontinue}

foreach ($drive in get-psdrive){
$name = $Drive.Name + ':';
invoke-expression \"function global:$name {set-location $name}\"
}

# ajouter mes définitions de types
#
write-host \"Updating type information:\"
gci \"$(split-path $profile)\scripts\startup\"|? {$_.name -match \"types.ps1xml$\"}|% {$_.fullname; update-typedata $_.fullname}

# exécuter tous les scripts présents dans le sous-répertoire \Scripts\Startup
#
write-host \"Executing scripts:\"
gci \"$(split-path $profile)\scripts\startup\"|? {$_.extension -eq \".ps1\"}|% {$_.fullname; . $_.fullname}
[/code:1]

Attention, dans l'affichage du code ci-dessus j'ai été obligé d'ajouter un espace entre $env: et path pour éviter la conversion en smiley (ça aurait donné ça: $env:path)...

Sinon, j'ai supprimé à la fin la partie ajoutée par l'installation de PowerTab - à installer sans attendre si vous ne l'avez toujours pas fait! Voir dans les liens de ce site, le blog de MOW (aka The PowerShell Guy).

Janel

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

Plus d'informations
il y a 14 ans 5 mois #5583 par Laurent Dardenne
Le profile que j'utilse reprend qq éléments des précedents profiles :
[code:1]
#Profile utilisateur de PowerShell 1.0

#Modification de la console
#Informations identiques à celles de la fenêtre de propriétes de la console PS
#Taille de la mémoire écran
$B=new-object System.Management.Automation.Host.Size 120,5000
$host.ui.rawui.buffersize=$B
remove-variable B

#Taille de la fenêtre
$W=new-object System.Management.Automation.Host.Size 120,50
$host.ui.rawui.windowsize=$W
remove-variable W

$PSProfile=$Home+\"\Mes documents\WindowsPowerShell\"
$PSScripts=$PSProfile+\"\Scripts\"

#Outils dédiés à PowerShell
$PSTools=$PSProfile+\"\Tools\"

#
Fonctions
function cd.. {cd ..}
# A la VB.net. Accès rapide à certaines informations
#Todo : Objet personnalisé
function My {[void](cd $PSProfile);Get-Location}
function My.S {[void](cd $PSScripts);Get-Location}

function SigneAll( [switch] $Recurse) {
get-location|
#pb avec gci !?
get-childitem -filter * -Recurse:$Recurse|
Where {($_.extension -eq \".ps1\"«») -or ($_.extension -eq \".ps1xml\"«»)}|
Signe
}

function NestedPrompt{$host.EnterNestedPrompt()}
function dbgOn {$global:«»DebugPreference=\"continue\"}
function dbgOff {$global:«»DebugPreference=\"Silentlycontinue\"}
#Insère dans l'event log \"Windows PowerShell\", les lignes saisies dans la console PS
function LogCmd([boolean] $State){$global:LogCommandLifecycleEvent = $State}

#Affiche le snapin
function Verb([String] $Verb=\"*\"«») {gcm -Verb $Verb|Sort Name|select CommandType,Name,PSSnapin}
function Noun([String] $Noun=\"*\"«») {gcm -Noun $Noun|Sort Name|select CommandType,Name,PSSnapin}

function Function: {set-location Function:}

function HostTitre {Param ([string]$Titre=\"PowerShell\"«»); $host.UI.RawUI.WindowTitle=$Titre }
function prompt{
HostTitre $PWD
'PS ' + $(Get-Location) + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
}

#
Scripts externes
# si PSCX est présent on ne charge par Resolve-Error.ps1
$Local:F=Get-Childitem $PSScripts|Where {$_.Extension -eq '.ps1'}|% {if (!(($Pscx:Home) -and ($_.name -eq \"Resolve-Error.ps1\"«»))) {$_} }
if ($Local:F -ne $null)
{
Write-Host \"`n`rImport des scripts externes du répertoire :`r`n $PSScripts\"
$Local:FName=\"\"
$Local:F|Foreach {
trap [System.Management.Automation.PSSecurityException]
{Write-Warning \"Fichier sans signature : $(split-path $FName -leaf) \"; Continue}
$Local:FName=split-path $_.Fullname -leaf
Write-Host \"$FName \" -noNewLine;
. $_.Fullname
}
}
else {Write-Host \"`n`rAucun scripts externes\"}

#
Types personnalisés
$Local:F=Get-Childitem $PSScripts|Where {$_.name -match 'types.ps1xml$'}
if ($Local:F -ne $null)
{
Write-Host \"`n`rImport des types personnalisés\"
$Local:F|Foreach {$_.Fullname; Update-TypeData $_.Fullname}
}
else {Write-Host \"`n`rAucun type personnalisé\"}

#
Formatages personnalisés
$Local:F=Get-Childitem $PSScripts|Where {$_.name -match 'format.ps1xml$'}
if ($Local:F -ne $null)
{
Write-Host \"`n`rImport des formatages personnalisés\"
$Local:F|Foreach {$_.Fullname; Update-FormatData -prepend $_.Fullname}
}
else {Write-Host \"`n`rAucun formatage personnalisé\"}


#
Alias
# Envoie un flux PS dans le presse-papier.
# Exemple d'utilisation : (get-location).path | out-clipboard
Set-Alias -name Out-Clipboard -value $PSProfile+\"\clip.exe\"

#Mode debug
new-alias sdbg Set-Psdebug -description \"Debug: dbg -t [0..2]\" -option Constant
function sdbgF {sdbg -trace 2}
function sdbgO {sdbg -off}

#Outil d'enregistrement de cmdlet
set-alias installutil $env:windir\Microsoft.NET\Framework\v2.0.50727\installutil

if ($Pscx:Home)
{
function PSCX {set-location PSCX:}
Write-Host \"[PSCX] PowerShell Community Extensions installé.\" -foreground Green
new-Psdrive -name PSfeed -Psprovider FeedStore -root Feed:«»PowerShell
#dir PSfeed:

}

. \"C:\Program Files\PowerShell\Add-Lib\Profile\Add-LibConfig.ps1\"

if (Test-Path \"$PSTools\DoIt.ps1\"«»)
{
#Commandes hors profile, selon le besoin...
.\"$PSTools\DoIt.ps1\"
}
Remove-Item Variable:F
Remove-Item Variable:FNAME
[/code:1]
J'utilise PSCX et Add-Lib .<br><br>Message édité par: Laurent Dardenne, à: 9/12/09 14:30

Tutoriels PowerShell

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

Plus d'informations
il y a 14 ans 5 mois #5655 par Madrolle
Réponse de Madrolle sur le sujet Re:Partage du fichier profile.ps1
Rien de très original pour moi

[code:1]

# Tronque un path trop long et affiche mon user courant dans la barre de titre, indique les rôles de l'utilisateur.

function prompt
{
$cwd = (get-location).Path

[array]$cwdt=$()
$cwdi=-1
do {$cwdi=$cwd.indexofany(\&quot;\\\&quot;,$cwdi+1) ; [array]$cwdt+=$cwdi} until($cwdi -eq -1)

if ($cwdt.count -gt 3) {
$cwd = $cwd.substring(0,$cwdt[0]) + \&quot;\..\&quot; + $cwd.substring($cwdt[$cwdt.count-3])
}

$identity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$principal = new-object System.Security.Principal.WindowsPrincipal($identity)
$allRoles=[System.Security.Principal.WindowsBuiltInRole] | gm -Static -type property | select name
$allRoles | ?{ $principal.IsInRole( [System.Security.Principal.WindowsBuiltInRole]::$($_.name) )} | %{$roles+=$_.name+','}
[string[]]$global:g_roles=$roles.TrimEnd(',').split(',')

if ($env:USERDNSDOMAIN -eq $()) { $dom=$env:COMPUTERNAME } else { $dom=$env:USERDNSDOMAIN }
$host.UI.RawUI.WindowTitle = \&quot;$dom\$($env:username) ($($roles.TrimEnd(',')))\&quot;
$host.UI.Write(\&quot;Yellow\&quot;, $host.UI.RawUI.BackGroundColor, \&quot;[PS]\&quot;)
\&quot; $cwd&gt;\&quot;
}

#---- Alias Quest 1.2.2

set-alias -name cser -value connect-qadservice

set-alias -name dser -value disconnect-qadservice

#---- Fonctions complémentaires
# récupérée ici dmitrysotnikov.wordpress.com/?s=Measure-Latest

function Measure-Latest {
BEGIN { $latest = $null }
PROCESS {
if (($_ -ne $null) -and (($latest -eq $null) -or ($_ -gt $latest))) {
$latest = $_
}
}
END { $latest }
}

function Read-HostToArray {
param([String]$fin='.')

[string[]]$tab=@()
Write-Host \&quot;Collez ici vos données .\&quot;

do {
$tab+=$(read-host)
} until ($tab -eq $fin)

if ($fin -eq ''){ $cut=3 } else { $cut=2 }
$tab[0..$($tab.length-$cut)]
}
[/code:1]

----

Petite mise à jour du prompt pour afficher les Roles.

Message édité par: Perso, à: 22/11/09 08:47

Ajout de la fonction 'Read-HostToArray'<br><br>Message édité par: Perso, à: 28/11/09 08:17

ShellDealer sur Twitter

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

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