es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasando argumentos a una función

Encontré este enlace para crear copias de sombra de VSS en Windows. Pero el código utiliza cadenas fijas para los parámetros:

function createVssSnapshot{
[cmdletbinding()]
param(
    [string]$targetVolume="C:\",
    [string]$accessPath='C:\vssSnapshot',
    [bool]$openSnapshotAfter=$true
)
[..]

Me gustaría modificarlo para que sea más flexible:

function [String]createVssSnapshot{
[cmdletbinding()]
param(
    [String]$targetVolume,
    [String]$accessPath,
    [Bool]$openSnapshotAfter
)
[..]

y llamarlo usando

$result = createVssSnapshot("C:\", "C:\vssSnapshot", $false)

Pero obtengo el siguiente error:

createVssSnapshot : Die Argumenttransformation für den Parameter "targetVolume" kann nicht verarbeitet werden. Der Wert kann nicht in den Typ "System.String" konvertiert werden.
In F:\Powershell_4_Pure\Object_based.ps1:143 Zeichen:28
+ $result = createVssSnapshot("C:\", "C:\vssSnapshot", $false)
+                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidData: (:) [createVssSnapshot], ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,createVssSnapshot

Disculpe por el mensaje de error en alemán, pero parece que targetVolume no es del tipo System.String.

¿Qué me falta aquí?

Para futuras consultas: ¿Cómo puedo modificar PowerShell ISE para tener mensajes de error en inglés?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el parámetro “targetVolume” no puede ser procesado debido a que el valor no puede ser convertido al tipo “System.String”.

    Para solucionar esto, debes eliminar los paréntesis de la llamada a la función y pasar los argumentos directamente como valores separados:

    $result = createVssSnapshot "C:\" "C:\vssSnapshot" $false
    

    Esto debería asignar correctamente los valores a los parámetros de la función y evitar el problema de conversión de tipos.

    Para modificar PowerShell ISE y que muestre mensajes de error en inglés, puedes cambiar la configuración de idioma en la configuración del sistema de Windows. Específicamente, ve a Panel de control > Reloj, idioma y región > Idioma > Preferencias de idioma y establece el inglés como idioma de visualización.

Comments are closed.