Powershell从注册表中查询默认MAPI客户端的例子

当你通过类似Mailto:链接发送邮件,此时邮件客户端就是MAPI客户端。如果要找出到这个MAPI客户端在哪里,这里有个函数能从注册表中获得该信息。


functionGet-MAPIClient
{
    functionRemove-Argument
    {
      param
      (
        $CommandLine
      )

      $divider=''if ($CommandLine.StartsWith('"'))
      {
        $divider='"'$CommandLine=$CommandLine.SubString(1)
      }

      $CommandLine.Split($divider)[0]
    }

  $path='Registry::HKEY_CLASSES_ROOTmailtoshellopencommand'# create new object to return values
$returnValue=1|Select-Object-PropertyHasMapiClient,Path,MailTo$returnValue.hasMAPIClient=Test-Path-Path$pathif ($returnValue.hasMAPIClient)
  {
    $values=Get-ItemProperty-Path$path$returnValue.MailTo=$values.'(default)'$returnValue.Path=Remove-Argument$returnValue.MailToif ((Test-Path-Path$returnValue.Path) -eq$false)
    {
      $returnValue.hasMAPIClient=$true
    }
  }

   
  $returnValue
}

Get-MAPIClient

执行后的结果类似:



举一反三,同样也可以修改代码查询其它类型的默认客户端。