基本上,我知道我可以通过我的控制面板并修改路径变量.但是,我想知道是否有办法通过批量编程包含一个临时路径?这样它只在批处理文件执行期间使用.我不想让人们进入并修改他们的路径变量只是为了使用我的批处理文件.
我可以运行这个罚款:
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
start-process $msbuild -wait
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码(下面)时,我收到一个错误:
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /v:q /nologo"
start-process $msbuild -wait
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用start-process将参数传递给MSBuild?我愿意不使用启动过程,我使用它的唯一原因是我需要将"命令"作为变量.
当我
在一行上有
C:\ WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe/v:q/nologo
时,如何在Powershell中处理它?
我应该使用某种eval()类型的函数吗?
我们可以使用这里setx讨论的.
setx PATH "%PATH%;C:\Something\bin"
Run Code Online (Sandbox Code Playgroud)
但是这个命令只能更改为用户PATH变量而不是系统变量.
我们如何制定类似的系统范围命令?

我是Powershell的新手,并没有太多的编程背景,只是试图将它用于软件包装.无论如何,我发现了带-Wait参数的start-process命令,它适用于大多数事情.我注意到的是,它不仅等待你指定的进程,它等待任何子进程,即使在主进程不再运行之后.通常这很好,但我有一个奇怪的情况.我正在使用start-process运行复杂的Oracle批处理文件.批处理文件最终运行setup.exe,这是我真正想要等待的,但是其他进程也会产生永不停止.因此,如果我使用-wait参数,即使setup.exe不再运行,脚本也不会停止.我发现的最接近的是使用这个:
saps -FilePath "Path\config.bat" -ArgumentList "arguments"
Start-Sleep -s 10
Wait-Process -Name "setup"
Run Code Online (Sandbox Code Playgroud)
这有效,但我认为没有使用超时命令会有更好的方法.有任何想法吗?