下面的代码将数据库从一个位置移动到另一个位置:
$filters = Get-Content "c:\customerName.txt"
$source = "\\Server1\Databases"
$destination = "\\Server2\Databases"
foreach($filter in $filters)
{
Get-Childitem $source -include *.* -Recurse`
| ? {!$_.PsIsContainer -and $_.fullname -match $filter} `
| % {
Move-Item $_.FullName -Destination $destination"\$filter"
}
}
代码工作正常,但我需要更改它,以便它不会从特定文件夹中移动文件,即\\Server1\Databases\AMG
所以我尝试编辑上面的代码如下:
foreach($filter in $filters)
{
Get-Childitem $source -include *.* -Recurse | where {$_.source -notlike *"\\Server1\Databases\AMG"*} `
| ? {!$_.PsIsContainer -and $_.fullname -match $filter} `
| % {
Move-Item $_.FullName -Destination $destination"\$filter"
}
}
但如果我运行代码,它会移动所有内容,包括\\Server1\Databases\AMG
如何修复此代码才能正常工作?有什么想法吗?
答案 0 :(得分:0)
您需要更改:
Get-Childitem $source -include *.* -Recurse | where {$_.source -notlike *"\\Server1\Databases\AMG"*}
要:
Get-Childitem $source -include *.* -Recurse | where {$_.fullname -notlike "*\\Server1\Databases\AMG*"}
.source
未返回Get-Childitem
个属性。相反,您可以使用.fullname
,这是每个文件或文件夹的完整路径。*
通配符放在引号内。