从用户配置文件中删除特定文件夹



我试图敲出一个足够简单的(我认为)脚本来清理通过浏览器部署的旧版本的Zoom,但只留下完全安装的版本。

将以下内容放在一起:

$UserDir = "C:Users"
$TargetFolder = "AppDataRoamingZoombin"
Get-ChildItem $UserDir -Directory -Exclude Default*,Public | foreach {

$joined_path = Join-Path -Path $_,FullName -ChildPath $TargetFolder
if (Test-Path $joined_path) {
remove-item "$joined_path" -Force
}
}

并且它'kind '工作,我得到以下错误:

remove-item : Cannot find path 'C:UsersAdminAppDataRoamingZoombin FullNameAppDataRoamingZoombin' 
because it does not exist.

很明显我没有完全理解join-path命令,它正在复制它正在搜索的路径。

这里的想法是从所有配置文件中删除目标目录(AppDataRoamingZoomBin) -具有讽刺意味的是,也许错误消息显示它正在搜索多个配置文件,但它在目标文件夹上标记了两次,我很困惑为什么。

添加一行,将$joined_path变量指定为null,以便添加一些变量输出,以尝试了解我出错的地方:

$UserDir = "C:Users"
$TargetFolder = "AppDataRoamingZoombin"
$joined_path = ""
Get-ChildItem $UserDir -Directory -Exclude Default*,Public | foreach {
write-output "resulting joined path1 is" $joined_path

$joined_path = Join-Path -Path $_,FullName -ChildPath $TargetFolder
write-output "resulting joined path2 is" $joined_path
if (Test-Path $joined_path) {
remove-item "$joined_path" -Force
}
$joined_path = ""
}

现在我在输出中看到如下内容:

resulting joined path1 is
resulting joined path2 is
C:UsersAdminAppDataRoamingZoombin
FullNameAppDataRoamingZoombin

这对我来说表明这是两个输出之间的线,只是努力理解为什么。

感谢Zett42。

修复错别字使它一切正常工作,它似乎工作的方式周围的所有配置文件文件夹,除了我排除-已经测试了,在多个设备上,现在没有任何问题或遗漏的配置文件。

$UserDir = "C:Users"
$TargetFolder = "AppDataRoamingZoombin"
$joined_path = ""
Get-ChildItem $UserDir -Directory -Exclude Default*,Public | foreach {

$joined_path = Join-Path -Path $_.FullName -ChildPath $TargetFolder
if (Test-Path $joined_path) {
remove-item "$joined_path" -Force
}
}

最新更新