The Big Book of PowerShell Gotchas (Spanish)
  • Léame
  • Acerca de este libro
  • Formato a la derecha
  • ¿Dónde está el comando \?
  • PowerShell.exe no es PowerShell
  • Acumulando la salida en una función
  • ForEach vs ForEach vs ForEach
  • Finalización con Tab
  • -Contains y -Like son diferentes
  • No puede tener lo que no se tiene
  • -Filter y la diversidad de valores
  • No todo produce una salida
  • Una página HTML a la vez, por favor
  • Sangriento, Horrible, Puntuación
  • No Concatene Strings
  • $ no forma parte del nombre de la variable
  • Utilizar la canalización (pipeline), no una matriz
  • Backtick, Grave Accent, Escape
  • Comandos de la vieja escuela
  • Una multitud no es un individuo
  • La salida predeterminada de los comandos puede mentir
  • Propiedades vs. Valores
  • Variables Remotas
  • New-Object PSObject vs. PSCustomObject
  • Ejecutando algo como el "usuario actualmente conectado"
  • Comandos que necesitan un perfil de usuario pueden fallar cuando se ejecuta de forma remota
  • Escribiendo en SQL Server
  • Obtener tamaños de carpetas
Powered by GitBook
On this page

No Concatene Strings

PreviousSangriento, Horrible, PuntuaciónNext$ no forma parte del nombre de la variable

Last updated 7 years ago

Realmente me disgusta la concatenación de cadenas. Es como obligar a alguien a acurrucarse con alguien que ni siquiera conocen. Grosero.

Y completamente innecesario, cuando se utilizan comillas dobles.

Mismo efecto al final. Usando comillas dobles, PowerShell buscará el carácter $. Cuando lo encuentre:

  1. Si el siguiente carácter es { entonces PowerShell llevará todo a la concordancia } como un nombre de variable, y reemplazará todo con el contenido de esa variable. Por ejemplo, poner $ {mi variable} dentro de comillas dobles reemplazará con el contenido de $ {mi variable}.

  2. Si el siguiente carácter es un ( entonces PowerShell llevará todo a la coincidencia ) y lo ejecutara como si fuera código. Por lo que, ejecuté $wmi.serialnumber para acceder a la propiedad serialnumber del objeto que se encontraba en la variable $wmi.

  3. De lo contrario, PowerShell tomará todos los caracteres que sean legales para un nombre de variable, hasta el primer carácter de nombre de variable ilegal, y lo reemplazará con esa variable. Así es como funciona $computer en mi ejemplo. El espacio después de la r no es legal para un nombre de variable, por lo que PowerShell sabe que el nombre de la variable se detiene en r.

Una cosa para resaltar aquí:

Esto no funcionará como se esperaba. En la mayoría de los casos, $wmi será reemplazado por un nombre de tipo de objeto y .serialnumber seguirá allí. Eso ocurre porque . no es un nombre de variable legal, por lo que PowerShell deja de “observar” la variable con la letra i. Entonces, reemplaza $wmi con su contenido. Usted vio en el ejemplo anterior, el uso de $($wmi.serialnumber), que es una subexpresión y funciona. Los paréntesis hacen que su contenido se ejecute como código..

image043.png
image045.png
image047.png