【发布时间】:2021-10-20 09:02:16
【问题描述】:
我是 PowerShell 的新手,所以我需要帮助来优化我的代码。 我试图让它尽可能短。 如果将其粘贴到 PS Prompt 中:
"(USR PATH):" > env.txt;
[Environment]::GetEnvironmentVariable('Path','User').Split(';') >> env.txt;
[Environment]::NewLine >> env.txt;
"(SYS PATH):" >> env.txt;
[Environment]::GetEnvironmentVariable('Path','Machine').Split(';') >> env.txt;
[Environment]::NewLine >> env.txt
它将分开 'User' 和 'System' 路径(环境变量) 到当前目录中的文本文件。 有什么想法可以让它更短?
实际上,我喜欢单行变体,但不幸的是它会 将 'User' 和 'System' 路径变量连接在一起。
$env:path -split ';'
注意:我已经尝试用cmd.exe解决这个问题。
path > env.txt
简单而简短的命令,但它输出单个 Path 字符串而没有任何拆分 (;) 并且在 User Path 和 System Path 之间没有区别。为什么?因为cmd.exe 是非常古老的工具。实际上 PATH 最初是一个单一的变量,可以追溯到 DOS 时代。但是,一旦 Windows 成为多用户操作系统,就需要为用户提供自己的 PATH 设置以及系统范围的设置。因此,将用户变量与系统变量分开的唯一方法是使用注册表项,这太复杂了。
现在我正在尝试使用 PowerShell v1.0 解决这个问题。看起来这是一个非常旧的版本。所以 backtick (重音)和 pipeline 运算符不适合我。我什至跟不上 每行 68 个字符。例如,由于某些原因,此换行代码不起作用:
[Environment]::GetEnvironmentVariable('Path','User').Split(';') `
>> env.txt;
[Environment]::NewLine >> env.txt;
还有很多重复的片段,比如>> env.txt,如果你先把输出保存在某个地方,可以优化。但我的知识不足以做到这一点。
【问题讨论】:
-
为什么一定要短?做你需要的不是更好吗? ;-) 我建议使用两个单独的文件或其他文件类型,如 CSV、XML 或 PSD1 ...
-
它必须简短,因为它做了一件微不足道的事情。 “短”是指 PS 代码而不是输出。确实,与 Microsoft 相比,Linux 做这些事情的风格非常简洁。
-
PowerShell 代码在设计上更加冗长且易于阅读,即使对于经验不足的编码人员也是如此。你真正想做的是什么?你如何处理文件
env.txt? -
@Olaf File 只是一种简单方便的环境检查方式。
-
目标/目的是什么?
Path变量的管理?
标签: powershell path environment-variables