在cmd中将Powershell脚本作为自定义命令运行

时间:2018-07-07 12:26:47

标签: windows powershell cmd

如何从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文件的链接。但是,即使重新启动也无法正常工作。

2 个答案:

答案 0 :(得分:0)

如果要在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"    
}

因此,您具有相同的命令,但在各自的环境中执行。

答案 1 :(得分:0)

  

我添加了一个新的系统环境变量,并带有指向我的ps1文件的链接。

在PowerShell的 之外,其脚本(*.ps1)在设计上 not 不可直接执行(与批处理文件(*.cmd,{{1 }}),因此如果您想从*.bat调用*.ps1

来使用$env:PATH脚本是不够的。

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

powershell.exe中列出的文件夹之一中:

  • 创建具有以下内容的批处理文件$env:PATH

    CF.cmd
  • @powershell.exe -NoProfile -File "%~dp0CreateFile.ps1" %* 复制到相同的文件夹,但是删除功能包装器,以便调用脚本直接调用功能。即,使其内容如下:

    CreateFile.ps1

然后,您将可以同时从param($FileName) New-Item -Name $FileName -ItemType File 和PowerShell调用CFCF.cmd)。 但是,在PowerShell内部,直接调用cmd.exeCreateFile)效率更高。