我的团队构建了一个可在 Windows、Mac 和 Linux 上运行的内部应用程序。
该应用程序包含一个bin
带有该应用程序启动脚本的目录。
bin
startup.sh (for linux/mac)
startup.cmd (for windows)
我的团队发现维护老式的 CMD 代码很繁琐,这是有原因的。我想让我们的团队使用 powershell 而不是 cmd。
bin
startup.sh
startup.ps1
然而,我对此犹豫不决,因为我没有看到太多其他软件应用程序像这样打包它们的东西。
是因为ps1
安全问题而必须允许 ps1 文件可执行吗?为什么不经常使用 powershell 来实现这个目的?
答案1
Why isn't powershell used for this purpose more often?
在您的情况下,“该目的”意味着需要为“跨平台应用程序”提供安装程序,例如 java、python 等应用程序。
这个问题无法直接回答,但我最好的猜测是,当一个团队构建“跨平台”解决方案时,大多数团队成员都是 Linux/Unix 人员,他们不喜欢微软,甚至可能不喜欢苹果。
问题是,当涉及到客户端的大型安装(企业)时,由于“活动目录”的存在,microsoft/windows 是唯一的选择。
My team finds maintaining the old-school CMD code tedious, for good reason. I'd like to move our team to powershell instead of cmd.
这个“好理由”只是意味着并非所有团队成员都是“Windows 批处理语言”专家 - 但对于 shell 脚本,他们还行 - 这两种语言的维护都很繁琐。他们也可能抱怨 shell 脚本,并让你考虑改用 python。
Powershell 是一种脚本语言,可与 Java 的 Scala 相媲美。只有具备编程技能的管理员才能使用 powershell,但另一方面,具备管理技能的程序员已经使用 csharp。我认为这就是 powershell 很少使用的原因
“安装”任务总是需要对操作系统有非常深入的了解。为了更好地集成到 Windows,我的建议是让 2 名团队成员学习一些微软课程:MCSE 或 MCSA。
最后但并非最不重要的一点是,从我的个人经验来看,从 .bat 更改为 .ps1 的唯一问题是您需要注意执行策略和签名。在大型企业中,您需要请求更改 Active Directory 中的默认权限策略,这可能需要数月时间。批处理始终有效。
[一个非常突出的相关示例是官方“mongodb”安装程序中的“compass”应用程序。在操作系统 <2012(例如 win7)上,它会挂起,因为默认的 ps1 执行策略是“不运行任何内容”]