1

我把这个拼凑在一起,但有点卡住了。代码将项目放置在根目录而不是它来自的文件夹中,即如果它位于测试文件夹中,则将其直接放置在用户文件夹中,我希望它创建一个测试文件夹并将项目放在那里。在它复制了项目后,我希望它压缩该位置。有一次我在想我可以创建一个 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
4

1 回答 1

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 }
于 2012-07-10T23:30:18.317 回答