我已经提出了电子申请,主要是为我的服务台同事提供的。
它的作用(上下文):
它提供了一个简单的GUI,它可以执行不同的“任务”。示例:
为此,我使用以下组合:
问题:
当我在“开发模式”中运行该应用程序时,该应用程序正在正常运行。但是,在用电子构建并打包后,NPM打包node-powershell
不再能找到.ps1
脚本了。
我想我已经确定了问题,但是我不知道该问题的解决方案是什么。
node-powershell
需要脚本路径和命令数组。
我已经这样设置了:
const p1 = require('path').resolve();
const scriptPath = require('path').join(p1, 'src/PowershellScripts/AddMailboxPermissions.ps1');
然后是ps.addCommand(scriptPath, commands);
(节点Powershell)
如前所述,这在Webpack服务器的开发模式下可以正常工作,但是在打包后运行时出现此错误:
找不到C:\ Users \ Huberdo \ Projekte \ Powershell-SAS-App \ Client \ builds \ basic-electron-react-boilerplate-win32-x64 \ src \ PowershellScripts \ GetRemoteMac.ps1。
原因是因为包装具有以下结构。 .ps1
文件现在具有以下路径:
C:\ Users \ Huberdo \ Projekte \ Powershell-SAS-App \ Client \ builds \ basic-electron-react-boilerplate-win32-x64 \ resources \ app \ src \ PowershellScripts
所以这是主要问题。我如何打包这种“正确的方式”,以便以后可以正常工作。
信息:
"dev": "webpack-dev-server --hot --host 0.0.0.0 --config=./webpack.dev.config.js",
"build": "webpack --config webpack.build.config.js",
"package": "webpack --config webpack.build.config.js",
我希望你们中的某人可以帮助我或指导我朝正确的方向发展。
可能的想法:
引用完全不同的路径,并使用gulp任务将ps1文件复制到另一个目录中吗?没用过。这可能是解决方案吗?如果是,如何最好地解决这个问题?
更新
当我从src
将C:\Users\Huberdo\Projekte\Powershell-SAS-App\Client\builds\basic-electron-react-boilerplate-win32-x64\resources\app
文件夹复制到根C:\Users\Huberdo\Projekte\Powershell-SAS-App\Client\builds\basic-electron-react-boilerplate-win32-x64
时,它又可以工作了。所以这主要是路径问题,我不知道如何解决。
最后但并非最不重要的直接链接到github上的项目:
https://github.com/dhuber666/Powershell-SAS-Tool
在这里我叫ps1
脚本:
!谢谢!
答案 0 :(得分:0)
我正在做类似的事情,但是我用于PowerShell脚本的方法是将它们创建为PowerShell模块。然后,您可以将它们放在有效的PSModule位置之一中,这样就可以了。您只需编写一个powershell脚本即可将模块复制到正确的位置,然后将软件包复制到桌面或任何需要的位置。
一个非常简单的模块可能是这样的:
在 C:\ Program Files \ WindowsPowerShell \ Modules 中,创建一个名为 MyModuleTest 的文件夹。在此文件夹中创建一个名为 MyModuleTest.psm1 的文件。在此PSM1文件中,创建一个函数,例如
function Invoke-MyModuleTest {
Write-host "This is My Module"
}
保存文件,打开Powershell控制台会话,然后如果运行Invoke-MyModuleTest,它将输出到控制台。
您可以阅读有关模块here
的更多信息您还可以找到一些更复杂的模块here
的漂亮示例。将脚本转换为模块后,您就可以像调用任何cmdlet一样调用它们了,我目前没有什么可以共享的。