从网络文件夹执行PowerShell脚本

4
我正在使用TFS2017和本地VSTS构建机开发一个非常庞大的自动化构建系统,我的自定义任务主要是使用PowerShell编写。内联PowerShell任务仅处理500个字符左右,对于大多数任务来说太小了。目前我正在编辑我的PowerShell脚本,检查它,测试运行,读取日志以查找错误,进行更正,再次检查等等。这有点繁琐,我想知道是否有其他选项。我希望在构建过程开发期间避免每次更改脚本时都要检入。是否有像从网络位置执行我的PowerShell任务这样的选项?

试图“避免在脚本中检查每个更改”是不良实践,会让你陷入麻烦。最好使用正确的代码检入方式来正确处理,并在管道中引入自动化测试-以消除日志中的手动错误检查。 - Vince Bowdren
4个回答

1
您可以使用点号引用与UNC路径:

PS> . \\server\path\to\your\scriptmcscript.ps1

or use the invocation operator:

& \\server\path\to\your\scriptmcscript.ps1

1
你可以在PowerShell任务中指定UNC文件路径。
你还可以将脚本文件存储在服务器上(例如FTP),然后通过PowerShell或其他任务在构建期间将文件下载到工作目录中。
另一方面,有一个针对目标机器的PowerShell任务,可以在远程机器上执行PowerShell脚本。

谢谢!我从来不知道在PowerShell任务中可以指定文件路径。由于某些安全原因,从UNC路径执行对我没有起作用,但将脚本复制到构建机器上的本地目录,然后执行它就可以了。 - Helan

0

您可以使用Powershell任务的UNC路径来访问文件。 或者您可以在目标机器上使用Powershell运行它。

但是要注意您的选择。您必须记住,运行脚本的是构建/部署代理。因此,在您的企业网络中运行时一切都很好,因为您的代理可以看到您的UNC路径。

一旦您在网络之外的计算机上使用该代理,您将不得不考虑另一个解决方案,其中可能包括将您的powershell文件保存到像Git或TFVC这样的存储库中,然后将文件下载到您正在运行代理的本地计算机。


是的,在开发过程中只会使用UNC路径。当构建过程进入生产阶段时,所有PowerShell脚本都将被检入到TFVC并从那里执行。 - Helan
我建议您从一开始就使用TFVC的PowerShell脚本,以消除运行不同脚本和在不同环境中执行相同部署任务的风险。这仅仅是我的建议。 :) - Rodrigo Werlang

0

这是我唯一可行的方法,使用设置为绕过(仅限进程范围)的执行策略从 .batch 脚本中调用 PowerShell

-NonInteractive = 不提示确认
-NoProfile = 在系统上下文中运行

powershell.exe -NoProfile -ExecutionPolicy Bypass -NonInteractive -Command C:\Users\User\Script.ps1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接