我试图敲出一个足够简单的(我认为)脚本来清理通过浏览器部署的旧版本的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
}
}