我有一些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的文件
干杯
答案 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 }
}