Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 11695|Respuesta: 1

Tutorial de PowerShell para empezar - versión v0.3

[Copiar enlace]
Publicado en 19/4/2017 16:48:30 | | |


---------- Capítulo 1 Historial de scripting de Windows --------------


1 La primera generación de murciélagos de guion. Empezó con win95, win98--------- y terminó alrededor de 2008. Características: Comandos orientados a caracteres, con línea de comandos y canal.
2 Script de segunda generación VBS. Características: Solo funciones, valores de paso, llamadas.
3 PowerShell de scripts de tercera generación. A partir de 2012, el comando ha evolucionado completamente hacia orientado a objetos. Por ejemplo, lista de tareas y proceso get son características de rueda repetidas: orientadas a objetos. Heredando las ventajas de las dos generaciones anteriores de escrituras.



P: ¿Por qué aprender PowerShell?
Un:
El misionero respondió que estudiaría durante un año y cinco años para BAT. ¡Sintaxis sencilla y funciones de biblioteca potentes!
El único en el mundo que soporta objetos con comandos en ambos lados de la canalización. es decir, comando orientado a objetos 1 | Comando orientado a objetos 2

Windows y Linux son diferentes:
En el script de PowerShell en Win,
Apoya CR, LF, CRLF entran. Soporta concurrencia multihilo y multiproceso.
Es fácil incrustar [sonido Text2], "Informe capitán, disco lleno".
Incrustar una interfaz gráfica es fácil. (Cuando la interfaz emergente te pide que introduzcas un nombre de usuario, contraseña, selección única, selección múltiple, etc.) Estas son las envidias de los scripts de Linux.

PowerShell es diferente de Python:
Es fácil usar chino en PowerShell. Nombre de escritura china, nombre de variable, comentario. Comillas simples chinas, comillas dobles chinas.
Reconoce automáticamente la codificación GBK, UTF8 y Unicode. Objetos de soporte de canalización, que los scripts Python envidian.



Ejemplo sencillo de sintaxis 1: La magia de PowerShell con comillas simples y dobles.
Comillas simples pueden citarse entre comillas dobles. Y viceversa.
Se pueden @引用 comillas simples y dobles con @''.
BAT no funcionó.


Narrador misionero:
He pensado mucho en el diseño del tutorial. ¿No leíste que la parte histórica de lo que escribí era muy [simple y tosca]? La historia se lleva de un solo golpe.
Pero ya que lo dije, no es tontería, solo quiero que los estudiantes dejen claro que desde win7-win2008, la cosificación de los scripts se ha vuelto popular. Lleva al siguiente capítulo de explicación orientada a objetos.
Cualquier tutorial introductorio de PS debería mencionar la diferencia entre orientado a personajes y orientado a objetos. Es simplemente apropiado incluir este tema en la historia de la línea de comandos.

---------- Capítulo 2 El maravilloso -------------- del orientado a objetos
¿Qué es un objeto, por qué es orientado a objetos y por qué Microsoft está reforzando la rueda?

Ejemplo orientado a objetos 1:
Pregunta: Como 2,2 manzanas al día, ¿cuántas manzanas como en 17 días?
Un:
Está disponible 2,2 x 17. También es posible usar i++ soportado por cualquier lenguaje de scripting.
para ($i = 1; $i -18; $i++)
{
        $Apple = 2,2 + $Apple
        Write-host $i,$Apple
}

--------------------------------------------
En cuanto cambie la pregunta, no te diré el número de días, solo te diré,
Como 2,2 manzanas al día, ¿cuántas manzanas como entre el 20 de enero y el 20 de junio de 2017?
$days = ((fecha de obtención '2017-06-20') - (fecha de obtención '2017-01-20')).días #值151


Como 2,2 manzanas al día, ¿cuántas manzanas como desde el 20 de enero hasta el 20 de junio de 2020?
$days = ((fecha de obtención '2020-06-20') - (fecha de obtención '20-01-2020')). días #值152

para ($i=(fecha de obtención '2020-01-20'); $i -lt (fecha de lanzamiento 2020-06-2020'); $i=$i.adddays(1))
{
        $Apple = 2,2 + $Apple
        Write-host $i,$Apple
}

Conclusión: Con el objeto de fecha, contar días, horas, etc., es sencillo. [for,,i++] es común, pero nunca pensé que el número i pudiera ser de tipo fecha.

------------------------------------------



¿Cuáles son las ventajas de la orientación a objetos?
Antes de la orientación a objetos, solo tenemos cadenas y enteros.
1 Hay un objeto.
----- [Tipo de personaje]-----
El glifo tiene system.string, que es lo más básico.
Memoria System.Text.StringBuilder, que cambia frecuentemente, cadenas grandes

----- [Tipo numérico]-----
system.int32, system.int64, system.decimal, system.double, System.Numerics.BigInteger entero infinito.
Comúnmente usado es int32, decimal.

Si 1/3*3 es igual a 1 o 0,9999 depende del tipo de dato.
----- [Arreglo]-----
arreglo system.array
System.Arraylist Array cambia con frecuencia, como reescribir, añadir o eliminar constantemente, necesitas usar esto. La velocidad es relativamente rápida.
Matrices de deduplicación System.Collections.Generic.HashSet. Igual que el objeto set de Python.

-----【Forma】-----
1 salida de comando. Por ejemplo, dir, get-process.
2. Al escribir scripts, usamos objetos y atributos para construir.

----- [Otros] -----
Tablas hash, archivos, etc.



El 2 tiene características. Los atributos son argumentos y son más pequeños que las cadenas. Antes de que no haya atributos, necesitamos filtrar y filtrar cadenas con [normal que quema el cerebro], conocido como [cadena de deducción]. Si tienes atributos, no los necesitas.
3 Hay una manera. El método es el programa, el código. No hace falta reescribirlo tú mismo. Bate, desde luego, no es bueno, no hay manera, también hay una escritura personal, poco fiable, no te atrevas a usarlo.
Los métodos pueden ser funciones ps autoescritas o métodos autoescritos en clases ps.
El método que escribes tú mismo puede fusionarse temporalmente en una clase de terceros.
El método que escribes tú mismo puede [fusionarse] temporalmente en la clase .net.

¿Cuáles son las desventajas de la orientación a objetos?
El predicador está enseñando PowerShell a personas que usan winxp. La persona dijo que PowerShell no es bueno, que el objeto consume demasiado tiempo, y tiene razón.
En cmd devuelvo 100 nombres de archivo (cadenas) con dir. En PowerShell, uso Dir para devolver 100 objetos de archivo, y PowerShell ocupa mucha memoria.
Pero ahora es diferente:
1. No debería existir contenido innecesario en variables. O destruirlo inmediatamente después de usarlo para reducir el consumo de memoria.
2. La caída de memoria es suficiente. Como el rendimiento de la CPU ya no puede mejorar, estamos aumentando frenéticamente la memoria en un intento de intercambiar espacio por tiempo.
3. Queremos características más potentes, y la orientación a objetos es lo más básico hoy en día. ¿Cuál no es orientado a objetos, py, php, java, .net o c++?

Resumen:
1 Los objetos son más grandes y requieren más memoria que las cadenas.
2. Existen más métodos para la orientación a objetos y funciones más fuertes.
3 atributos son menores que la granularidad de cadenas, que es extremadamente conveniente de usar. ¡Evité el uso loco de cuerdas normales para quemarle el cerebro para filtrar]


=== Uso loco de habituales que queman cerebros para filtrar ejemplos, versión bat del gateway por defecto ping ===
@echo Off&set, local habilitarexpansión retrasada
Echo está buscando la puerta de entrada predeterminada...

para /f "usebackq delims=" %%i en ('ipconfig /all') do (
echo %%i|find /i "gateway">nul|| echo %%i|find "default gateway" >nul
si "!errorlevel!" =="0" (
para /f "tokens=2 delims=:" %%a in ("%%i") haz para /f "delims= " %%m en ("%%a") haz establecer ipgate=%%m
)
)

La pasarela predeterminada de Echo es: !ipgate!
=========== ping al gateway.ps1 por defecto============
$default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop
&ping.exe $ Pasarela predeterminada

# conexión de prueba $ gateway por defecto
=======================






P: Aunque lo orientado a objetos sea tan bueno, ¿de dónde vienen estos objetos?
R: De la biblioteca .net.


---------- Capítulo 3 Introducción a .NET --------------


P: ¿Cuántas ramas de versiones tiene .NET Core?
Un:
Actualmente existen tres versiones.
.NET 2.0 La última versión de .NET 3.51
.NET 4.0 La última versión de .NET 4.70
.NET Core 1.x La última versión de .NET 1.2 para sistemas Apple, sistemas Linux y sistemas embebidos.
.NET Core 2.x La última versión de .NET 2.0 para sistemas Apple, sistemas Linux y sistemas embebidos.



P: ¿Cuántas ramas funcionales tiene .net?
Un:
Rama de escritorio en .NET. WinForm. Para desarrollar ventanas de escritorio.
Biblioteca de sonidos
asp.net en .NET y .NET Core. Biblioteca de funciones del servidor web. Antes se usaba para abrir un servidor web B/S.
F# en .NET y .NET Core. Contiene bibliotecas matemáticas, bibliotecas de funciones trigonométricas, etc.
PowerShell en .NET y .NET Core. Contiene interfaces comunes de gestión del sistema como archivos de script.
Linux
◦Ubuntu 14.04 \ 16.04
◦CentOS/RHEL 7 y superiores
◦abierto SUSE 42 y superiores
◦Arch Linux (archl inux no tiene número de versión)
◦Contenedor docker LINUX
◦Contenedor Linux AppImage (aplicación portátil binaria única) https://github.com/probonopd/AppImageKit



MAC OS X
◦OS X 10.11


P: ¿Cómo se conecta un programa .NET (programa C#) a un servidor MySQL?
Un:
Visita la web oficial de mysql para descargar el conector para el lenguaje .NET.
mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll
Añade la clase MySql.Data a .net y añade la interfaz de la base de datos.



Conclusión:
Primero instala .net 3.51, Windows 7 y Windows 2008, y primero instala .net 4.62 o superior.

.NET lleva muchos años existiendo y no hay muchos programas que soporte .NET más que Java. Todas las ramas y interfaces de .net (bases de datos, WeChat, etc.). )
Esas DLLs, esas librerías, PowerShell se pueden llamar. Es exactamente igual que el exe escrito en C#.


P: Además de la interfaz de rama de .NET, ¿cuáles son las propias librerías (módulos) de PowerShell?
Un:
Por favor, vea el siguiente capítulo

---------- Capítulo 4 Bibliotecas integradas, bibliotecas externas y bibliotecas de terceros comúnmente utilizadas en PowerShell --------------

Ayuda misionera:
Este capítulo no puede ser discutido, pero es solo una lista de bibliotecas y manuales. Guarda este capítulo en favoritos. Después de revisar estas librerías, sabrás lo que puede hacer PowerShell.



Dirección del manual de Win2012: (módulo AD más comúnmente utilizado)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx
Gestión de grupos de usuarios de AD, DHCP, DNS, impresora, compartición de archivos, IIS, disco, tarjeta de red,



exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx
Active Directory 12         
Anti-Spam y Anti-Malware 59  
Acceso al cliente 100
Agente de Extensión 4
Direcciones de correo electrónico y agendas 37
Federación e configuración híbrida  
Alta disponibilidad  
Flujo de correo  
Buzón  
Base de datos de buzones  
Servidor de buzones  
Moverse y migrar  
Organización  
Permisos  
Política y cumplimiento  
Seguridad  
Salud, monitorización y rendimiento del servidor  
Comparte y colabora  
Mensaje Unificado  
Usuarios y grupos  



sqlserver2016
https://msdn.microsoft.com/zh-cn/library/hh245198.aspx



lync2015
https://technet.microsoft.com/zh-CN/library/gg398867.aspx




SharePoint2016
https://technet.microsoft.com/zh-cn/library/ff678226(v=office.16).aspx



Máquinas Virtuales de Amazon, AWS, Máquinas Virtuales de Microsoft, Azure, Hyper-V, VMware vSphere y máquinas virtuales de nivel empresarial.


Clientes:
Servicios, procesos, registros, registros, directorios de archivos, gestión remota. Tareas cronometradas.



Internet:
FTP, correo y complemento cliente SSH para conexión a servidores Linux.


Mensaje de texto:
XML, HTML, CVS, JSON, EXCEL, etc.


Voz de texto 2


Interfaz gráfica.


Centro de Scripting de Microsoft
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/


Fuente de software PowerShell sitio web oficial --- biblioteca oficial de PowerShell.
https://www.powershellgallery.com


Las otras librerías de Niu x están todas en github. Además, los misioneros publican regularmente el [Niu x Magic Weapon] de [Hidden Foot Pavilion], que es una útil biblioteca de terceros de PowerShell.


---------- Capítulo 5 Los principiantes deben aprender a ayudar en el uso de los comandos--------------


P: ¿Cómo sé cuál es la versión de PowerShell?
Un:
$PSVersionTable



P: No conozco el módulo, ¿cómo encontrarlo?
Un:
get-module -ListAvailable


P: ¿Cómo encuentro comandos si solo conozco una parte de ellos?
Un:
get-command *servicio*



P: Conozco el comando, pero no sé qué parámetros hay en él, ¿cómo listar esos parámetros?
Un:
get-help write-host -Parameter *
show-command write-host


P: Conozco el parámetro, pero no sé qué comando tiene ese parámetro, ¿cómo encuentro ese comando?
Un:
Codificación get-command -ParameterName



P: ¿Cómo puedo obtener ayuda con un comando desde la línea de comandos?
Un:
Obtén-ayuda para conseguir fecha

-Ejemplos de comandos
-Manual online online




P: No sé el método de atributo del comando (no conozco el objeto), ¿cómo encontrarlo?
Un:
"ABC" | Get-Member
get-date | Get-Member



P: ¿Dónde está el manual chino de .NET?
Un:
msdn。 Las propiedades y métodos más básicos de las cuerdas están en el manual.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx



---------- Capítulo 6 Introducción a los comandos comunes --------------

El primer mandato a aprender es dir
P: ¿Por qué usar PowerShell Dir [es decir, Get-ChildItem] en lugar de cmd dir?
Un:
Orientado a objetos, método fuerte y muchos atributos.
$file = dir a:\pscode\temp183\aaa.txt
$file. Nombre completo #返回全路径属性
$file. Nombre base #返回文件名属性
$file. Extensión #返回扩展名属性
$file. LastWriteTime #返回最后写入时间属性



La primera sintaxis que hay que aprender es la de los arrays. $a = @(comando xxx)
P: A veces tienes que usar [comandos externos basados en caracteres] para dividir los valores de retorno en arrays por unidades de comportamiento.
Un:
$a = @(ipconfig)
$a[8] #第9行


Uso de get-childitem:
Parámetros añadidos en PowerShell 3.0 y versiones posteriores

Get-childitem D:\xxx -#过滤, solo archivos de salida
-Filtrado de directorios, directorios solo de salida
-Filtrado oculto, solo salida oculta


P: ¿Abrir un archivo, segmentar por comportamiento y ponerlo en un array?
Un:
$a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0



P: ¿Abrir un archivo, como una cadena grande, y almacenar toda la variable?
Un:
$a = Get-Content a:\pscode\temp183\aaa.txt -raw


$a,$b,$c = 1,2,3


P: ¿Cómo ejecuto comandos en segundo plano?
Un:
En la antigüedad existía un "comando" cmd /c.
Ahora existe powershell /c "comando", o powershell -c "comando",
PowerShell -archivo "script.ps1" -argumento 1 AAAA -parámetro 2 1234
start-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'


P: Quiero ejecutar el script con otro usuario local, pero PowerShell no tiene runas. ¿Exe comandos similares?
Un:
Hay varias sesiones en PowerShell.
IP + puerto + nombre de usuario + contraseña = una sesión, solo necesito cambiar el nombre de usuario, cambiar la contraseña, y tú puedes cambiar los permisos. Porque los permisos están ligados al usuario.
De forma similar, solo necesito crear n sesiones para usar, sin cambiar de usuario.
El más importante de la nueva psissión tiene el parámetro -Credential, introduce la contraseña de usuario, que no es lo mismo que runas. ¿Exe es lo mismo? ¿Qué más es SmbSession?
Así que no creo que sea necesario usar runas en PowerShell. exe。
Solo tienes que usar esos comandos con sesión y credencial, ¿verdad?

Comprueba los comandos con el nombre [Credential] en el nombre del parámetro:
Credencial get-command -ParameterName

Ver comandos con el carácter [sesión] en el comando:
get-command *sesión*


P: ¿Cómo envío un correo electrónico usando PowerShell?
Un:
Enviar-Mensaje de correo -Asunto 'Asunto'
-De "tu cuenta de hotmail @hotmail.com" -A "tu correo QQ @qq.com" '
-SmtpServer "smtp.live.com" -puerto 587 -useSsl -credencial "tu cuenta de hotmail @hotmail.com" '
-Adjuntos $Attachments -BodyAsHTML -cuerpo $HTML el contenido del correo electrónico

Nota:
1 Usoxxx@QQ.com+ Tu contraseña de QQ + el comando anterior Enviar un correo electrónico no funciona. Debido a la seguridad de las contraseñas de QQ, Tencent requiere contraseñas de correo electrónico independientes.  
2 No es posible enviar desde el buzón QQ por defecto. Está desactivado y tienes que activar SMTP en los ajustes.
3 PowerShell 3.0 y superiores solo soportan parámetros de puerto. Para Win7, primero tienes que instalar la última versión de PS




P: Monitorear la CPU, disco, red, IO, etc.
Un:
Monitor de rendimiento o
Get-Counter obtiene datos del contador de rendimiento tanto de ordenadores locales como remotos.

P: ¿Cómo puedo ver qué objetos de contador están disponibles?
Un:
Todo está en el manual.
Comprueba cuáles son las principales categorías de usos:
Get-Counter -ListSet * | Ordenar-Objeto ContadorNombreSet | Format-Table CounterSetName


Por ejemplo, ahora sé que la categoría del disco es (PhysicalDisk), y luego reviso las subcategorías en el disco, usando:
(Get-Counter -ListSet PhysicalDisk). Caminos




P: ¿Cómo puedo ver los registros?
Un:
Visor de eventos, o
get-eventlog



P: ¿Cómo ejecuto las cuerdas?
Un:
$cmd 1 = 'xxxx'
Invocar-Expresión $cmd 1


Bueno, hemos aprendido mucho sobre comandos individuales, echemos un vistazo a la ejecución de scripts de Powershell.


---------- Capítulo 7 Scripting, Depuración y Ejecución de -------------- en PS1
Un script es una combinación y superposición de sentencias de comando. El guion es pegamento, busca a otros a quienes llamar, busca ruedas para montar el coche. En lugar de hacer ruedas, para que otras las usen.



Cainiao preguntó: ¿Cómo escribir un guion?
El viejo pájaro respondió:
1 Los detalles del problema deben aclararse. Por ejemplo: hacer pasteles de luna.
2 Las ideas para resolver problemas también están básicamente terminadas. Harina y agua, pon el relleno, cocido al vapor.
3 Qué comandos y variables usar. Añade cinco granos, ponlos en un molde y exprime.
4 Escribe más o menos primero, escribe de forma aproximada.
5 Depuración aprobada.
6 Escribe con detalle. Considera la situación del error, más el código de error, el mensaje de error. Elimina el código propenso a errores que no sea fácilmente compatible. Reescribe el código que no rinde bien.
Hasta este punto, un buen guion puede no quedar bien, pero debería ser muy útil.
7 Finamente elaborado. Refactorización, escribir fragmentos de código reutilizados en funciones. Reescribe los nombres de las variables para que la gente pueda entenderlos de un vistazo. Formatea bien el código y haz la sangría.


P: ¿Qué IDE se usa para escribir PS1?
Un:
Lo más recomendable es usar Visual Studio Code, además del complemento PowerShell.
Características: Indicaciones de código, autocompletado, formato de código, sangría para elegir espacio o tabulador, configuración de codificación de archivos.
Hay un plugin llamado FTP-sync, que puede escribir scripts de PS1 en el VSCode de Windows y sincronizarlos automáticamente con el directorio de Linux cuando se guardan.



P: ¿Qué herramientas se usan para depurar la PS1?
Un:
La vida de powergui más recomendada no usa locomotora, aunque sea un héroe, el script de PS también saltará y reportará un error.
VSCODE también está bien



P: ¿Qué herramientas utilizáis para el formato del código?
Un:
Todo lo que debería estar hundido está hundido, y los signos iguales están alineados.

PowerShell ISE + Plugin ISE [ISESteroids]

Instalación:
Install-módulo -nombre ISESteroids

ISE funciona:
Start-Steroids





P: ¿Qué herramientas usas para que el color del código sea bonito?
Un:
1 Utiliza las herramientas anteriores para formatear el código.
2 Usa PowerShellise + Misionero DIY Color Matching Edition 2016.
3 Coge la foto. Se produce el código PowerShell más agradable y bellamente coloreado del mundo.

Todos los IDE mencionados están en chino.




P: ¿Cómo nombro un guion? xxx.ps1
Un:
Se recomienda empezar con 1---2 letras y usar el nombre del archivo chino para el resto. Es decir, [BF copia de seguridad de todas las files_ antiguas y borra .ps1 de hace 10 días]
De este modo, escribe primero [bf] y luego pulsa tab para completar el nombre del script.




P: ¿Cómo activo el permiso de ejecución del script PowerShell?
Un:
echo El siguiente código puede ejecutarse en cmd con privilegios de administrador o en PowerShell con privilegios de administrador.
echo si usas un remoto remoto de PowerShell. Tanto la máquina local como la remota deben ejecutarse con privilegios de administrador.
"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -comando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
"C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -comando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -comando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -comando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
pausa



P: ¿Cuáles son las desventajas de la locomotora (powergui)?
Un:
No se puede configurar el color de fondo.




P: ¿Cuáles son las desventajas de VSCODE?
Un:
$ y nombre de variable no son del mismo color.
Las funciones de depuración son lentas y a veces bloqueadas.




P: ¿Cuáles son las desventajas de la ISE?
Un:
No puedes elegir guardar o convertir la codificación.
Sangría a [espacio], [tabulador] ambos. En otros programas de edición de texto, se muestra la hendidura.




---------- Capítulo 8 Ejercicio de Combate Real--------------
El grupo 6504748 y escribió esta parte ellos mismos.

5. Ejemplo 1: Activar y desactivar el servicio
6. Ejemplo 2: Control de cortafuegos (Abrir, Cerrar, Regla)
7. Ejemplo 3: Establecer una política (política de contraseñas, por ejemplo)



---------- Capítulo 9 de estos cursos optativos adicionales, ¿te interesa? --------------
Ejemplos de scripts PowerShell, argumentos de línea de comandos que pasan valores y vinculan variables
http://www.cnblogs.com/piapia/p/5910255.html




Deja que PowerShell ejecute solo un script a la vez (ejemplo de exclusión mutua de procesos)
http://www.cnblogs.com/piapia/p/5647205.html



interfaz de personajes powershell, interfaz powershell más WPF, juego 2048
http://www.cnblogs.com/piapia/p/5531945.html


Dos rastreadores en PowerShell
http://www.cnblogs.com/piapia/p/5367556.html



Script PowerShell: Generador de contraseñas aleatorias
http://www.cnblogs.com/piapia/p/5184114.html



Ejemplo de un algoritmo recursivo PowerShell
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html



Calculadora de voz PowerShell
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html



1 Enumera todos los archivos cifrados por EFS. 2Descifrar todos los archivos cifrados por EFS
http://www.cnblogs.com/piapia/p/4702514.html
Es una herramienta escrita para administradores de sistemas y administradores de red.
Después de que un empleado deja su trabajo, su disco asume que hay 10.000 archivos (directorios), de los cuales hay 3 directorios cifrados por EFS. En Explorer, estos tres archivos son verdes.
Pero si haces clic en (10.000 catálogos) uno a uno, sea verde o no, te quedarás agotado.
En ese momento, el administrador de red utiliza la cuenta WIN del empleado, inicia sesión en el PC del empleado y utiliza este script para listar todos los archivos cifrados por EFS.


---------- capítulo 10, por favor, haz una pregunta--------------
Damas y caballeros, si hay algo que informar, salgan del tribunal sin nada.



----------Capítulo 11 Capítulo de Linux--------------

Missionary: Mientras puedas instalar la versión Linux de PowerShell, solo necesitas scripts de PS1, no scripts SH.
Interpretación:
1 En resumen, bash solo tiene sintaxis, sin comandos ni librerías.
2 Bash solo tiene funciones sintácticas del 1%, PowerShell no puede implementarlo. Esto es normal, no hay dos hojas exactamente iguales en el mundo.
Esto significa que solo necesitas el script de PS1, nada de SH.
3 bash es demasiado antiguo, la misma función, PowerShell se puede implementar y también puede ahorrar tiempo, como 10.000 fors vacíos, Powershell necesita ahorrar el 90% del tiempo.
4 Aprende a usar /usr/bin/powershell en lugar de /usr/bin/bash. Otros comandos de Linux, pipelines, kung fu antiguo, etc., se usan exactamente igual que en bash.
5 Usar gradualmente comandos y librerías PowerShell orientados a objetos, simples y potentes, en lugar de comandos Linux que te agobian el cerebro, o ambos. ---Este es el principio general, el esquema general.


P: ¿Qué versiones de Linux pueden instalar PowerShell?
Un:
◦Ubuntu 14.04 / 16.04
◦CentOS/RHEL 7 y superiores
◦abierto SUSE 42 y superiores
◦Arch Linux (archl inux no tiene número de versión)
◦Contenedor docker LINUX
◦Contenedor Linux AppImage (aplicación portátil binaria única) https://github.com/probonopd/AppImageKit





P: ¿Por qué se dice que la línea de comandos de Windows es más potente que la de Linux?
Un:
Los comandos en 1 win han evolucionado hacia PowerShell orientado a objetos. Linux aún no funciona. De win7 a win2012r2, la evolución termina.

2 Solía oír que Unix tiene muchos comandos para Linux y es muy potente. Pero ahora te digo que los comandos de PowerShell son al menos diez veces más que los de Linux. En fin, no he aprendido en toda mi vida.

3 Linux depende más del grafo, con muy pocos comandos. Y el comando win es mucho más que Linux.
3.1 ¿En cualquier Linux, los comandos del servidor de correo son cada vez más completos que Exchange? ¿Más cómodo que el intercambio?
3.2 La vinculación del servidor DNS de Linux no es tan cómoda como el comando DNS de Win. ¿Tiene Bind un [comando] para añadir un registro IPv4 A a un nombre de dominio? ¿Aún no dependes de los gráficos web?
Algunas personas dicen que hay que usar nsupdate. No se trata de crear un mensaje y luego ejecutarlo. ¿Cuál es la diferencia entre reemplazar el [archivo de zona DNS] por sed y luego volver a cargar la [zona DNS]?

4 En la nueva versión de win, o en powershell, todo es [comando + parámetro]. Y la mayor parte de Linux sigue siendo [texto sed].
4.1 Tomemos como ejemplo la dirección IP asignada a la tarjeta de red.
Conexión NMCLI Añadir tipo Ethernet Con-Name NEW_STATIC IFNAME ENO1234567 IP4 192.168.1.111 GW4 192.168.1.1,
¿No es más cómodo que usar sed para extraer el archivo ifcfg-eth0?

5 Cualquier lenguaje procesa datos, y también lo hace el scripting. Con la ayuda de objetos, PowerShell es más cómodo que incómodo. Shenma csv, excel, xml, json
Tabla SQL, Mesa NoSQL. HTML, etc.




P: ¿Cómo implementa PowerShell [sed -i "s/qué buscar/reemplazar por /g"]?
Un:
@(Nombre de archivo Get-Content) -sustituye 'aaa', 'bbb' | Nombre de archivo de contenido establecido $aaa
Es decir, abrir el archivo, reemplazarlo, guardarlo.



P: ¿Por qué cada vez menos personas usan SED en Linux?
Un:
Argumento 1: AWK puede reemplazar a SED, pero SED no puede reemplazar a AWK.
sed, es decir, simplemente encontrar la sustitución. AWK tiene para implementar procesamientos complejos.

Argumento 2: AWK utiliza el regular estándar, y el regular de sed es el mismo que el de sed, pero las partes son diferentes.
Aprender SED significa que dos conjuntos de estándares regulares incompatibles en el cerebro están luchando entre sí.



P: ¿Entonces es correcto aprender AWK?
Un:
Aprender PowerShell es más fácil que aprender AWK.
PowerShell utiliza [split y luego split], [if y if], where-object, string.substing(), string[-3], etc.
Desglosa el problema de la cadena capa por capa. Más sencillo que el awk normal.




P: ¿Se pueden usar pipelines y AWK en PowerShell?
Un:
Puedes llamar a awk en PowerShell, exactamente igual que en Bash. Las artes marciales antiguas son completamente Turín.



P: ¿Cómo implementar la función awk '{print $3}'] en PowerShell?
Un:
($line -split "\s+|\t+") [0] #第一行
($line -split "\s+|\t+") [2] #第三行       

Get-Content /xxx/yyy.txt | foreach-object {$_.split()[2]} #awk '{print $3}'


P: ¿Cómo implementar la función [awk -f a.awk file] usando PowerShell?
Un:
Esencialmente, es una función de filtrado que utiliza una tubería. En PowerShell, esto se llama filtro o filtro.
PowerShell soporta la combinación de comando + tubería + filtro. Como en Comando 1 | Filtro 1 | Comando 2 | Filtro 2 | Filtro 3
filtro filtro1
{
Funcionalidad similar a AWK
}





P: ¿Hay [xargs] en PowerShell?
Un:
La variable de tubería utilizada en la tubería se llama [$psitem], y su alias es [$_].
PowerShell utiliza foreach-object y $_ para implementar la función de xargs.





P: ¿Hay un número [<] [<<] en PowerShell?
Un:
No.
Quizá el símbolo [<] de derecha a izquierda sea un pensamiento antihumano. Muchos comandos en PowerShell se han cambiado a izquierda a derecha.
Si el get-random < (1..100) no es legal en PowerShell, el objeto legal debería ser get-random -inputobject (1..100), o 1. 100 |get-random
Menos del 1% de los comandos extraños [deben] depender del símbolo [<], lo que se puede lograr llamando a cmd en PowerShell o bash (PowerShell para Linux) en PowerShell.
Por ejemplo, $a = bash -x "comando 1 < comando 2" #linux
Por ejemplo, $a = cmd -c "comando 1 < comando 2" #cmd




P: ¿Hay algún comando de espera en PowerShell? ¿Cómo conectarse a un servidor SSH con Linux desde Windows con PowerShell?
Un:
1. Sí. Para algunas necesidades extrañas y parciales de respuesta de puertas, existen módulos de terceros.
2 No. PowerShell no usa el comando expect, sino una sesión.

Usa Powershell + biblioteca cliente SSH + IP + puerto + nombre de usuario + contraseña para combinarlos en una conexión y enviar comandos a esa conexión. El código es el siguiente:
$connection 1 = New-SSHSesion -Nombre de ordenador 1.1.1.1 -Puerto 22 -Credenciales aaaa #将提示输入密码
$to return = Invoke-SSHCommand -Comando {cat /etc/issue} -SSHSession $Connection 1

Esta funcionalidad estándar como (MongoDB, mysql, ssh, ftp, http, telnet, etc.) tiene controladores o módulos. PD y. .netprogram, a través de la conexión del controlador, enviar comandos y aceptar datos.
Los beneficios de usar módulos o controladores para enviar y recibir [datos] son:
Los datos se convertirán en un objeto .net, que a su vez se convertirá en un objeto PS. Si no, todo son cuerdas, y las [artes marciales orientadas a objetos] de la secta PS son inútiles.


Tomando MongoDB como ejemplo, ¿cuáles son las ventajas de usar módulos o controladores para enviar comandos? ¿Quién habla?
Creo que los beneficios son:
1 Multihilo. El hilo en segundo plano se ejecuta y no ocupa el hilo actual.
2. Podemos [desconectarnos a mitad de camino] de la sesión en cualquier momento, ejecutar otro código y funciones de PS y [volver a la sesión en cualquier momento]. Los scripts son más flexibles de escribir y fáciles de depurar.
3Session trae a varios usuarios, y diferentes usuarios pueden tener distintos permisos de servidor.




P: ¿Existe su comando de runas en PowerShell? ¿Cómo ejecutar el comando de otro usuario con PowerShell?
Un:
No.
En PowerShell, ejecutar comandos nativos y pipelines de Linux es sencillo. Por ejemplo:
sshaaa@127.0.0.1"Ejecutado con privilegios AAA de usuario, comando xxx"  
sshpass -p user_password sshaaa@192.168.1.1



P: ¿Dos máquinas Linux con SSHD? ¿Cómo conectar y enviar comandos con PowerShell?
Un:
Además del método anterior, también puedes usar el método de crear una nueva sesión de Linux. (Conectado de Linux a otro SSHD)
Nota: Este método requiere editar el archivo /etc/ssh/sshd_config. Añade la siguiente línea
Subsistema powershell powershell -sshs -NoLogo -NoProfile
Después de eso, reinicia el servidor SSHD.
El manual detallado está aquí:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

Mandar:
$connect 2 = New-PSSession -Nombre de anfitrión 127.0.0.1 -Nombre de usuario usuario006 opción #手动输入密码或用-KeyFilePath opción
invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}


Resumen:
Cliente de Win, conectado a un servidor Linux. Actualmente, se requieren módulos de terceros, por supuesto, este es un módulo de la biblioteca oficial, solo usa el módulo de instalación PoshSSH.
Cliente Linux, conectado al servidor Linux. Necesitas editar el archivo /etc/ssh/sshd_config.
Cliente de Linux, conectado al servidor Win (Servidor Link). Tienes que activar el servicio en el servidor. Confía en el servidor del cliente.
Cliente Win conectado al servidor Win (Cliente Win Server). Tienes que activar el servicio en el servidor. Confía en el servidor del cliente.


P: ¿Hay [grep] en PowerShell?
Un:
El comando select-string se utiliza en PowerShell.
Desde el punto de vista de la programación, select-string=smart, grep=stupid + tienen un defecto claro :mrgreen:
Cuando hay un encabezado de lista de materias, la cadena select reconoce automáticamente el tipo de codificación del archivo.
Cuando no hay cabecera de lista de materias, no es necesario cambiar el entorno de shell como linux+grep, ni guardar archivos según un código concreto. Solo necesitas especificar el parámetro de codificación -según la codificación del archivo.
Y grep no tiene esta función, es decir, hay un fallo grave de [no se puede especificar el tipo de codificación de archivo].
Por supuesto, grep no es inútil, grep tiene algunos parámetros, funciones únicas adicionales, la cadena select no, y aquí es donde grep es más fuerte que la cadena select.



P: ¿Hay alguna [evaluación] en PowerShell?
Un:
Usa Invoke-Expression para ejecutar cadenas en PowerShell.



P: ¿Hay una cola -f en PowerShell? Es posible generar las líneas recién generadas de un archivo en tiempo real.
Un:
Get-Content D:\a.txt -Tail 10 -ReadCount 0 -Espera



P: Quiero usar un teclado pequeño y también quiero un terminal de 256 colores, así que ¿cómo debería configurarse xshell?
Un:
Terminal --- Tipo de Terminal --- [masilla-256color] o [exportar TERM=masilla-256color]
Terminal --- teclado --- por defecto o Linux.

Eterm-256color puede
Gnome-256color no funciona
El Konsole-256Color no funciona
Masilla-256color
Participación original de PowerShell Missionary 2017-02-15
RXVT-256COLOR no funciona
Screen-256color no funciona
ST-256COLOR
VTE-256COLOR no funciona
Xterm-256Color no funciona
El mismo principio se aplica a SecureCRT




P: ¿Quién es más poderoso, shell o python?
Un:
Cada uno tiene sus propias fortalezas y puede complementarse mutuamente. Pero no son complementarios. Más sobre esto más abajo.


P: ¿Por qué la versión de Linux de PowerShell es más adecuada para que el personal de operaciones y mantenimiento escriba scripts? (Comparado con la versión de Linux de Python)
Un:
1 Python tiene funciones orientadas a objetos, y la versión para Linux de PowerShell está disponible.

2 Python no tiene línea de comandos.
2.1 Python no puede ser el terminal predeterminado para SSH, pero PowerShell para Linux sí. Consulta el capítulo: "¿Dos máquinas Linux con SSHD? ¿Cómo conectar y enviar comandos con PowerShell? 》
2.2 Usar comandos de shell (awk, grep, etc.) en python es muy engorroso. Necesito añadir mucha sintaxis y código de PY. PowerShell para Linux ejecuta los comandos awk igual que bash.

3 Python no tiene tubos. Es muy complicado pasar valores entre n [programas de línea de comandos]. Necesito añadir mucha sintaxis y código de PY. La versión de Linux de PowerShell tiene pipelines, y ejecutar comandos awk es lo mismo que bash.

4 Python tiene la versión 2, ¡la versión 3 no es compatible con el cáncer! Pregunta. PowerShell para Linux no tiene ese problema.
4.1 Estas preguntas contienen problemas de codificación.

Conclusión:
Comandos de shell como GREP no son buenos para el soporte de programación, no tan buenos como los problemas de programación de la versión 4.1 anterior en PowerShell en casa. Más los 2,3 puntos anteriores.
Hace que la gente de Linux se sienta incómoda, pero muy pocas personas usan comandos externos en py. [biblioteca de comandos PY] y [comando shell] están muertos y básicamente no pueden complementarse mutuamente. La versión de Linux de PS es diferente.




P: ¿Por qué se dice que PowerShell es mejor que Shell?
Un:
1 PowerShell es orientado a objetos y las propiedades devuelven datos directamente disponibles. Esto es mucho menos común que en lenguajes de scripting de caracteres (bat, shell) que requieren deducciones de cadenas.
Nací con menos [contenido del que hay que escapar].
2 Sustitución por búsqueda de cadenas, hay métodos en PowerShell que no requieren escape, en la clase .NET. Por ejemplo:
[cadena]$a = 'abc\\def'
$b = $a.replace('\\','when')
#返回: [ABC como def]
Para determinar si una IP es legítima, puedes usar el método TryParse() en la clase IPAddress.
En resumen, mi sugerencia es usar tantos métodos .net como sea posible, usar la menor cantidad de regex posible o simplemente usar regulares simples.
3 PowerShell usa ['] como símbolo de escape. ['] se usa menos que [\] y mucho menos como símbolo de escape.
3.1 Al escribir scripts de base de datos, hay más conflictos de ['].
Por ejemplo, ['table'] entrará en conflicto con ['t], por ejemplo ['biao'] en conflicto con ['b], y luego lo resolví con ['table'].
búsqueda y reemplazo de cadenas de 4 ps, tiene un motor normal, es compatible con Linux y también usa [\] como escape.
Sin embargo, existe una función especial de escape de cadena [[Regex]::Escape()], que se escapa primero y luego se encuentra y reemplaza, y el código es muy legible.
$Original cadena antes de la escapada = '\+\&*|]'
$escaped cadena = [regex]::escape($original cadena antes de escapar)
-------------
Ejemplos de escritura
[cadena]$a = 'abc\\def'
$Original cadena antes de escapar = '\'
$Escaped Cadena = [Regex]::Escape($Original Cadena antes de Escape) #[\]--->[\\]
$b = [Regex]::replace($a,$Escaped String, 'Cuando')
$b #返回 [ABC Dangdang DEF]
-------------
5 golpes y atascos, cada uno tiene su propio para, cada uno su propia escapatoria. Combinados, es fácil que A afecte a B, y A se traga B.
También es fácil tener problemas al encontrarse con ['], ["], [\] y [*].
Es como llevar dos capas de pantalones largos, tiras de una capa y la otra también se mueve, tienes que preocuparte por su compatibilidad.
Esto es cáncer y difícil de resolver.
Pero el pinzamiento este problema también se puede evitar hasta cierto punto. Esto requiere que la persona que escribió la concha corrija el problema de olor.
[Pon el código awk en el archivo .awk por separado, no en la línea de comandos]
PowerShell no tiene este problema, ponlo en línea de comandos, ponlo en el script, no tiene efecto.








Anterior:.net/C# utiliza Attributes para implementar AOP simple
Próximo:.net/c# Speedy IP Open Port Scanner v2.0 Versión Ultimate
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com