用windows擼代碼想找找mac和Linux的感覺(jué),命令行操作是必備的,不然感覺(jué)被束縛了手腳;還好現(xiàn)在有各種win終端工具,也有windows自己的PowerShell,又找回命令行隨心所欲的感覺(jué)。
對(duì)于像mac上Spotlight快速打開(kāi)應(yīng)用的工具,PowerShell也有自己的腳本模塊可以解決這一問(wèn)題。
PowerShell 腳本模塊
腳本模塊實(shí)質(zhì)上是以.psm1擴(kuò)展名保存的任何有效的PowerShell腳本。該擴(kuò)展允許PowerShell引擎在您的文件上使用許多規(guī)則和cmdlet。大多數(shù)這些功能都可以幫助您將代碼安裝在其他系統(tǒng)上,并管理范圍界定。您也可以使用模塊清單文件,它可以描述更復(fù)雜的安裝和解決方案。
打開(kāi)應(yīng)用
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
}
}
}
上面這塊腳本,可以直接貼到PowerShell回車(chē)執(zhí)行,然后你可以使用run wechat打開(kāi)你的微信,也可以run wechat, qq同時(shí)打開(kāi)QQ,如果匹配多個(gè)程序會(huì)讓你選擇。但是關(guān)閉終端后再次打開(kāi)臨時(shí)執(zhí)行環(huán)境就沒(méi)有了,我們需要將模塊保存隨時(shí)可用。
模塊路徑
可以參考官方詳細(xì)說(shuō)明:https://msdn.microsoft.com/en-us/library/dd878340(v=vs.85).aspx
大概就是需要將腳本模塊${name}.psm1保存到模塊管理指定目錄。
目錄需要在使用時(shí)創(chuàng)建:
PS C:\Users\luke> $paths = (dir Env:\PSModulePath).Value.Split(";")
PS C:\Users\luke> $paths
C:\Users\luke\Documents\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
判斷是否已創(chuàng)建:
PS C:\Users\luke> Test-Path -Path $paths[0]
False
返回False,則表示路徑未創(chuàng)建。創(chuàng)建路徑可使用文件瀏覽器、Cmd命令或者PowerShell命令。這里使用PowerShell命令如下:
New-Item -Path $paths[0] -ItemType directory -Force
最后一步,我們將run.psm1保存到C:\Users\luke\Documents\WindowsPowerShell\Modules\run\下就可以每次打開(kāi)PowerShell都能找到這個(gè)模塊。
PowerShell 腳本模塊可以有更多操作,感興趣可以閱讀文檔自己寫(xiě)模塊玩。