贴主,23 年本科毕业生,现在杭州传统互联网的公司实习,C#/WinForm 开发,先学,之后精进 ,考虑转其他的路线;(介绍只是 想表明 ,自己 刚进入行业没多久 ) 但是,自己自学 PowerShell ,管道、文件、WMI 等部分都学习涉猎; 理论部分都学完 2 遍,都能理解,但是没有以模块化脚本编写过
我个人是在 Windows 端使用,23 年 9 月会 使用 Linux 和黑苹果,所以 ,不受系统的限制 个人目前 是 借助 CodeWars 这个刷题网站来练习 PowerShell 脚本编写;感觉 和用 C#编写方法函数差不多
现在学习有些吃力,想通过 脚本竞赛、编程挑战网站、外包运维需求等 方式,上手实践练习一番 ; 所以,我想请教一下 通过业务场景或者 需求 来驱动 练习 PowerShell 的方式有哪些? 个人知道 Windows 运维 多少需要学一下 PowerShell 的; 如有** 路过的运维师,可否指点一下 PowerShell 的学习,可以的话,真心感谢** pS:PowerShell 传教士的群,我加入,确实吸收不错的内容;
1
sinnosong1 2023-01-11 09:31:23 +08:00
群号是啥,我也要抽空学学
|
2
DTCPSS 2023-01-11 09:33:23 +08:00
PowerShell 给我一种 Bash + 生态没那么好的 Python 的感觉(动态强类型,比 C# 少打几个字),做的事和 Linux Shell 脚本差不多(自动化,CI/CD ),做严肃的需求不会用
想练手就和学 Linux Shell 脚本那样,自动化手头的工作 |
3
sinnosong1 2023-01-11 09:41:07 +08:00
@DTCPSS Get-Location 和 pwd 你选择那个?语义化的好处太多了
|
4
dexterzzz 2023-01-11 09:49:13 +08:00
|
5
hertzry 2023-01-11 09:52:43 +08:00
@sinnosong1 pwd(print work directory)
|
6
sinnosong1 2023-01-11 10:04:11 +08:00
@hertzry 你不说我还真的不知道,
|
7
nuII 2023-01-11 10:27:26 +08:00 1
在 windows 平台下,powershell 是系统内置的,而且能直接调用 c#类,python 还要安装,实现的大部分功能最终也是调 c#基础类来实现的,都是面相对象的解释型语言,用 powershell 当然是最好的选择。
在 linux/macos 下,powershell 也有跨平台版本,对比大部分的 shell ,它是面相对象的,你 pwd 之后想要获取父目录还需要通过管道,powershell 或者 python 直接有内置方法直接调用就可以了,规模化的脚本里,这些优势能大大减少你的心智负担。和 python 比的话,处理速度或者软件大小都半斤八两,比较明显的优势在于 powershell 兼容并且能直接运行 linux 内置命令,python 里运行 curl 你得用 popen ,powershell 里你直接输入 curl 就可以。 所以个人用下来,最大的几个场景是 windows 下对于系统相关的自动化操作调用,文档全面,几乎可以用 powershell 快捷的实现绝大部分功能。如果是跨平台,那也是想要用 powershell 的面相对象特性,更方便的处理属性,又要兼顾 unix like 系统下的二进制程序快速调用。要是需要跨平台的兼容性,那无疑 python 是最佳选择,因为它几乎都是用自带的解释器和自有库来实现的,无关平台。 |
8
rp722 2023-01-11 10:40:34 +08:00
楼主 也想加群,学习下
|
9
webcape233 2023-01-11 12:36:26 +08:00 via iPhone
插一句获取父目录 dirname 函数
|
10
Tumblr 2023-01-11 13:33:06 +08:00
传教士在 PowerShell 传导上确实很值得肯定,不过性格上太邪教了。他在本站也有一些帖子: https://www.v2ex.com/member/ps1aniuge
|
11
h0099 2023-01-11 13:52:25 +08:00
#3 @sinnosong1 猜猜 Select-Object 是什么语义
|
12
SpecterShell 2023-01-11 14:12:40 +08:00 1
感觉 PowerShell Gallery 的活跃度不是很高,用过的不少包很久都没有更新了,但又不是不能用。
不过如果 PowerShell 模块不够用,还可以从 nuget.org 上下载 DLL 然后直接导入(实际上很多 PowerShell 模块就是 Nuget 包的 wrapper ),实在不行还可以调用 CIM/WMI 、ComObject 和二进制。 |