如何使用 PowerShell 6.x 或更新版本确定 Linux 的发行版和版本?

3

如何在 PowerShell 6.x 或更新的版本中使用 PowerShell 脚本,在未知的 Linux 发行版上,以编程方式可靠地确定操作系统的发行版和版本号?

编辑: 也许可以像这个答案一样,再加上一些字符串解析?


2
如果可用,应使用lsb_release程序,否则使用/etc/os-release的内容。如何在PowerShell中执行此操作超出了我的能力范围。请注意,版本号不一定是数字,例如Debian测试版和不稳定版。 - bk2204
1
什么Linux发行版?如果使用LSB(Linux标准基础),则可以在PowerShell中运行bash,使用“bash -c“lsb_release -a””。否则,您可以运行“bash -c“cat /etc/*-release””。 - RoadRunner
2个回答

0

这将获取操作系统的发行版和版本号。

$release = Invoke-Expression "(lsb_release -ds || cat /etc/*release || uname -om) 2>/dev/null | head -n1"

$release 将包含类似于 Ubuntu 18.04.5 LTSCentOS Linux release 7.9.2009 (Core) 的内容。

如果您和我一样只需要发行版,则可以使用正则表达式捕获。

$release | grep -Po '^[^\s]+'

$release 将包含类似于 UbuntuCentOS 的内容。


0

我也需要在powershell脚本中执行此操作。我使用以下解决方案:

$distribution = Invoke-Expression "lsb_release -cs"

这将使$distribution包含以下值,例如:
bionic

你可以对版本执行相同的操作:

$version = Invoke-Expression "lsb_release -rs"

这将使$version包含以下值,例如:
18.04

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接