-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPowerShellShell.ps1
More file actions
166 lines (150 loc) · 6.78 KB
/
PowerShellShell.ps1
File metadata and controls
166 lines (150 loc) · 6.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#ajustes predeterminados:
$global:verComandoTrasEjecucion = 'yes'
function pause {
Write-Host '...' -NoNewline -ForegroundColor Magenta
Read-Host | Out-Null
}
function ayudaTodo {
# Mostrar ayuda
Clear-Host
Write-Host ' _______________________________________________________________________________________________________________________________________'
Write-Host '| AYUDA-----------Ayuda es un comando para mostrar ayuda, puedes seguirlo con el nombre del comando para mostrar su ayuda específica |'
Write-Host '| INFO------------Info es un comando usado para conseguir información. |'
Write-Host '| AJUSTE----------Ajuste es para cambiar los ajustes |'
Write-Host '| DECIR-----------Decir seguido de cualquier otra cosa va a mostrar ese texto |'
Write-Host '|_______________________________________________________________________________________________________________________________________|'
pause
}
function ayuda {
param (
[string]$comando
)
Write-Host ''
Write-Host '---------------------------------------' -ForegroundColor Yellow
Write-Host ''
if ($comando.ToLower() -eq 'ayuda') {
Write-Host 'Ayuda es un comando para conseguir documentación:' -ForegroundColor Cyan
Write-Host ''
Write-Host 'Caso 1 | ' -NoNewline -ForegroundColor Gray
Write-Host 'AYUDA: Muestra un resumen.' -ForegroundColor White
Write-Host 'Caso 2 | ' -NoNewline -ForegroundColor Gray
Write-Host 'AYUDA + comando: Muestra la documentación específica de dicho comando.' -ForegroundColor White
} elseif ($comando.ToLower() -eq 'info') {
Write-Host 'Info es un comando para conseguir información general sobre la terminal:' -ForegroundColor Cyan
Write-Host ''
Write-Host 'INFO ' -NoNewline -ForegroundColor Cyan
Write-Host 'NOMBRE' -NoNewline -ForegroundColor Green
Write-Host ' ------ ' -NoNewline -ForegroundColor Gray
Write-Host 'Muestra todo sobre el nombre que has puesto.' -ForegroundColor White
} elseif ($comando.ToLower() -eq 'ajuste') {
Write-Host 'Ajuste cambia los ajustes de la consola:' -ForegroundColor Cyan
Write-Host ''
Write-Host 'AJUSTE ' -NoNewline -ForegroundColor Cyan
Write-Host 'MostrarComandoTrasEjecucion ' -NoNewline -ForegroundColor Green
Write-Host 'Verdadero' -NoNewline -ForegroundColor Red
Write-Host ': Hace que cuando ejecutes un comando, aparezca en comando y el resultado, en Falso, solo aparece el resultado.' -ForegroundColor White
} elseif ($comando.ToLower() -eq 'decir') {
Write-Host 'Decir muestra texto:' -ForegroundColor Cyan
Write-Host ''
Write-Host 'Decir ' -NoNewline -ForegroundColor Cyan
Write-Host 'Hola, Mundo!' -ForegroundColor Green
Write-Host ' → Muestra "Hola, Mundo!"' -ForegroundColor DarkGreen
}else {
Write-Host "No hay ayuda disponible para el comando '$comando'." -ForegroundColor Red -BackgroundColor Black
}
Write-Host ''
Write-Host '---------------------------------------' -ForegroundColor Yellow
pause
}
function ajuste {
param (
[string]$ajuste
)
$valor = $ajuste.Split(' ')
if ($valor -ne ' '){
$ajusteName = $valor[0].ToLower() # El primer valor es el nombre del ajuste
$ajusteValue = $valor[1].ToLower() # El segundo valor es el valor del ajuste
}
if ($ajusteName -eq 'mostrarcomandotrasejecucion') {
if ($ajusteValue -eq 'verdadero') {
Write-Host 'Se ha cambiado la configuración para que no se vuelva a mostrar el comando tras la ejecución.'
$global:verComandoTrasEjecucion = 'yes'
} elseif ($ajusteValue -eq 'falso') {
Write-Host 'Se ha cambiado la configuración para que siempre se vea el comando tras la ejecución.'
$global:verComandoTrasEjecucion = 'no'
} else {
Write-Host 'No se reconoce "'$ajusteValue '" Como Verdadero o Falso, no se ha aplicado ningún cambio.' -ForegroundColor Red -BackgroundColor Black
}
} else {
Write-Host 'No se reconoce "'$ajusteName '" Como configuración, no se ha aplicado ningún cambio.' -ForegroundColor Red -BackgroundColor Black
}
pause
}
function decir {
param (
[string]$comando
)
Write-Host '🗨️ Server |'$comando
pause
}
function infoNombre {
# Imprimir valores
Clear-Host
Write-Host '1 | [' $nameFirstLetter ']' $name
Write-Host '2 | [' $lastNameFirstLetter ']' $lastName
pause
}
# Conseguir nombre
Clear-Host
Write-Host 'Introduce tu nombre: ' -foregroundcolor yellow
Write-Host '> ' -NoNewline -ForegroundColor Green
$name = Read-Host
# El primer carácter en mayúsculas y lo demás en minúscula
$name = $name.Substring(0,1).ToUpper() + $name.Substring(1).ToLower()
# Conseguir apellido
Clear-Host
Write-Host 'Introduce tu apellido: ' -ForegroundColor yellow
Write-Host '> ' -NoNewline -ForegroundColor Green
$lastName = Read-Host
# El primer carácter en mayúsculas y lo demás en minúscula
$lastName = $lastName.Substring(0,1).ToUpper() + $lastName.Substring(1).ToLower()
# Conseguir iniciales y ponerlas en mayúsculas por si acaso
$nameFirstLetter = $name[0].ToString().ToUpper()
$lastNameFirstLetter = $lastName[0].ToString().ToUpper()
while ($true) {
# Pedir entrada del usuario
Clear-Host
Write-Host '> ' -NoNewline -ForegroundColor Gray
$code = Read-Host
if ($global:verComandoTrasEjecucion -eq 'no') {
Clear-Host
}
# Dividir la entrada en palabras
$code = $code.Trim() # Elimina espacios extras al inicio y final
$words = $code.Split(' ')
$command = $words[0].ToLower()
$message = $words[1..($words.Length - 1)] -join ' ' # El resto del texto (si lo hay)
# Procesar comandos
if ($command -eq 'info' -and $message -eq 'nombre') {
infoNombre
}elseif ($command -eq ''){
} elseif ($command -eq 'salir') {
break
}elseif ($command -eq 'ayuda') {
ayuda $message
} elseif ($command -eq 'manual') {
ayudaTodo
} elseif ($command -eq 'decir') {
decir $message
} elseif ($command -eq 'ajuste') {
ajuste $message
} else {
Write-Host 'Comando "'$code '" no reconocido. Usa "manual" para obtener información.' -ForegroundColor Red -BackgroundColor Black
pause
}
}
Write-Host ''
Write-Host '__________________________________________' -ForegroundColor Yellow
Write-Host ''
Write-Host '❌ Server | Se ha terminado la ejecución.' -ForegroundColor Red
Write-Host '__________________________________________' -ForegroundColor Yellow