【问题标题】:Access to Path is Denied PowershellPowershell 拒绝访问路径
【发布时间】:2014-12-18 16:03:33
【问题描述】:

现在我刚刚设置了我的环境变量,并试图将文件输出到 Temp 目录。每次我运行批处理文件时,虽然它说访问路径被拒绝,但下面是我的全部代码

Param(
    [Parameter(Mandatory=$true,
         ValueFromRemainingArguments=$true,
         HelpMessage="List of files to add to the package")]
[String] $File

)

Function CreateNugetPackage {
    Param(
        [String] $File
    )
    Process {
        $retCode = 0
        write-verbose "Getting ID, Version, and Filepath of $file..."
        $version = (Get-Item $File).VersionInfo.FileVersion
        $id = $file.Substring(0, $File.LastIndexof('.'))
        $filepath = Get-ChildItem "$File"
        $netVer = ildasm /text $File| findstr Metadata
        $netVerShort = $netVer.Substring(0, $netVer.IndexOf('.') + 1 +   $netVer.Substring($netVer.IndexOf('.') + 1).IndexOf('.'))
        $netVerConv = @{
        'v2.0' = "lib\net20";
        '// Metadata version: v2.0' = "lib\net20";
        'v3.0' = "lib\net30";
        'v3.5' = "lib\net35";
        'v4.0' = "lib\net40";
        'v4.5' = "lib\net45";
        }
        $target = $netVerConv.Get_Item($netVerShort)
        $OriginalFilename = (Get-Item $File).VersionInfo.OriginalFilename
        write-verbose "$id"
        write-verbose "$version"
        write-verbose "$filepath"
        write-verbose "$netVer"
        write-verbose "$netVerShort"
        write-verbose "$target"
        function CreateNewNuspec { 
            param ($File)
            $x=
           "<?xml version=""1.0""?>
            <package xmlns=""http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"">
            <metadata>
                <id>$id</id>
                <version>$version</version>
                <authors>CME</authors>
                <owners>CME</owners>
                <requireLicenseAcceptance>false</requireLicenseAcceptance>
                <description>$filepath</description>
            </metadata>
            <files>
                <file src=""$id.dll"" target=""$target""/>
            </files>
            </package>"
            return $x
        }
        CreateNewNuspec > $env:temp "$id-$version.xml"

        Return $retCode
    }
}

$retVal = CreateNugetPackage $File
exit $retVal
}

这不是最干净的代码,但这是我第一次在 powershell 中编码

【问题讨论】:

  • 这里使用的是同一个函数吗? stackoverflow.com/questions/27448560/…
  • 是的,如果有帮助,我可以发布整个代码
  • 是的,所以我们可以看到它是如何演变的。还要发布$env:TEMP 指向的内容,通常它只是您的临时文件夹。同时发布错误消息。
  • CreateNewNuspec &gt; $env:temp "$id-$version.xml" $id 和 $version 的值是多少?你也在写一个文件,不应该是CreateNewNuspec &gt; $env:temp+"\"+"$id-$version.xml"
  • "$id-$version.xml" 输出 "AjaxControlToolkit-3.5.50401.xml" 我尝试了 "CreateNewNuspec > $env:temp+"\"+"$id-$version.xml" " 但又被拒绝了

标签: powershell environment-variables


【解决方案1】:

好的,这要归功于 Micky Balladelli,感谢他的帮助!他建议

$env:temp+"\"+"$id-$version.xml"

但这没有用。起作用的是把它放在一个变量中,所以我做了一个变量来保存 Micky 的建议

$OutputFile = $env:temp+"\"+"$id-$version.xml"

在代码的底部我调用了函数

CreateNewNuspec > $OutputFile

这完全解决了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-11
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    相关资源
    最近更新 更多