Powershell小技巧之找出脚本中的错误

找出脚本之中的语法错误从来就不是轻松的事情,但是可以这样去筛选:

filter Test-SyntaxError
{
  $text = Get-Content -Path $_.FullName
  if ($text.Length -gt 0)
  {
   $err = $null
   $null = [System.Management.Automation.PSParser]::Tokenize($text, [ref] $err)
   if ($err) { $_ }
  }
}

这个脚本中,你可以快速扫描一个目录或整个电脑中的PS文件找出他们中的语法错误。

下面例子将找寻用户目录下所有PS脚本的语法错误:

代码如下:

PS> dir $home -Filter *.ps1 -Recurse -Exclude *.ps1xml | Test-SyntaxError

支持所有PS版本

时间: 2014-09-18

Powershell小技巧之用变量累积记录错误

当你使用GC查询文件时,当你没有足够的权限你可能会错过不少错误.你可以使用"–ErrorAction SilentlyContinue"忽略这些错误. 有一个不错的方法来获取这些错误. 我们在Windows目录中查询所有PS脚本文件,将它的文件保存在$PSScripts,同时将错误日志记录在变量ErrorList中: 复制代码 代码如下: $PSScripts = Get-ChildItem -Path c:\windows -Filter *.ps1 -Recurse -ErrorA

PowerShell中查询错误编号信息的2个方法

有时候,一些本地命令,比如net.exe,在执行过程中,会返回数字编号形式的错误信息.很郁闷的是,我们不知道这些数字代表什么意思.以前,我们可以使用如下的方式去获取数字代表的信息: 复制代码 代码如下: PS> net helpmsg 3534 The service did not report an error. PS> net helpmsg 1 Incorrect function. PS> net helpmsg 4323 The transport cannot access

浅谈PowerShell 捕获错误

之前的文章我们演示了如何使用 Windows PowerShell 构建相当高级的清单工具.我创建的工具提供了多个有关输出的选项,这应归功于外壳的内置功能和将函数应用于对象. 我所创建的函数有一个无可否认的弱点:它不能适度处理可能发生的任何错误(例如连接或权限问题).这正是我要在本期的 Windows PowerShell 专栏中加以解决的,我将介绍 Windows PowerShell 所提供的错误处理功能. 设置 Trap 在 Windows PowerShell 中,Trap 关键字定义一

PowerShell捕获错误的2种方法(异常捕获命令、错误变量)

在先前的技巧中你能观察到使用了 "-ErrorAction Stop"结合"异常捕获命令"能捕获一个Powershell命令的错误,可是使用了这种方式操作之后,脚本会在第一个错误发生后停止. 下面举例:使用Powershell递归扫描文件夹.它将不能完成捕获中间所有的异常(例如某些子文件夹是受访问保护的). 复制代码 代码如下: try{  Get-ChildItem -Path $env:windir -Filter *.ps1 -Recurse -ErrorAc

Powershell错误处理之what-if

自动化具有高度方便的特点,同时也可能会自动产生一些不可避免的错误.这也就是Powershell为什么会有一些专门来防止和处理危险的机制:这些机制会对接下来要执行的操作进行确认. 试运行:模拟操作 如果你想知道一个确定的命令会产生什么影响,你可以进行试运行.这时,Powershell不会执行任何对系统有影响的操作,只会告诉你如果没有模拟运行,可能产生什么影响和后果.通过-whatif 参数.事实上,许多cmdltes都支持试运行. #如果执行stop-process -name *a*会终止下面的

powershell玩转sqlite数据库详细介绍

脚本经常需要处理文本,有时候是行列整齐文本.那么powershell脚本处理行列文本有几种方法呢?一种是excel,另外的一些是?access?sqlite? sqlite是一个很小巧的,很方便嵌入到脚本语言中的,关系型数据库.它给powershell提供了一个免费的,处理行列整齐数据,存储数据,统计数据的极品神器. 只要你学会了它,上天入地皆可去得.而且以后学sql server,mysql,都类似,没有难度. 带着引号搜本文关键字: "^_^上天入地皆可去^_^" 发文初衷:世界上

Powershell 脚本数字签名实现方法

脚本很容易被冒名顶替或者更改,因为它们是由纯文本构成的.数字签名为脚本提供了更高的安全性,因为它能确定脚本和脚本的编辑者的唯一性,并且不能被更改.作为脚本的发布者,你能确定你的脚本没有被恶意篡改.即使专家也无能为力,因为这种机制是基于复杂逻辑的.幸运的是,在实际应用中,你不需要深究这些细节,只需要掌握Powershell脚本签名的机制和过程. 准备一个合适的证书 因为不能使用传统的纸质签名给Powershell脚本进行签名,你需要另一个工具"证书".证书就像一把私有并且安全的钥匙.证书

PowerShell管道入门必看篇(管道例子大全)

PowerShell的一个重中之重的功能就是管道(pipeline),本文从浅入深,一步一步详解管道的使用方法和例子,来看看有没有你所不知道的吧,如果全知道,恭喜你已经很厉害啦--适用于所有PowerShell应用小白与技术老鸟.另外欢迎各位技术大牛来补充讨论学习~ 1. 管道(pipeline)是什么 在Shell中一个重要的基本概念就是管道(pipeline),即在一组命令中,输出的命令结果成为下一个命令的输入参数.管道的概念与真实生活中的生产线比较相似:在不同的生产环节进行连续的再加工,如

用PowerShell删除N天前或指定日期(前后)创建(或修改)的文件

本来想用批处理的,想想算时间太麻烦了-- 立马安装PowerShell看帮助文档,里面有个例子: 以下命令查找 Program Files 文件夹中上次修改日期晚于 2005 年 10 月 1 日并且既不 小于 1 MB 也不大于 10 MB 的所有可执行文件(测试发现没法运行-_-!): Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object ` -FilterScript {($_.LastWr