在powershell查找和替换中获取访问错误

在powershell查找和替换中获取访问错误,powershell,Powershell,我正在尝试对目录中的所有文件运行查找和替换。我正在运行windows 7 Enterprise,正在搜索的文件夹位于本地计算机上。每当我只在文件夹中的5.SQL文件上运行该语句时,脚本运行正常。当我在第一个文件夹中添加另一个文件夹(因此现在有5.sql和一个文件夹中还没有任何内容)并尝试运行相同的语句时,我得到一个错误,拒绝访问新文件夹。我尝试了所有设置文件夹、文件和其他我能想到的可能阻止它访问该子文件夹的权限的方法。如有任何建议,将不胜感激。我甚至尝试确保windows中文件夹的属性设置正确

我正在尝试对目录中的所有文件运行查找和替换。我正在运行windows 7 Enterprise,正在搜索的文件夹位于本地计算机上。每当我只在文件夹中的5.SQL文件上运行该语句时,脚本运行正常。当我在第一个文件夹中添加另一个文件夹(因此现在有5.sql和一个文件夹中还没有任何内容)并尝试运行相同的语句时,我得到一个错误,拒绝访问新文件夹。我尝试了所有设置文件夹、文件和其他我能想到的可能阻止它访问该子文件夹的权限的方法。如有任何建议,将不胜感激。我甚至尝试确保windows中文件夹的属性设置正确

这就是我正在使用的脚本,当所有文件都在文件夹的根目录下,但子文件夹中的任何内容都会抛出错误时,该脚本就会工作

(get-Content D:\project\*) | Foreach-Object {$_ -replace ";", ""} | Set-Content D:\project\*

不如这样做:

$folder = 'D:\project'
foreach ($f in (Get-ChildItem $folder -Recurse | ? {-not $_.PSIsContainer})) {
  (Get-Content $f.FullName) -replace ';' | Set-Content $f.FullName
}

在管道的开头和结尾使用通配符,我都会感到不舒服,即使它可以工作(它不工作)。

能够实现我试图用这段代码做的事情。谢谢大家的意见。这使我可以选择更改所有具有SQL扩展名的文件

Get-ChildItem D:\Projects *.SQL -recurse |
Foreach-Object {
    $c = ($_ | Get-Content) 
    $c = $c -replace ";", ""
    [IO.File]::WriteAllText($_.FullName, ($c -join "`r`n"))
}

这没用。它没有抛出任何错误,但没有更改中的任何文件directory@CM_Heroman当我测试它时,它工作了。请显示您正在使用的实际代码。