Powershell 如何将RUN.LNK固定到任务栏,缺少动词

Powershell 如何将RUN.LNK固定到任务栏,缺少动词,powershell,taskbar,Powershell,Taskbar,我发现很难将RUN.LNK固定到我的2012任务栏。我在这里和其他地方使用了各种pin示例,但运气不佳。我尝试了所有的RUN.LNK,但没有成功 这些都没有Pin或Unpin动词。 我很困惑,因为我可以手动从地铁磁砖上锁定。 我不知道这些是从哪里来的。 从磁贴执行打开文件的位置会使我找到RUN.LNK,但它没有用于固定的动词 我想钉运行,命令,服务,事件,和其他一些日常使用的图标。 我的脚本获取了大部分,但没有运行。LNK。解决方案是使用ActiveX对象和FileRun()方法创建一个新链接。

我发现很难将RUN.LNK固定到我的2012任务栏。我在这里和其他地方使用了各种pin示例,但运气不佳。我尝试了所有的RUN.LNK,但没有成功

这些都没有Pin或Unpin动词。 我很困惑,因为我可以手动从地铁磁砖上锁定。 我不知道这些是从哪里来的。 从磁贴执行打开文件的位置会使我找到RUN.LNK,但它没有用于固定的动词

我想钉运行,命令,服务,事件,和其他一些日常使用的图标。
我的脚本获取了大部分,但没有运行。LNK。

解决方案是使用ActiveX对象和FileRun()方法创建一个新链接。这可以通过Powershell或JScript完成。测试表明,由于Powershell启动延迟,JScript方法的速度要快得多

此代码在Powershell 3.0命令窗口中进行了复制/粘贴测试。为清楚起见,删除了所有错误检查等

1) 创建包含内容的RUN.JS文件 '新建ActiveXObject(“Shell.Application”).FileRun();'

2) 创建指向RUN.JS文件的RUN.LNK

3) 将新链接固定到任务栏

# -------------
# Create RUN.JS
# -------------
Out-File -Force -FilePath 'c:\windows\run.js' -InputObject 'new ActiveXObject("Shell.Application").FileRun();'


# -----------
# Create Link
# -----------
$objWsh                  = New-Object -ComObject Wscript.Shell
$objLnk                  = $objWsh.CreateShortcut('c:\windows\run.lnk')
$objLnk.Arguments        = 'c:\windows\run.js'
$objLnk.Description      = 'Open RUN Box'
$objLnk.IconLocation     = 'c:\windows\system32\shell32.dll,-25'
$objLnk.TargetPath       = 'c:\windows\system32\wscript.exe'
$objLnk.WorkingDirectory = 'c:\windows\'
$objLnk.Save()


# --------------
# Pin to Taskbar
# --------------
$objShell = New-Object -ComObject Shell.Application
$objItem  = $objShell.Namespace(0).Parsename('c:\windows\run.lnk')
$objVerb  = $objItem.Verbs() | ? { $_.Name -like '*Pin to Tas*' }
$objVerb.Doit()

# -------
# Cleanup
# -------
[Runtime.InteropServices.Marshal]::ReleaseComObject($objWsh)
[Runtime.InteropServices.Marshal]::ReleaseComObject($objShell)