powershell获取远程目录名称和文件名以放入目标文件名

时间:2011-06-17 10:39:58

标签: file powershell filesystems powershell-v2.0

我有一些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 个答案:

答案 0 :(得分:1)

您需要评估$_.Directoryname_$_.Name部分。像这样,

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

答案 1 :(得分:0)

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 }
}