2013-02-26 3 views
0

Я пытаюсь запустить нижеследующее против многоуровневых серверов, используя Powershell 3.0, но по какой-то причине я возвращаюсь к тому, что путь не существует ... хотя он и работает?путь не найден?

Любые идеи?

КОД:

clear 
$computer = Get-Content -path c:\temp\servers.txt 

foreach ($computer1 in $computer){ 

Write-Host $computer1 
Get-Content -Path '\\$computer1\C$\Program Files\BMC Software\BladeLogic\RSCD\rscd.log' -Tail 10 

} 

ОШИБКА:

SV191267 Get-Content : Cannot find path '\$computer1\C$\Program Files\BMC Software\BladeLogic\RSCD\rscd.log' because it does not exist. At C:\Users\gaachm5\AppData\Local\Temp\e4651274-dcab-4a87-95a6-0f11437a7187.ps1:7 char:1 + Get-Content -Path '\$computer1\C$\Program Files\BMC Software\BladeLogic\RSCD\rs ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (\$computer1\C$...c\RSCD\rscd.log:String) [Get-Content], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

SV193936 Get-Content : Cannot find path '\$computer1\C$\Program Files\BMC Software\BladeLogic\RSCD\rscd.log' because it does not exist. At C:\Users\gaachm5\AppData\Local\Temp\e4651274-dcab-4a87-95a6-0f11437a7187.ps1:7 char:1 + Get-Content -Path '\$computer1\C$\Program Files\BMC Software\BladeLogic\RSCD\rs ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (\$computer1\C$...c\RSCD\rscd.log:String) [Get-Content], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

+0

Вы даже попытаться прочитать ошибку? Если вы это сделали, ваш вопрос должен был быть «почему моя переменная не расширяется?» , Это мало или совсем не усиливает. –

ответ

4

попробовать:

"\\$computer1\C`$\Program Files\BMC Software\BladeLogic\RSCD\rscd.log" -Tail 10 

В одинарных кавычках ' переменных не расширены, но рассматривается как буквальные, как $computer1, то $ для $admin share должен быть уволен d с обратным шагом `

+3

Как указано в ответе @ HungryHippos, знак доллара для учетной записи администратора не обязательно должен быть экранирован. Причина сопровождается символом \ char, но я думаю, что это хорошая практика избежать знака доллара в строке, когда это необходимо как буквальное , –

+0

работал отлично - спасибо за это. – lara400

+0

@ lara400 Рад помочь! –

3

Путь, который не может быть найден, имеет только один \ на передней панели, общий ресурс UNC должен начинаться с двух. Я могу видеть из вашего кода, похоже, что вы префикс двух, но не похоже, что он переносится.

Я бы использовал двойные кавычки вместо одинарных кавычек, как уже указывалось, если вы это сделаете, вам также не нужно будет выходить из символа $.

Предполагая, что файл с файлом file.txt существует в папке C: \ temp на локальном компьютере.

Это не удается:

$computer1 = "localhost" 
Test-Path '\\$computer1\c$\temp\file.txt' 

Это работает:

$computer1 = "localhost" 
Test-Path "\\$computer1\c$\Temp\file.txt" 
+0

Я отредактировал ваш ответ, чтобы исправить кавычки в первом примере (два примера были идентичны, кроме заглавной буквы T во втором :)) –

+0

Я отредактировал его снова, чтобы на самом деле работать. Это не '$ computer1', которому нужны двойные кавычки, это строка' Test-Path', которая должна расширять переменную :-) –

+1

@Graimer OMG .... Я как под лизергиновой кислотой ... спасибо! –

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