比如打开QQ, 我只要执行run qq,
打开网易有道词典, run Youdao, run 有道, 或者run Youdao*, 通配符可以加也可以不加
传入的程序名称参数, 是软件安装目录所对应的文件名, 或者快捷方式名称
如果匹配到好几个程序, 会弹出一个图形化的选择框, 按方向键选择, 再按enter就能打开.
当然还能同时打开多个程序,
使用run qq, yodao 同时打开qq和有道, 注意qq和youdao之间有逗号, 这是数组的语法
run.psm1
function run () { param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [string[]]$name ) function exec ([string]$name) { $WshShell = New-Object -ComObject WScript.Shell $UserLnkFolder = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs" $MachineLnkFolder = "$env:ProgramData\Microsoft\Windows\Start Menu\Programs" $lnkList1 = Get-ChildItem -Path $UserLnkFolder -Filter *.lnk -Recurse $lnkList2 = Get-ChildItem -Path $MachineLnkFolder -Filter *.lnk -Recurse $lnkList = $lnkList1 + $lnkList2 $programPathList = @() $programNameList = @() foreach ($lnk in $lnkList) { $LnkFilePath = $Lnk.FullName $LnkShortcut = $WshShell.CreateShortcut($LnkFilePath) $LnkTargetPath = $LnkShortcut.TargetPath if (!([String]::IsNullOrEmpty($LnkTargetPath))) { if (Test-Path -Path $LnkTargetPath) { $CurrentProgramList = @() $CurrentProgramList += Get-Item $LnkTargetPath $CurrentProgramList += Get-Item $LnkFilePath if (!($name.Contains('*'))) { $name = "*$name*" } foreach ($program in $CurrentProgramList) { if ($program.name -like $name -and $program -notin $programNameList) { $programPathList += $LnkTargetPath $programNameList += $program.name } } } } } $programPathList = $programPathList | Sort-Object -Unique if ($programPathList -ne $null) { if ($programPathList -isnot [array]) { Invoke-Item $programPathList } else { $selectedFile = @($programPathList | Out-GridView -Title 'Choose a program' -PassThru) if ($selectedFile -ne $null) { Invoke-Item $selectedFile } } } else { Write-Output "The $name program dones't exist." } } if ($name -isnot [array]) { exec $name } else { foreach ($i in $name) { exec $i } } }
本文链接: https://www.pstips.net/start-program.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!