powershell получает имя удаленного каталога и имя файла для помещения в имя файла назначения - PullRequest
1 голос
/ 17 июня 2011

У меня есть немного скрипта powershell, но я не могу заставить $ DirectoryName вести себя как положено.

1,2,3 |
foreach { 
    $count = $_; 
    $x = gci -Path \\myserver-web$count\d$\IISLogs\ -include *.log -recurse

    $x | Copy-Item -Destination D:\ServerLogsAndBackups\IIS\w$count\$_.DirectoryName_$_.Name -whatIf
}

Когда я запускаю это, я получаю

Что, если: Выполнение операции «Копировать файл» на целевом «элементе: \ myserver-web1 \ d $ \ IISLogs \ W3SVC1165836668 \ ex101224.log Назначение: D: \ ServerLogsAndBackups \ IIS \ w1 \ 1.DirectoryName_1.Name".

Я хочу, чтобы это было

W3SVC1165836668_ex101206.log

где моя структура каталогов выглядит так:

\\myserver-web1\d$\IISLogs\W3SVC1165836668
\\myserver-web1\d$\IISLogs\W3SVC1165837451
\\myserver-web1\d$\IISLogs\W3SVC1165836966
\\myserver-web1\d$\IISLogs\W3SVC1165812365

с файлами с именем ex101206.log в каждой папке

Приветствия

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Вам необходимо оценить часть $_.Directoryname_$_.Name. Вот так

$x | Copy-Item -Destination $(D:\ServerLogsAndBackups\IIS\w$count\$_.DirectoryName_$_.Name) -whatIf
0 голосов
/ 17 июня 2011
1,2,3 |
foreach { 
    $count = $_;
    gci -Path \\myserver-web$count\d$\IISLogs\ -include *.log -recurse | % { $dirName = $_.directoryname.Substring($_.directoryname.LastIndexOf("\")+1); $logname = $_.Name; $_ | Copy-Item -Destination $("D:\ServerLogsAndBackups\IIS\w"+$count+"\"+$dirname+"_"+$logName) -whatif }
}
...