¿Qué se entiende conceptos tales como Class, Interface, Mixin en PowerShell? ¿Es compatible con OOP? Si es así, ¿dónde puedo leer sobre esto?¿Soporta PowerShell OOP?
Respuesta
Se pueden definir nuevos tipos de PowerShell v2.0 usando el cmdlet Add-Type
:
Descripción detallada
El cmdlet Add-Type le permite definir una clase de .NET en la sesión de Windows PowerShell . A continuación, puede crear instancias de objetos (utilizando el cmdlet New-Object) y usar los objetos, tal como lo haría con cualquier .NET ob ject. Si agrega un comando Agregar-Tipo a su perfil de Windows PowerShell, la clase estará disponible en todas las sesiones de Windows PowerShell.
Puede especificar el tipo especificando un conjunto existente o archivos de código fuente, o puede especificar el código fuente en línea o guardarlo en una variable. Incluso puede especificar solo un método y Add-Type definirá y generará la clase. Puede utilizar esta función para realizar llamadas de Invocación de plataforma (P/Invocar) a funciones no administradas en Windows PowerShell. Si especifica el código fuente, Add-Type compila el código de fuente especificado de y genera un conjunto en memoria que contiene los nuevos tipos de .NET.
Puede usar los parámetros de Add-Type para especificar un idioma y compilador alternativos (CSharp es el valor predeterminado), opciones de compilación, dependencias de conjunto, el espacio de nombres de clase y los nombres del tipo y el ensamblado resultante .
help Add-Type
para obtener más información.
También, ver:
Las ofertas de tuberías PowerShell con objetos, no sólo un texto corriente A una tubería de Unix hace. Todas las variables son también instancias de objetos. Estos son todos los objetos .NET, por cierto.
Aquí es parte de la salida de un comando "ls" canaliza al cmdlet Get-Member:
PS C:\Documents and Settings\Administrator.DEV-3DPST1-SWK> ls | get-member
TypeName: System.IO.DirectoryInfo
Name MemberType Definition
---- ---------- ----------
Create Method System.Void Create(DirectorySecurity directorySecurity), System.Void Create()
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
CreateSubdirectory Method System.IO.DirectoryInfo CreateSubdirectory(String path), System.IO.Director...
Delete Method System.Void Delete(), System.Void Delete(Boolean recursive)
Equals Method System.Boolean Equals(Object obj)
GetAccessControl Method System.Security.AccessControl.DirectorySecurity GetAccessControl(), System....
GetDirectories Method System.IO.DirectoryInfo[] GetDirectories(String searchPattern), System.IO.D...
GetFiles Method System.IO.FileInfo[] GetFiles(String searchPattern), System.IO.FileInfo[] G...
GetFileSystemInfos Method System.IO.FileSystemInfo[] GetFileSystemInfos(String searchPattern), System...
GetHashCode Method System.Int32 GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetObjectData Method System.Void GetObjectData(SerializationInfo info, StreamingContext context)
GetType Method System.Type GetType()
get_Attributes Method System.IO.FileAttributes get_Attributes()
get_CreationTime Method System.DateTime get_CreationTime()
Get-Member muestra los miembros del objeto se canaliza a ella. Puede ver que estos son los miembros reales de la clase System.IO.DirectoryInfo.
PowerShell es más un lenguaje de usuario de OOP. Puede utilizar la mayoría de .NET Framework, pero no admite de forma nativa la creación de interfaces, clases y ciertamente no mixins. .NET, que es el sistema de tipos de PowerShell, no admite mixins. PowerShell admite la adición dinámica de propiedades y métodos a un objeto existente a través del cmdlet Add-Member.
Add-Type es útil pero si tiene que escapar a C# o VB para definir una clase o clase que implementa una interfaz particular, no consideraría que la primera clase admite la creación de clases/interfaces.
Si está buscando material de aprendizaje gratuito, consulte Effective Windows PowerShell.
La versión 5 de Powershell parece ser compatible con algunos de los principales OOP.
todo el crédito va a este individuo: https://xainey.github.io/2016/powershell-classes-and-concepts/
Ejemplo de una clase:
class myColor
{
[String] $Color
[String] $Hex
myColor([String] $Color, [String] $Hex)
{
$this.Color = $Color
$this.Hex = $Hex
}
[String] ToString()
{
return $this.Color + ":" + $this.Hex
}
}
Ejemplo de una clase abstracta:
class Foo
{
Foo()
{
$type = $this.GetType()
if ($type -eq [Foo])
{
throw("Class $type must be inherited")
}
}
[string] SayHello()
{
throw("Must Override Method")
}
}
class Bar : Foo
{
Bar()
{
}
[string] SayHello()
{
return "Hello"
}
}
Un enlace a una solución es bienvenido, pero asegúrese de que su respuesta sea útil sin él: [agregue contexto alrededor del enlace] (// meta.stackexchange.com/a/8259) para que los demás usuarios tengan una idea de lo que es y por qué está allí, luego cita la parte más relevante de la página a la que estás enlazando en caso de que la página objetivo no esté disponible. [Las respuestas que son poco más que un enlace se pueden eliminar.] (// stackoverflow.com/help/deleted-answers) – Simon
- 1. PowerShell - Puesta en Transcripción: Este ordenador no soporta la transcripción
- 2. ¿Soporta Mono 64bit Windows?
- 3. ¿Soporta Android varios idiomas?
- 4. ¿EL soporta métodos sobrecargados?
- 5. ¿Soporta SQLite SCOPE_IDENTITY?
- 6. IE no soporta 'insertBefore'
- 7. Soporta libspotify oauth
- 8. ¿Soporta Android log2
- 9. Esto es OOP o como OOP
- 10. ¿Java soporta recursividad de cola?
- 11. ¿C soporta expresiones de función?
- 12. ¿C soporta sobrecarga de C?
- 13. ¿.Net soporta genéricos al curry?
- 14. ¿Cómo se compara Python OOP con PHP OOP?
- 15. mysqli, OOP vs Procedural
- 16. OOP: métodos getter/setter
- 17. Mejor biblioteca Lua OOP
- 18. OOP concepts confusion?
- 19. OOP Game Design Theory
- 20. OOP C++ help needed
- 21. OOP multiplataforma en C++
- 22. OOP vs JavaScript
- 23. OOP. Elección de objetos
- 24. OOP y escalabilidad
- 25. PHP OOP Programación MySQL
- 26. ¿Bien o mal OOP?
- 27. PHP OOP: objetos encadenables?
- 28. ¿Cuándo es mejor OOP?
- 29. Método cadenas PHP OOP
- 30. python - ¿soporta .send() para una clase?
Buena respuesta, y muy buen libro. ¡Gracias por los dos! –