问题描述
我正在尝试删除我们公司所有设备上的文件。我正在尝试获取计算机名列表,然后再获取用户名列表。这是我到目前为止创建的。我们已经按照用户的名字缩写来组织用户,这就是为什么我只保留前三个字符的原因。在这种情况下,我只是尝试查看每个用户的路径是否存在。
我不确定这是执行此操作的正确方法还是应该在“用户”目录路径中添加的内容。任何帮助或建议,将不胜感激。谢谢!
$ComputerList = (Get-ADComputer -Filter *).name
$ComputerName.Substring(0,3) = (Get-ADComputer -Filter *).name
Foreach ($Computer in $ComputerList)
{
$checkpath = 'C:\Users\ \AppData\Local\Microsoft\Edge\User Data\Default\Login Data'
Test-Path -Path $checkpath
}
解决方法
我会在每台设备上使用Get-ChildItem,因此它将仅找到实际登录该设备的用户。然后,您可以使用每个ChildItem的.fullname来获取完整路径,例如“ C:\ Users \ username”
Foreach ($Computer in $ComputerList)
{
$userfolders = get-childitem C:\users\
foreach ($user in $userfolders) {
$path = $user.fullname
test-path -Path "$path\AppData\Local\Microsoft\Edge\User Data\Default\Login Data"
}
}
这将遍历列表中的每台计算机,找到每台计算机上存在的用户文件夹,然后测试每个用户的路径。
编辑:思路不清晰... get-childitem的路径必须像这样:
$userfolders = get-childitem "\\$Computer\C$\users\"
否则,它将继续反复检查您自己计算机的C:\驱动器