如何从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文件的链接。但是,即使重新启动也无法正常工作。
答案 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调用CF
(CF.cmd
)。
但是,在PowerShell内部,直接调用cmd.exe
(CreateFile
)效率更高。