Windows PowerShell UnauthorizedAccessException正在网络共享上写入文件

Windows PowerShell UnauthorizedAccessException正在网络共享上写入文件,windows,powershell,permissions,Windows,Powershell,Permissions,我正在尝试编写一个PowerShell脚本,它可以缩小Web服务器上满是.js文件的目录。这些文件属于我;我创造了它;我以我的身份登录。我可以在文本编辑器或批处理文件中打开和保存文件。PowerShell脚本认为它是以我的身份运行的($env:username),而我是从使用“以管理员身份运行”运行的PowerShell控制台运行它的 这个循环看起来像这样$文件已确认为表示所需文件的文件对象的集合 $tool = "c:\Program Files (x86)\Microsoft\Microso

我正在尝试编写一个PowerShell脚本,它可以缩小Web服务器上满是.js文件的目录。这些文件属于我;我创造了它;我以我的身份登录。我可以在文本编辑器或批处理文件中打开和保存文件。PowerShell脚本认为它是以我的身份运行的(
$env:username
),而我是从使用“以管理员身份运行”运行的PowerShell控制台运行它的

这个循环看起来像这样$文件已确认为表示所需文件的文件对象的集合

$tool = "c:\Program Files (x86)\Microsoft\Microsoft Ajax Minifier\ajaxmin.exe";

foreach($ofile in $files) {
    $outfile = $ofile.DirectoryName + "\" + $ofile.BaseName + ".min.js";

    & $tool $ofile.FullName > $outfile;
}
我在每个文件上都遇到以下错误:

Access to the path '\\webserver\inetpub\whatever\js\validation.min.js' is denied.
At C:\minifyall.ps1:18 char:27
+     & $tool $ofile.FullName > <<<<  $outfile;
    + CategoryInfo          : OpenError: (:) [], UnauthorizedAccessException
    + FullyQualifiedErrorId : FileOpenFailure
是否需要执行其他操作才能使此脚本写入远程文件?除了用Perl重写它(更新:最后,我用Perl重写了它,到2020年2月为止,我没有遇到任何问题。这不是对Perl的认可


欢迎提供有关PowerShell编码风格的提示。我对PowerShell的专业体验始于今天早餐后约一小时

尝试打印所有完整路径,以查看是否有任何有趣的事情发生

另一个原因可能是,由于目标文件是Javascript,某些安全系统会阻止访问。你在运行防病毒软件吗


如果所有其他操作都失败,请使用查看文件系统上到底发生了什么。

尝试打印所有完整路径,以查看是否发生了任何有趣的事情

另一个原因可能是,由于目标文件是Javascript,某些安全系统会阻止访问。你在运行防病毒软件吗


如果所有其他操作都失败,请使用查看文件系统上到底发生了什么。

请记住,授予您权限的远程计算机上的文件ACL是不够的。您还需要在共享上写入的权限。转到远程计算机,右键单击文件夹,转到共享选项卡,高级共享,然后单击权限按钮。检查这些权限以确保您具有写入权限。

请记住,授予您权限的远程计算机上的文件ACL是不够的。您还需要在共享上写入的权限。转到远程计算机,右键单击文件夹,转到共享选项卡,高级共享,然后单击权限按钮。检查这些权限以确保您具有写入权限。

已打印所有完整路径。没有什么意外。我们确实有一群狂暴和敌对的安全软件。。。谢谢。已经打印了所有完整路径。没有什么意外。我们确实有一群狂暴和敌对的安全软件。。。谢谢。远程计算机上的文件夹属性对话框没有共享选项卡。记住,无论如何,我可以将这些文件保存在VS或记事本中。你可以通过网络共享保存它们吗?顺便说一句,检查与“inetpub”共享对应的文件夹上的共享属性。是的,我可以通过网络共享保存它们。最后,我编写了一个批处理文件,其中.js文件在命令行中明确列出,输入和输出文件都有完整的网络共享路径。很好。名单不会经常改变;PowerShell对于这项任务来说有点过分了。似乎是开始学习它的借口。我想知道PS是否对潜在的恶意脚本行为没有偏执的假设。我工作的员工网络共享禁止写入具有特定扩展名(EXE、DLL、BAT等)的文件。我不知道这是如何实现的,无论是Windows功能还是某些第三方产品。错误消息没有帮助,因为它看起来像一条拒绝访问的消息,即使您可能通过ACL拥有权限,并且共享具有写入权限。我本打算建议尝试编写一个具有不同扩展名(例如.TXT)的文件,但最后一条评论表明扩展名不太可能是问题所在。如果PS正在做什么,我会非常惊讶。远程机器上的文件夹属性对话框没有共享选项卡。记住,无论如何,我可以将这些文件保存在VS或记事本中。你可以通过网络共享保存它们吗?顺便说一句,检查与“inetpub”共享对应的文件夹上的共享属性。是的,我可以通过网络共享保存它们。最后,我编写了一个批处理文件,其中.js文件在命令行中明确列出,输入和输出文件都有完整的网络共享路径。很好。名单不会经常改变;PowerShell对于这项任务来说有点过分了。似乎是开始学习它的借口。我想知道PS是否对潜在的恶意脚本行为没有偏执的假设。我工作的员工网络共享禁止写入具有特定扩展名(EXE、DLL、BAT等)的文件。我不知道这是如何实现的,无论是Windows功能还是某些第三方产品。错误消息没有帮助,因为它看起来像一条拒绝访问的消息,即使您可能通过ACL拥有权限,并且共享具有写入权限。我本打算建议尝试编写一个具有不同扩展名(例如.TXT)的文件,但最后一条评论表明扩展名不太可能是问题所在。如果PS在做什么,我会非常惊讶。
# No prob
$outfile = $ofile.BaseName + ".min.js";