PowerShell:复制文件然后压缩

时间:2012-07-10 20:30:32

标签: file powershell zip copy-paste

我一起吃了这个,但有点卡住了。代码将项目放在根目录而不是它来自的文件夹中,即如果它在测试文件夹中,它将它直接放在用户文件夹中,我希望它创建一个测试文件夹并将项目放在那里。复制完项目后,我希望它压缩位置。有一次,我以为我可以创建一个txt文件,然后使用它来复制项目,但后来我迷路了。

$PCName = Read-Host "Enter Machine Name"
$User = Read-Host "Enter User Name"
$NAS = "\\<nas>\users\$user"
$Dir = get-childitem \\$PCName\C$\users\$User -force -recurse | where {
$_.extension -match "doc|xls|docx|xlsx|pdf|pst|txt|jpg|tif"} | ForEach {
Copy-Item $_.FullName -Destination $NAS -force -ErrorAction:SilentlyContinue
}


#$Dir | ft fullname | out-file C:\Scripts\logs\FileList\$User.txt
$Dir | format-table name# PowerShell script to list the DLL files under the system32 folder

1 个答案:

答案 0 :(得分:0)

您需要将源目录的根目录替换为目标路径中目标目录的根目录:

$PCName = Read-Host "Enter Machine Name"
$User = Read-Host "Enter User Name"
$NAS = "\\<nas>\users\$user"
$sourceRoot = "\\$PCName\C$\users\$User"
$Dir = get-childitem $sourceRoot -force -recurse | 
    where { $_.extension -match "doc|xls|docx|xlsx|pdf|pst|txt|jpg|tif"} | 
    ForEach {  
        $destFile = $_.FullName.Replace($sourceRoot, $NAS)
        New-Item -ItemType File -Path $destFile -Force
        Copy-Item $_.FullName -Destination $destFile -force -ErrorAction:SilentlyContinue }