首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在linux中调用powershell函数

如何在linux中调用powershell函数
EN

Stack Overflow用户
提问于 2018-09-13 06:29:04
回答 3查看 1.6K关注 0票数 1

我在Linux上安装了PowerShell,并创建了一个如下所示的自定义函数,并将其另存为test.ps1,现在如何通过将值传递给$file$name来调用函数ttr

代码语言:javascript
复制
#!/usr/bin/env pwsh

function ttr {
    Param(
             $file,
             $name
         )
    Write-Host $file
    Write-Host $name
}
EN

回答 3

Stack Overflow用户

发布于 2018-09-13 13:18:46

我相信可能还有其他方法,但这个方法对我很有效

将以下文件保存为/tmp/testscript.ps1格式

代码语言:javascript
复制
#!/usr/bin/env pwsh
function New-ttr{

    Param(
             $file,
             $name
         )
    write-host $file
    write-host $name
}

创建了另一个类似下面的脚本,并保存在/tmp/callscript.ps1

代码语言:javascript
复制
#!/usr/bin/env pwsh                                                                                                                                                                                                
import-module /tmp/testscript.ps1     
New-ttr -file "Test call in PSCore" -name "Testing"

然后

代码语言:javascript
复制
chmod 777 callscript.ps1

./tmp/callscript.ps1
票数 1
EN

Stack Overflow用户

发布于 2018-09-13 06:45:39

要使powershell函数可以在powershell脚本之外访问,您必须运行该脚本,以便将所有变量或函数加载到其中。

为此,您需要将函数写为"global:ttr",然后运行脚本。变量要求您将它们编写为"$global:varname“。

之后,在当前shell的持续时间内,您将可以访问所述函数和变量。

票数 0
EN

Stack Overflow用户

发布于 2018-09-13 07:32:09

我刚刚在VSCode编辑器、两个终端和普通的默认PSCore终端上运行了你的post代码示例,它如预期的那样运行。

此外,如果是动词-名词,请记住PowerShell中正确的命名结构。所以你的函数应该是New-ttr。

代码语言:javascript
复制
#!/usr/bin/env pwsh

function New-ttr{
    Param(
             $file,
             $name
         )
    write-host $file
    write-host $name
} 

因此,我将代码保存为downloads文件夹中的test.ps1并使用…执行

代码语言:javascript
复制
~/downloads/test.ps1

..。从每个终端。在VSCode编辑器中运行只需选择文本...

代码语言:javascript
复制
    function New-ttr{
        Param(
                 $file,
                 $name
             )
        $file
        $name
    } 
    New-ttr -$file Somefilename -name somename

选择终端并运行选定的文本或运行活动文件。最后,不要使用Write-Host,除非你要给屏幕文本输出着色,或者其他需要的格式化条件。输出到屏幕是默认设置。

所以这个..。

代码语言:javascript
复制
write-host $file
write-host $name

。。还有这个..。

代码语言:javascript
复制
$file
$name

…也会做同样的事情。

Write-Host不是流水线友好的,它清除了缓冲区,所以强烈反对使用它。

如果要对屏幕输出使用write,请考虑使用Write-Output或其他Write-* cmdlet之一。

尽管我不确定为什么你要同时通过参数$file和$name,即使在这个测试中。我假设一个是路径,另一个是要查找的文件的名称。您只需在$file中传递文件的完整路径,然后使用$file.Name提取名称即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52304313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档