从域上的每个客户端提取目录及其所有内容并复制到文件共享?
Posted
技术标签:
【中文标题】从域上的每个客户端提取目录及其所有内容并复制到文件共享?【英文标题】:Pulling a dir and all its contents from every client on a domain and copy to file share? 【发布时间】:2021-07-20 21:15:30 【问题描述】:我希望将一堆目录的“C:\Users\userOne\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates”及其所有内容复制到一个共享文件夹中,该文件夹名为客户端和用户名字。
我确信 for 循环是解决此问题的最佳方法,但我对使用哪些变量来获得我想要的东西感到困惑。
该数组肯定会包含 AD 上每个工作站的列表,但我需要为每个工作站指定一堆目录。也许像这样的通配符会起作用? C:\Users*\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates
我在这里看到了大量有用的示例,但其中大多数涉及从一个位置复制到多个位置,而不是从多个位置复制到一个位置。
这是我的第一篇文章,在此先感谢您的帮助!
【问题讨论】:
我不确定我是否完全得到你想要的,你说一堆目录,这些目录是用户目录,还是每个用户配置文件中的目录? 每个用户文件夹中的一个特定目录。即 C:\Users\USERONE\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates C:\Users\USERTWO\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates C:\Users\USETHREE\AppData\Roaming\Microsoft\ SystemCertificates\My\Certificates 这里是一个例子。没有任何内容被复制,它只是打印到屏幕上。第 1 行:@echo off
然后第 2 行:set "dirs=AppData\Roaming\Microsoft\SystemCertificates\My\Certificates\"
最后第 3 行:for /f "skip=1tokens=1*" %%i in ('wmic UserAccount get Name') do if exist "%homedrive%\users\%%~i\%dirs%" echo "%homedrive%\users\%%~i\%dirs%"
如果您的问题尚未得到完全解答,请考虑 accepting 提供答案或提供反馈。
【参考方案1】:
是的,您可以在基于通配符的路径中使用...\*\...
来表示目录层次结构中给定级别的所有目录。
在您的场景中,您可以执行以下操作(为简单起见,在单台计算机上使用本地路径)- 确保运行命令 elevated(作为 administrator) 所以你可以访问其他用户的主目录:
Get-ChildItem C:\Users\*\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates |
Select-Object @ name='User'; expression= ($_.FullName -split '\\')[2] , FullName |
ForEach-Object
Copy-Item -WhatIf -Recurse -Force -LiteralPath $_.FullName "\\some\share\$($_.User)"
Get-ChildItem
C:\Users\*\...
隐式循环所有用户主目录,并返回每个用户指定剩余路径中的目录(如果存在)。
Select-Object
调用将Get-ChildItem
发出的System.IO.DirectoryInfo
实例转换为具有.FullName
(完整目录路径)和.User
属性(路径隐含的用户名)的自定义对象,通过calculated property.
ForEach-Object
调用然后使用Copy-Item
将每个目录复制到为用户命名的目标共享上的目标目录; -Recurse
复制目录及其所有内容(目录的整个子树),-Force
包括默认排除的隐藏项。
Copy-Item
命令中的-WhatIf
common parameter 预览 操作。一旦您确定该操作会执行您想要的操作,请删除 -WhatIf
。
【讨论】:
以上是关于从域上的每个客户端提取目录及其所有内容并复制到文件共享?的主要内容,如果未能解决你的问题,请参考以下文章
在同一域上的站点之间共享 cookie - Headless / Decoupled CMS