您的位置:首页 > 运维架构 > Shell

用PowerShell把东西pin到开始菜单上

2015-06-22 21:42 567 查看
我相信大家肯定有过把一些文件或者快捷方式pin到我们的开始菜单里,这样可以很方便的操作,甚至pin到任务栏上。

今天我们要用PowerShell来模拟pin的方式把我们的文件pin到开始菜单里,废话不多说,先放上写的代码,稍后我们来一步步讲解下原理。

Function Pin-Start
{
Param
(
[String[]]$PinItems
)

$Shell = New-Object -ComObject Shell.Application
$Desktop = $Shell.NameSpace(0X0)

Foreach($item in $PinItems)
{
If(Test-Path -Path $item)
{
$itemLnk = $Desktop.ParseName($item)

$itemVerbs = $itemLnk.Verbs()
Foreach($itemVerb in $itemVerbs)
{
If($itemVerb.Name.Replace("&","") -match "Pin to Start")
{
$itemVerb.DoIt()
}
}
}
}
}

Pin-Start -PinItems "C:\XMLSample"
实现效果如下(由于我这里用的是Windows 7之后的操作系统,所以效果会有些不一样):



我们可以看到XMLSample文件已经被我们pin到开始菜单里了。

那么让我们看看代码是如何做到的,我们首先定义了一个COM对象。

$Shell = New-Object -ComObject Shell.Application
$Desktop = $Shell.NameSpace(0X0)
这里的0X0在该名称空间里代表我们的桌面右键菜单,因为在这里很好的声明了该桌面实例,我们才能很好的去模拟菜单的动作。

紧接着,我们解析出我们要pin的item的路径,然后我们用一个判断语句来模拟我们手动去执行pin到开始菜单的动作。

$itemLnk = $Desktop.ParseName($item)

$itemVerbs = $itemLnk.Verbs()
Foreach($itemVerb in $itemVerbs)
{
If($itemVerb.Name.Replace("&","") -match "Pin to Start")
{
<strong>$itemVerb.DoIt()</strong>
}
}
最后最重要的一个动作就是DoIt(),我们用这个方法去告诉系统我们确定要执行该操作,最后我们成功了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: