我有包含几个文件夹的目录,我想排除包含一个字符串的文件夹名。我尝试使用以下命令使用通配符选项(在排除变量中),该选项在排除部分中不起作用。
$dirName = "C:\Users\xyz\Desktop\powershellScripts\destmonitors"
$excludes = "PortMonitor","ProcessMonitor","FileWatcher","UrlMonitor","*SQLMonitor*","LogMonitor"
Get-ChildItem "C:\Users\xyz\Desktop\powershellScripts\monitors\*" -Directory | Where-Object{$_.Name -notin $excludes} | Copy-Item -Destination $dirName -Recurse -Force例如:假设我在显示器目录中有文件夹,如SQLMonitor,CSTK123_SQLMonitor,TEST_SQLMonitor,SQLMonitor_abc .现在,我想使用通配符排除这些文件夹。
如何在PowerShell中实现这一点。
发布于 2021-12-01 13:10:29
$dirName = "C:\Users\sj01856\Desktop\powershellScripts\destmonitors"
$excludes = "PortMonitor","ProcessMonitor","FileWatcher","UrlMonitor","*SQLMonitor*","LogMonitor"
Get-ChildItem "C:\Users\sj01856\Desktop\powershellScripts\monitors\*" -Directory | Where-Object{$_.Name -notmatch ($excludes -join "|")} | Copy-Item -Destination $dirName -Recurse -Force你需要与数组匹配,而不是从字面上看星号。
发布于 2021-12-01 13:31:06
您应该能够在Get-ChildItem调用中使用一个-Excludes参数来完成所有这些工作,该参数需要一个模式数组来排除:
$dirName = "C:\Users\xyz\Desktop\powershellScripts\destmonitors"
$excludes = "PortMonitor","ProcessMonitor","FileWatcher","UrlMonitor","*SQLMonitor*","LogMonitor"
Get-ChildItem "C:\Users\xyz\Desktop\powershellScripts\monitors" -Directory -Exclude $excludes |
Copy-Item -Destination $dirName -Recurse -Forcehttps://stackoverflow.com/questions/70184708
复制相似问题