我是PowerShell的新手。
我正在尝试自动将dll组件从源服务器上的一个文件夹部署到目标服务器上的多个文件夹。这看起来应该足够简单:将组件从源服务器上的源(部署)文件夹复制到目标服务器上的文件夹,验证副本,最后从源服务器上的部署文件夹中删除组件。
将文件从源服务器复制到目标服务器的过程正常,没有出现问题。但是,当脚本继续从源服务器删除组件时,我会断断续续地遇到错误:" remove -Item error: Cannot remove item path & name:访问路径'item path & name‘被拒绝。“
我已经多次运行这个脚本;有时它完成时没有任何问题,有时出现错误。并不是每个要删除的文件都会出现该错误,而且每次出现时似乎都会出现在不同的组件上。
下面是我编写的删除组件和验证删除的函数:
function DeleteSourceFiles($srcPath) {
# Announce delete
OutputToHostAndLog ("Files will be removed from "+$srcPath+"...")
OutputToHostAndLog "Removing files..."
# Deletes all file items (i.e. all except folders) in source folder
$filesToDelete=Get-ChildItem $srcPath | Where-Object {$_ -is [IO.FileInfo]}
ForEach($item in $filesToDelete) {
Remove-Item $srcPath\$item -force
# Verify deletions
if(Test-Path($srcPath+"\"+$item)) {
OutputToHostAndLog ("Delete failed: "+$item.Name)
$fail++
}
else {
OutputToHostAndLog ($item.Name+" deleted successfully...")
}
}
}
将-force参数与Remove-Item cmdlet一起使用似乎对此问题没有任何影响。这些文件(同样,每次失败都是不同的文件)看起来并不是isReadOnly。
同样,以管理员身份运行PowerShell似乎没有任何效果,尽管源文件夹的Get-Acl指示管理员应该具有FullControl权限。
这是我遗漏的权限问题吗?任何建议都非常感谢……
编辑:我更新了我的脚本如下:
function DeleteSourceFiles($srcPath) {
# Announce delete
OutputToHostAndLog ("Files will be removed from "+$srcPath+"...")
OutputToHostAndLog "Removing files..."
OutputToHostAndLog $gap
# Delete all file items (i.e. all except folders) in source folder
$filesToDelete=Get-ChildItem $srcPath | Where-Object {$_ -is [IO.FileInfo]} | ForEach {
Remove-Item $_.FullName -Force
# Verify deletions
if(Test-Path($srcPath+"\"+$_)) {
OutputToHostAndLog ("Delete failed: "+$_.Name)
$fail++
}
else {
OutputToHostAndLog ($_.Name+" deleted successfully...")
}
}
}
这似乎可以工作,尽管我仍然不确定为什么这种安排应该产生不同的结果。为了学习的兴趣,任何见解都将不胜感激。
发布于 2014-04-08 22:28:05
间歇性访问被拒绝错误可能表明您试图删除的一个或多个文件已被另一个应用程序锁定。当您试图清理日志目录时,这是一个非常常见的问题。
我建议做的唯一一件事就是等待带有锁的应用程序释放文件。
发布于 2014-11-26 20:41:47
我修复了这个问题,方法是为用户设置安全权限,为我试图从中删除的文件夹添加“修改”和“完全控制”
发布于 2021-04-02 23:55:38
我在计划任务中运行PowerShell时遇到了这个问题。我做了几件事,它在最后一件上起作用了:
a)例如,新调度的任务主体-GroupId "BUILTIN\Administrators“-RunLevel最高
https://stackoverflow.com/questions/22939800
复制相似问题