【问题标题】:PowerShell Unzip Access DeniedPowerShell 解压缩访问被拒绝
【发布时间】:2017-05-05 12:40:41
【问题描述】:

我有一个 PowerShell 脚本,它应该解压缩目录中的一些文件,但是当我运行它时会抛出这个错误:

Exception calling "ExtractToDirectory" with "2" argument(s): "Access to the path 
'E:\SubFolder\SubFolder2\SubFolder3' is denied."
At line:7 char:5
+     [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, "E:\SubFolder\Sub ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : UnauthorizedAccessException

我已经完全控制了路径中的每个单独的文件夹并以管理员身份运行(只是为了测试),但它仍然会引发错误。

这是我的代码

Add-Type -AssemblyName System.IO.Compression.FileSystem

function Unzip
{
    param([string]$zipfile)

    [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, "E:\SubFolder\SubFolder2\SubFolder3")

}

$Files = get-childitem "E:\SubFolder\SubFolder2\SubFolder3"

foreach ( $i in $files ) 
{
    Unzip "SubFolder\SubFolder2\SubFolder3\$i" 
}

有人可以为我指明正确的方向以使其正常工作吗?

【问题讨论】:

  • 我无法复制错误,但可以尝试在Get-ChildItem 中添加Where 子句:get-childitem "E:\SubFolder\SubFolder2\SubFolder3" | Where { $_.Extension -eq ".zip" }
  • 成功了。在下面发布您的答案,我会接受。谢谢!

标签: powershell user-accounts


【解决方案1】:

Get-ChildItem 中添加Where

Get-ChildItem "E:\SubFolder\SubFolder2\SubFolder3" | Where { $_.Extension -eq ".zip" }

我还建议你在调用 Unzip 函数时将参数更改为

Unzip $i.FullName

【讨论】:

  • Get-ChildItem "E:\SubFolder\SubFolder2\SubFolder3\*.zip" 也可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 2017-10-25
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
相关资源
最近更新 更多