【发布时间】: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