我有这个代码检查整个目录的文件权限。 问题是它们很多并且不断加起来。
output message "CHECKING FOR FILES PERMISSION"
$files = Get-ChildItem -Path $PATHDEST -Recurse | % { $_.isreadonly = $true }
$attribute = [io.fileattributes]::ReadOnly
Foreach($file in $files) {
if((Get-ItemProperty -Path $PATHDEST"\"$file).attributes -band $attribute){
attrib -r $PATHDEST"\"$file /s
}
}
在部署新版本的应用程序时使用此方法只是为了确保部署中不会出现任何问题。
现在,我真正想要的是检查要更新的文件的权限,而不是整个目录......
答案 0 :(得分:1)
如果我理解正确,你应该可以这样做:
foreach ($file in (Get-ChildItem -Path $PATHDEST -Recurse -File)) {
if ($file.IsReadOnly) {
$file.IsReadOnly = $false
}
}
这会以递归方式遍历$PATHDEST
(不是文件夹)中的所有文件,并将从只读文件中删除只读属性。
最好使用$file.IsReadOnly = $false
然后attrib
,因为它没有使用外部工具来实现这一目标。
答案 1 :(得分:1)
如果要查找所有只读文件并删除只读权限,可以使用以下命令:
Get-ChildItem -Path $PATHDEST -Recurse | Where-Object { $_.isreadonly -eq $true } | Foreach-Object { attrib -r $_ }
这将使用Where-Object
cmdlet过滤所有只读文件,然后将它们沿管道传递到Foreach-Object
cmdlet,该cmdlet将对已过滤列表执行操作,运行{{1}命令对文件。
答案 2 :(得分:0)
我不是100%的确切问题,但我理解为>
我建议如下。
我希望这会有所帮助。祝你有美好的一天。