【问题标题】:Run powershell script as custom command inside cmd在 cmd 中将 powershell 脚本作为自定义命令运行
【发布时间】:2018-12-15 19:41:11
【问题描述】:

如何从 cmd 或 powershell 将 PowerShell 脚本作为自定义命令运行。

例如我的脚本(CreateFile.ps1):

function CreateFile ($fileName) {
    New-Item -Name $fileName -ItemType "file"    
}

CreateFile($args[0])

我想在 cmd\powershell 中使用自定义命令(此处为“CF”)中的脚本:

C:\some folder> CF testfile.txt

我添加了一个新的系统环境变量,其中包含指向我的 ps1 文件的链接。但它不会工作,即使在重新启动后。

【问题讨论】:

    标签: windows powershell cmd


    【解决方案1】:

    如果你想在 PowerShell 和 cmd 中使用“CF 文件名”,我建议你在 cmd 中使用放置在路径某处的批处理文件:

    :: CF.cmd create file %1 with 0 length
    @Type Nul >"%~1"
    

    并在您的一个 PowerShell 配置文件中添加一个函数 $PROFILE | Format-List -Force

    function CF ($fileName) {
        New-Item -Name $fileName -ItemType "file"    
    }
    

    所以你有相同的命令,但在各自的环境中执行。

    【讨论】:

      【解决方案2】:

      我添加了一个新的系统环境变量,其中包含指向我的 ps1 文件的链接。

      PowerShell 之外,它的脚本 (*.ps1) 在设计上不能 直接执行(不像批处理文件(*.cmd*.bat),所以如果您想从cmd.exe 调用它们,则通过$env:PATH 提供的*.ps1 脚本是不够的

      但是,您可以编写一个简单的辅助包装批处理文件,通过powershell.exe 显式调用您的脚本:

      $env:PATH 中列出的文件夹之一中:

      • 使用以下内容创建批处理文件CF.cmd

        @powershell.exe -NoProfile -File "%~dp0CreateFile.ps1" %*
        
      • CreateFile.ps1 复制到同一文件夹,但删除函数包装器,以便调用脚本直接调用该功能;即,使其内容如下:

        param($FileName)
        
        New-Item -Name $FileName -ItemType File
        

      然后,您将能够从 cmd.exe 和 PowerShell 调用 CF (CF.cmd)。 但是,在 PowerShell 中,直接调用 CreateFile (CreateFile.ps1) 效率更高。

      【讨论】:

        猜你喜欢
        • 2021-09-13
        • 1970-01-01
        • 1970-01-01
        • 2014-09-16
        • 2017-10-04
        • 2022-11-27
        • 2018-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多