¿Cómo uso una variable en una ruta UNC en PowerShell?
-
19-09-2019 - |
Pregunta
Estoy tratando de contar el contenido de una carpeta en un servidor remoto.
Yo sé eso:
Get-ChildItem \\ServerName\c$\foldername -recurse | Measure-Object -property length -sum
Funciona un regalo.
Sin embargo, estoy tratando de hacer que el nombre del servidor sea una variable, por entrada del usuario, pero no puedo obtener la ruta para aceptar ninguna variable.
Solución
Es bastante sencillo:
$server = Read-Host "Enter server name"
Get-ChildItem \\$server\users -recurse | measure-object length -sum
Otros consejos
Si está haciendo esto en el shell y desea una línea de una sola, intente esto:
Get-ChildItem "\\$(Read-Host)\share" -recurse | Measure-Object length -sum
Esto no producirá un mensaje solicitando información, pero guarda la asignación a una variable que puede no necesitar, y si está ejecutando esto desde el shell, ¡conoce la entrada que se necesita de todos modos!
También las cotizaciones dobles significarán que se evalúa una variable, así que:
$hello = "Hello World"
Write-Host "$hello"
Hello world
O como Keith Hill ha señalado:
$hello = "Hello World"
Write-Host $hello
Hello World
Donde, como citas individuales, no evaluarán la variable, así que:
$hello = "Hello World"
Write-Host '$hello'
$hello
Entonces, si está utilizando variables y tiene espacios en la ruta, use "".