2011-06-17 112 views
1

我有這一點的PowerShell腳本,但我不能讓$ DirectoryName行爲如預期。powershell獲取遠程目錄名稱和文件名放在目標文件名

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

您需要評估$_.Directoryname_$_.Name部分。像這樣,

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

半路那裏:$ X | ForEach-Object {$ x -Destination $(「D:\ ServerLogsAndBackups \ IIS \ w」+ $ count +「\」+ $ _。Directoryname +「_」+ $ _。Name) - whatIf \t }然而它聲稱我的目標是像.. D:\ ServerLogsAndBackups \ IIS \ w1 \ myserver-web1 \ d $ \ IISLogs \ W3SVC1135081669_ex110330.log – Jarede 2011-06-17 11:56:26

相關問題