我对脚本和 PowerShell 都很陌生。我想做的是从一个文件夹部署文件(C:\Deployments\QA\QADEP-1504\Processor Handlers\Release)到远程服务器上的另一个文件夹(\HQDEVAPP004\C$\Lonestar\ProcessorHandlers\Test)。在“测试”文件夹中,有 3 个子文件夹(1、2 和 RejectedTransactionHandler)。
因此,我希望所有文件都部署到文件夹 1 和 2,但不部署到 RejectedTransactionHandler 文件夹。我尝试使用“-exclude”函数,但这似乎只适用于文件,而不适用于文件夹,但我可能错了。文件每次都会部署到所有三个文件夹。以下是我目前的情况:
起始目录的位置
$_SourcePath = "C:\Deployments\QA\QADEP-1504\Processor Handlers\Release"
列出本地目录中的所有文件夹
$PH = Get-ChildItem '\\HQDEVAPP004\c$\LoneStar\ProcessorHandlers\Test\' -Directory
Clear-Host
foreach ($folder in $PH.Name) {
Get-ChildItem -recurse ($_SourcePath) | Copy-Item -Destination "\\HQDEVAPP004\C`$\Lonestar\ProcessorHandlers\Test\$folder" -PassThru
}
```
答案1
添加if ($folder -ne 'RejectedTransactionHandler')
,这样在循环遍历文件夹时,就不会复制到文件RejectedTransactionHandler
夹。如果两个值不相等,则
PowerShell-ne
比较运算符返回,如果相等,则返回。$true
$false
这里是相关文档。
答案2
为了完成这个任务[ K.O. style
]你可以...
- 创建一个数组变量来包含要省略的文件夹名称。
- 创建另一个变量,其中包含源目录下子文件夹的目录名称(不包括指定的省略的子文件夹)。
- 然后循环源变量到...
- 如果目标子文件夹不存在则创建它
- 将源子文件夹内容复制到相关目标文件夹
电源外壳
#$ExcludeFolders = "RejectedTransactionHandler","FolderXYZ"
$ExcludeFolders = "RejectedTransactionHandler"
$_Source = Get-ChildItem 'C:\Folder\Source' -Directory | ? { $_.Name -notin $ExcludeFolders };
$_Destination = "C:\Folder\Destination\Test";
$_Source | % {
If (!(Test-Path "$_Destination\$($_.Name)")){ New-Item -Path "$_Destination\$($_.Name)" -ItemType Directory -Force; }
Copy-Item "$($_.FullName)\*" -Destination "$_Destination\$($_.Name)" -PassThru
}