2009-12-15 2 views
2

Я пытаюсь подсчитать содержимое папки на удаленном сервере.Как использовать переменную в UNC-пути в powershell?

Я знаю, что:

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

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

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

ответ

7

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

$server = Read-Host "Enter server name" 
Get-ChildItem \\$server\users -recurse | measure-object length -sum 
+0

Интересно, если это проблема с версией powershell, потому что я не могу заставить это работать. Я получаю: «Не удается найти путь» \\ имя_сервера \ C $ \ имя_папки ', потому что его не существует. " Ошибка –

+0

Ну, я загрузил v 2.0, и я до сих пор не могу заставить это работать. Похоже на то, что нужно-работать. Я должен упустить что-то очевидное здесь. –

+0

Не знаю. Он работает для меня на V2 'gci \\ $ servername \ c $ \ users'. BTW, если имя_сервера является переменной, оно должно быть '\\ $ servername \ c $'. –

2

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

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 

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

+0

В вашем примере с Write-Host вообще не нужны кавычки. Даже в контексте синтаксического анализа командного режима вам не нужны двойные кавычки вокруг переменной. Попробуйте это на V2 - 'gci $ pshome \ modules' - посмотрите ma - нет кавычек. :-) –

+0

@Keith Спасибо за комментарий, это правда, но причина, по которой я их показываю, демонстрирует разницу в поведении между двойными и одинарными кавычками. Я изменил пример, чтобы продемонстрировать это. Спасибо что подметил это. :-) – Jonny

Смежные вопросы