PowerShell 技能连载 - 发现高影响级别 cmdlet

适用于 PowerShell 所有版本

cmdlet 可以定义它们的影响力有多大。通常,那些会对系统造成不可恢复影响的 cmdlet 的“影响级别”设置为“高”。

当您运行这样一个 cmdlet 时,PowerShell 将会弹出一个确认对话框,防止您不小心误操作。确认对话框也能防止您在无人值守的情况下运行这些 cmdlet。

要查看 cmdlet 的“影响级别”为多高,可以用这段代码输出该信息:

Get-Command -CommandType Cmdlet |
  ForEach-Object {
    $type = $_.ImplementingType
    if ($type -ne $null)
    {
      $type.GetCustomAttributes($true) |
      Where-Object { $_.VerbName -ne $null } |
      Select-Object @{Name='Name';
      Expression={'{0}-{1}' -f $_.VerbName, $_.NounName}}, ConfirmImpact
    }
  } |
  Sort-Object ConfirmImpact -Descending

要只查看影响级别为“高”的 cmdlet,只需要加一个过滤器:

Get-Command -CommandType Cmdlet |
  ForEach-Object {
    $type = $_.ImplementingType
    if ($type -ne $null)
    {
      $type.GetCustomAttributes($true) |
      Where-Object { $_.VerbName -ne $null } |
      Select-Object @{Name='Name';
      Expression={'{0}-{1}' -f $_.VerbName, $_.NounName}}, ConfirmImpact
    }
  } |
  Sort-Object ConfirmImpact -Descending |
  Where-Object { $_.ConfirmImpact -eq 'High' }

要以无人值守的方式运行这些 cmdlet 并且不让自动提示框出现,请加上 -Confirm:$False 参数。

PowerShell 技能连载 - 发现高影响级别 cmdlet

http://blog.vichamp.com/2015/04/01/discovering-high-impact-cmdlets/

作者

吴波

发布于

2015-04-01

更新于

2022-07-06

许可协议

评论