PowerShell 仅获取文件夹内的文件 > 移动到根目录 > 仅删除文件夹 > 上传到 ShareFile

PowerShell Only get files within folders > move to root > delete folders only > upload to ShareFile

我有下面的 powershell 脚本,它被开发用于将文件从本地 unc 路径复制到应用程序 Citrix ShareFile。虽然在这方面一切都很好,但我们面临的一个问题是我们严格不能支持文件夹,因为 Citrix ShareFile 不接受副本作为新上传,但是它将文件创建为新文件夹并且没有正确触发工作流.

我认为让我们的生活更轻松的一件事就是不支持适合我们环境的文件夹。

我想的是一个脚本,它可以提取所有文件并将它们移动到根目录,删除所有文件夹,然后将它们上传到 ShareFile。

以下脚本将复制文件夹及其所有内容。

我环顾四周,正在努力让它按照我的意愿去做。

## Add ShareFile PowerShell Snap-in
Add-PSSnapin ShareFile

## Create new authentication file
#New-SfClient -Name "C:\Sharefile\SVCACC.sfps" -Account aws

## Variables ##
$OutputAppReqFID = "fo4a3b58-bdd6-44c8-ba11-763e211c183f"
$Project = 'A001'
$LocalPath = "\file.server.au$project\DATA\DATA CUSTODIAN\OUTPUT\"
$sfClient = Get-SfClient -Name C:\sharefile\SVCACC.sfps
$OutputAppReqFID_URL = (Send-SfRequest $sfClient -Entity Items -id $OutputAppReqFID).Url

## Create PS Drive ##
New-PSDrive -Name "sfDrive-$($project)" -PSProvider ShareFile -Client $sfClient -Root "\" -RootUri $OutputAppReqFID_URL

## Copy all files from specified path to ShareFile, followed by moving files to another folder ##
foreach ($object in Get-ChildItem -Path $LocalPath) { 
    Copy-SfItem -Path $object.FullName -Destination "sfDrive-$($project):" 
    remove-item $object.FullName -Recurse
    }

## Remove PS Drive ##
Remove-PSDrive "sfdrive-$($project)"

已回答!

我设法应用了一个简单的 Where-Object,它从上传中排除了模式目录 d-----

Get-childitem -Path $LocalPath -Recurse | Where-Object {$_.Mode -ne "d-----"} | Select-Object -ExpandProperty FullName) 

Seems to have worked a treat!