【问题标题】:PowerShell UnauthorizedAccessException writing file on network sharePowerShell UnauthorizedAccessException 在网络共享上写入文件
【发布时间】:2013-12-09 18:09:12
【问题描述】:

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

循环看起来像这样。 $files 被确认是代表我想要的文件的文件对象的集合。

$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

那里的文件是它应该写入的文件,get-acl 告诉我我有 Allow FullControl。它可以很好地读取非 .min 文件。

如果我将输出目录更改为当前工作目录(在我自己的机器上),脚本会按预期工作:

# No prob
$outfile = $ofile.BaseName + ".min.js";

我还需要做些什么来使该脚本能够写入远程文件吗?除了用 Perl 重写之外(更新:最后,我用 Perl 重写了它,截至 2020 年 2 月,它没有遇到任何问题。这不是对 Perl 的认可)。

也欢迎提供有关 PowerShell 编码风格的提示。今天早餐后大约一个小时,我开始使用 PowerShell 的专业经验。

【问题讨论】:

    标签: windows powershell permissions


    【解决方案1】:

    尝试打印所有完整路径,看看有没有有趣的事情发生。

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

    如果一切都失败了,请使用Procmon 来查看文件系统到底发生了什么。

    【讨论】:

    • 已经打印了所有的完整路径。那里没有什么意外的。我们确实有一堆狂热和敌对的安全软件......谢谢。
    【解决方案2】:

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

    【讨论】:

    • 远程计算机上的文件夹属性对话框没有共享选项卡。请记住,无论如何,我可以将这些文件保存在 VS 或记事本中。
    • 可以通过网络共享保存吗?顺便说一句,检查与“inetpub”共享对应的文件夹的共享属性。
    • 是的,我可以通过网络共享保存它们。我最终只是编写了一个批处理文件,其中包含在命令行上明确列出的 .js 文件,以及输入和输出文件的完整网络共享路径。工作正常。该列表不会经常更改。 PowerShell 对于这项任务来说有点矫枉过正。似乎只是开始学习它的借口。我想知道 PS 是否可能对潜在的恶意脚本行为没有偏执的假设。
    • 我工作的每个员工的网络共享不允许写入具有某些扩展名(EXE、DLL、BAT 等)的文件。我不知道这是如何实现的,无论是 Windows 的功能还是某些 3rd派对产品。该错误消息没有帮助,因为它看起来像一个花园品种访问被拒绝消息,即使您可能通过 ACL 获得权限并且共享具有写入权限。我打算建议尝试编写一个具有不同扩展名的文件(例如 .TXT),但最后一条评论表明扩展名不太可能是问题所在。如果 PS 正在做某事,我会感到非常惊讶。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多