9赞
697
当前位置:  开发笔记 > 编程语言 > 正文

如何将不同的Powershell宏合并为一个?

如何解决《如何将不同的Powershell宏合并为一个?》经验,为你挑选了1个好方法。

由于.NET Core已经出局,我一直在使用越来越多的命令行作为工作方式,一般来说我使用了很多PowerShell.

虽然Visual Studio Code非常符合命令行,但对于它的大哥来说却不能说是相同的.

为了改善这种情况,我在$ PROFILE文件中添加了以下内容.

function Execute-VisualStudioAsAdmin
{
    if ($args.Count -gt 0)
    {
        Start-Process "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe" $args -Verb RunAs
    }
    else
    {
        Start-Process "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe" -Verb RunAs
    }
}

Set-Alias vsa Execute-VisualStudioAsAdmin -Option ReadOnly

Set-Alias vs "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe" -Option ReadOnly

现在我能做到

PS> vs

PS> vsa

PS> vs .\Solution.sln

PS> vsa .\Solution.sln

一切都按预期工作,但它不如我想的那么好.也许我正在考虑它,但我想知道是否有办法创建一个更好的功能,并通过传递不同的参数使用它的两个别名.

提前致谢!



1> marsze..:

你想要的是这个:

function Start-VisualStudio {
    [CmdletBinding()]
    [Alias("vs")]
    param(
        [Parameter()]
        [switch]$AsAdmin,
        [Parameter(
            Mandatory = $false,
            ValueFromRemainingArguments = $true
        )]
        [string[]]$ArgumentList
    )
    process {
        $parameters = @{
            FilePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe"
        } 
        if ($AsAdmin.ToBool()) {
            $parameters["Verb"] = "RunAs"
        }
        # Allow no null or empty arrays or values
        $ArgumentList  = @($ArgumentList | where {"$_" -ne ""})
        if ($ArgumentList.Count -gt 0) {
            $parameters["ArgumentList"] = $ArgumentList 
        }
        Start-Process @parameters
    }
}

例子:

vs
vs .\Solution.sln
vs .\Solution.sln -AsAdmin

说明:

[CmdletBinding()]使函数像编译的cmdlet一样工作.=> MS Docs

[Alias()]允许您在函数内定义别名.=> MS Docs

ValueFromRemainingArguments从所有不是的参数中创建一个数组-AsAdmin.=> MS Docs

@parameters被称为"泼溅".=> MS Docs

推荐阅读
devbox
如痴如醉as_961
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4