Powershell 术语';nmake';不被承认

Powershell 术语';nmake';不被承认,powershell,visual-studio-2017,nmake,Powershell,Visual Studio 2017,Nmake,我做错了什么,但我不知道是什么。我有一个PowerShell脚本,其中有一个变量如下: $VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" $VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliar

我做错了什么,但我不知道是什么。我有一个PowerShell脚本,其中有一个变量如下:

$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
& "$($VCVARSALLBAT)" x86_amd64
nmake
现在,在这个脚本中,我想调用这个
vcvvarsall.bat
执行以下操作:

& "$($VCVARSALLBAT)" x86_amd64
从我看到的输出来看,它运行了。调用
vcvarsall.bat
后,我调用
nmake

即,我的脚本如下所示:

$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
& "$($VCVARSALLBAT)" x86_amd64
nmake
我收到以下错误消息:

nmake : The term 'nmake' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At ...:214 char:1 + nmake + ~~~~~ + CategoryInfo : ObjectNotFound: (nmake:String) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : CommandNotFoundException
如果
nmake
是一个程序,请尝试
nmake.exe
nmake.exe
必须在您的路径中才能运行。如果不是,您可以(a)指定可执行文件的完整路径(b)或将可执行文件添加到您的路径。通过从Powershell或CMD提示符调用
where.exe nmake
,可以查看可执行文件是否在您的路径中

添加到答案中

下面是.exe的作用

如果您在CMD中找到某些内容,但在Powershell中找不到,我将验证您的路径是否匹配:

如果给定的程序在您的路径中,
where.exe
将找到它,即使在Powershell中也是如此

在最初的帖子中,您得到的是标准的“我找不到您的命令”。Powershell的例外情况:

如果确实要测试是否可以从Powershell调用exe,请显式调用它:

'C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86\nmake.exe'


如果这样做有效,并且您想通过程序名调用它,请仔细检查您的路径。

如果
nmake
是一个程序,请尝试
nmake.exe
nmake.exe
必须在您的路径中才能运行。如果不是,您可以(a)指定可执行文件的完整路径(b)或将可执行文件添加到您的路径。通过从Powershell或CMD提示符调用
where.exe nmake
,可以查看可执行文件是否在您的路径中

添加到答案中

下面是.exe的作用

如果您在CMD中找到某些内容,但在Powershell中找不到,我将验证您的路径是否匹配:

如果给定的程序在您的路径中,
where.exe
将找到它,即使在Powershell中也是如此

在最初的帖子中,您得到的是标准的“我找不到您的命令”。Powershell的例外情况:

如果确实要测试是否可以从Powershell调用exe,请显式调用它:

'C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86\nmake.exe'


如果这样做有效,并且您想通过程序名调用它,请仔细检查您的路径。

我尝试了
nmake.exe
,但仍然收到相同的错误。在Powershell中调用
&“$($VCVARSALLBAT)”x86_amd64
(在我的例子中)应该将路径设置为
nmake.exe
,但Powershell不会识别它。是否使用
where.exe
查看路径中是否有
nmake.exe
?如果批处理文件的目的是填充环境变量,那你就不能从PowerShell运行它了。(这是因为PowerShell使用
cmd.exe
执行脚本,但当
cmd.exe
终止时,变量将被释放。)有关解决此问题的PowerShell函数,请参阅“重复回答”链接。Visual Studio附带了多个此类批处理文件。您不能直接在PowerShell中执行它们,而让环境变量保持不变。我写的函数(问题评论中的链接)就是围绕这个限制工作的。我想你可能误解了。简单地将
nmake.exe
目录添加到
路径
变量不会有帮助,因为VS批处理脚本设置了一组其他相关的环境变量,这些变量都必须为命令行生成工作而设置。我尝试了
nmake.exe
,但仍然得到相同的错误。在Powershell中调用
&“$($VCVARSALLBAT)”x86_amd64
(在我的例子中)应该将路径设置为
nmake.exe
,但Powershell不会识别它。是否使用
where.exe
查看路径中是否有
nmake.exe
?如果批处理文件的目的是填充环境变量,那你就不能从PowerShell运行它了。(这是因为PowerShell使用
cmd.exe
执行脚本,但当
cmd.exe
终止时,变量将被释放。)有关解决此问题的PowerShell函数,请参阅“重复回答”链接。Visual Studio附带了多个此类批处理文件。您不能直接在PowerShell中执行它们,而让环境变量保持不变。我写的函数(问题评论中的链接)就是围绕这个限制工作的。我想你可能误解了。简单地将
nmake.exe
目录添加到
Path
变量不会有任何帮助,因为VS批处理脚本设置了一组其他相关的环境变量,这些变量都必须为命令行生成工作而设置。您是在运行x64 PowerShell还是x86?我猜您要运行32位时运行的是64位。您是运行x64 PowerShell还是x86?我的猜测是,当您想要运行32位时,您正在运行64位。