Come posso usare una variabile in un percorso UNC in PowerShell?
-
19-09-2019 - |
Domanda
Sto cercando di contare il contenuto di una cartella su un server remoto.
So che:
Get-ChildItem \\ServerName\c$\foldername -recurse | Measure-Object -property length -sum
funziona una sorpresa.
Tuttavia, sto cercando di rendere il nome del server una variabile, per input dell'utente, ma non riesco a ottenere il percorso per accettare qualsiasi variabile.
Soluzione
È piuttosto semplice:
$server = Read-Host "Enter server name"
Get-ChildItem \\$server\users -recurse | measure-object length -sum
Altri suggerimenti
Se lo stai facendo nella shell e vuoi un liner, prova questo:
Get-ChildItem "\\$(Read-Host)\share" -recurse | Measure-Object length -sum
Questo non produrrà un messaggio che richiede input, ma salva l'assegnazione a una variabile di cui potresti non aver bisogno, e se lo stai eseguendo dalla shell, conosci comunque l'input che è necessario!
Anche le citazioni doppie significheranno che viene valutata una variabile: quindi:
$hello = "Hello World"
Write-Host "$hello"
Hello world
O come ha sottolineato Keith Hill:
$hello = "Hello World"
Write-Host $hello
Hello World
Dove come citazioni singole non valuteranno la variabile quindi:
$hello = "Hello World"
Write-Host '$hello'
$hello
Quindi, se stai usando le variabili e hai spazi nell'uso del percorso "".