PowerShell常见陷阱与实用技巧
1. Tab补全功能
在PowerShell ISE和控制台窗口中,很少有人依赖Tab补全功能,这既令人遗憾又令人惊讶。使用Tab补全功能有诸多好处:
- 避免命令或参数名拼写错误。
- 对于许多静态列表或易于查询的列表参数值,Tab补全(尤其是在v3及更高版本中)可以为你填充合法的参数值。
- 使长cmdlet名称更易于输入,无需记忆复杂的别名。
养成随时使用Tab补全的习惯,能确保你减少错误。
2. -Contains与-Like的区别
很多人会错误地认为 -contains 运算符用于检查进程名称是否包含特定字母,例如“notepad”,但实际上并非如此。正确的做法是使用 -like 运算符,它可以进行通配符字符串比较。
例如,若要停止所有记事本进程,使用Stop - Process - name * notepad *是更合适的做法。
那么 -contains(及其“伙伴” -notcontains)实际的作用是什么呢?它们类似于PowerShell v3中引入的 -in 和 -notin 运算符,用于检查对象集合中是否包含给定的单个对象。
当使用复杂对象而非简单值时,-contains 和 -in 会检查对象的每个属性以进行匹配。例如,进程对象的属性(如CPU和内存)会不断变化,若使用过时的进程对象进行 -contains 检查,可能会得到错误的结果。
因此,-in 和 -contains 运算符最适用于简单值或属性值不会不断变化的对象,而通配符字符串匹配应使用 -