Как использовать переменную в UNC-пути в powershell? - PullRequest
2 голосов
/ 15 декабря 2009

Я пытаюсь посчитать содержимое папки на удаленном сервере.

Я знаю, что:

Get-ChildItem \\ServerName\c$\foldername -recurse | Measure-Object -property length -sum

работает удовольствие.

Однако я пытаюсь сделать имя сервера переменной с помощью ввода пользователя, но не могу найти путь для принятия какой-либо переменной.

Ответы [ 2 ]

7 голосов
/ 15 декабря 2009

Это довольно просто:

$server = Read-Host "Enter server name"
Get-ChildItem \\$server\users -recurse | measure-object length -sum
2 голосов
/ 18 декабря 2009

Если вы делаете это в оболочке и хотите использовать однострочник, попробуйте это:

Get-ChildItem "\\$(Read-Host)\share" -recurse | Measure-Object length -sum

Это не приведет к появлению сообщения с просьбой о вводе, но сохранит присвоение переменной, которая может вам не понадобиться, и если вы запускаете ее из оболочки, то вы знаете, что все равно нужен ввод!

Также двойные кавычки будут означать, что переменная оценивается так:

$hello = "Hello World"
Write-Host "$hello"
Hello world

Или, как указал Кит Хилл:

$hello = "Hello World"
Write-Host $hello
Hello World

Где одинарные кавычки не будут вычислять переменную так:

$hello = "Hello World"
Write-Host '$hello'
$hello

Так что, если вы используете переменные и в пути есть пробелы, используйте "".

...