Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试获取PowerShell脚本以运行nuget.exe命令_Powershell_Nuget - Fatal编程技术网

正在尝试获取PowerShell脚本以运行nuget.exe命令

正在尝试获取PowerShell脚本以运行nuget.exe命令,powershell,nuget,Powershell,Nuget,我正在尝试在PowerShell脚本中运行以下命令 nuget pack MyNuGetSpec.nuspec-版本1.2.3-alpha 当我有这个PS代码时,我得到一个错误 代码: 以及错误消息 NuGet正在将MyNuGetSpec.nuspec打包到a.nupkg。。。C:\Projects\Foo\NuGet 包规范\nuget.exe包MyNuGetSpec.nuspec-版本 1.2.3-alpha&:术语“C:\Projects\Foo\NuGet Package Specifi

我正在尝试在PowerShell脚本中运行以下命令

nuget pack MyNuGetSpec.nuspec-版本1.2.3-alpha

当我有这个PS代码时,我得到一个错误

代码:

以及错误消息

NuGet正在将MyNuGetSpec.nuspec打包到a.nupkg。。。C:\Projects\Foo\NuGet 包规范\nuget.exe包MyNuGetSpec.nuspec-版本 1.2.3-alpha&:术语“C:\Projects\Foo\NuGet Package Specifications\NuGet.exe pack MyNuGetSpec.nuspec-版本1.2.3-alpha” 无法识别为cmdlet、函数、脚本文件或的名称 可操作程序。检查名称的拼写或路径是否正确 包括,请验证路径是否正确,然后重试。在 C:\Projects\Foo\NuGet包规范\build.ps1:106字符:10 +&$exe + ~~~~ +CategoryInfo:ObjectNotFound:(C:\Projects\Foo…0.1.0-alpha:String)[],ParentContainerRorRecordException +FullyQualifiedErrorId:CommandNotFoundException


最后,我将.exe与
.nuspec
文件并列(在同一文件夹中)。

您需要将可执行文件名与参数分开:

$exe = $path + "nuget.exe"

&$exe pack $file -Version $version
轻微改动

 $path="c:\..."
 $file= "MyNuGetSpec.nuspec"
 $version= "0.1.0-alpha"
 Invoke-Expression "$($path)\nuget.exe pack $($file) -Version $($version)"

这应该使用适当的参数执行nuget.exe

这与@mickyBalladelli的答案有何不同?使用
&
时,参数按原样单独传递。在本例中使用
Invoke Expression
时,它将首先生成完整字符串,然后将该字符串作为powershell代码进行求值。
&
命令更安全,因为它只会扩展
$exe
。使用
Invoke Expression
时,如果
$file
有分号和第二个命令,则会出现问题。
$exe = $path + "nuget.exe"

&$exe pack $file -Version $version
 $path="c:\..."
 $file= "MyNuGetSpec.nuspec"
 $version= "0.1.0-alpha"
 Invoke-Expression "$($path)\nuget.exe pack $($file) -Version $($version)"