当前位置:  开发笔记 > 编程语言 > 正文

不能将脚本名称识别为cmdlet,函数等; 也不能在简单的脚本上找到位置参数

如何解决《不能将脚本名称识别为cmdlet,函数等;也不能在简单的脚本上找到位置参数》经验,为你挑选了1个好方法。

我正在尝试做我的第一个脚本.简单地让PowerShell提取在记事本中输入的脚本并保存为标题为"test"的.ps1文件(也尝试过脚本,但知道名称与它无关):

Write-Host "Hello, World!"

在PowerShell我输入

& "C:\Scripts\test.ps1"

以及

./test.ps1

我只遇到这个:

./test.ps1.txt : The term './test.ps1.txt' is not recognized as the name of a
cmdlet, function, script file, or operable program. Check the spelling of the
name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ ./test.ps1.txt
+ ~~~~~~~~~~~~~~
    + CategoryInfo: ObjectNotFound: (./test.ps1.txt:String) [], CommandNotFoundException

尝试过使用PowerShell重命名文件

PS C:\Scripts> Rename-Item test.ps1.txt test.ps1

我曾经之间切换RemoteSignedUnrestricted,我曾尝试包括代码executionpolicy bypass(我道歉,我闭上了窗口,而无需编写一个向下).据我所知,一切都是最新的,我正在运行Windows 10,Windows PowerShell和常规Windows记事本.



1> PSGuy..:

首先,我强烈建议使用Windows PowerShell ISE编写脚本.它是免费的,并且提供了相当不错的控制台/编辑器体验,因为它是免费的(据说有更好的那些,但这对我来说总是很好).我使用Visual Studio作为其他东西,虽然它是一个EXPONENTIALLY更好的产品(应该是),但PowerShell ISE功能非常丰富.

接下来,如果您刚刚开始,您应该查看Don Jone的"在一个月的午餐中学习PowerShell 3.0"一书.它是最新版本的两个版本,然而,所有信息仍然相关,一旦你完成了这本书,你就可以自己很容易地寻求其他任何帮助.它涵盖了所有基础知识,是学习该语言的第一步.

现在,回答您的问题:PowerShell脚本通常具有.ps1文件扩展名.其他扩展通常用于Windows PowerShell利用的模块(.psm1)或其他帮助程序内容.对于大多数事情,你会坚持使用.ps1,当你达到开始需要其他扩展的程度时,我怀疑你在确定你需要哪些扩展时没有问题.

通常有两种方法调用PowerShell脚本.第一个是来自正常的命令提示符,并告诉PowerShell执行您的脚本.如下所示:

powershell.exe -File MyScript.ps1

我建议您使用一些其他参数,但使用情况取决于您的要求.这是我通常标记的内容:

powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File MyScript.ps1

这将告诉PowerShell进程忽略您已设置的任何PowerShell配置文件,如果您在配置文件脚本中有大量内容执行诸如读取控制台输入之类的操作(对于您当前的情况,我将假设您不,但你可能在将来).另一个是ExecutionPolicy one:RemoteSigned将告诉PowerShell基本上忽略从interwebs下载的任何内容,但允许来自网络内部的任何内容免费运行.可能不是最佳实践,但如果您可以相信您的脚本存储库是安全的,那么这不是一个可怕的策略.如果没有,那就去寻找比这更紧凑的东西(你可以通过在PowerShell提示符下键入"Get-Help about_Execution_Policies"来阅读执行政策,或者访问TechNet页面来了解它们 - 如果不相同,内容应该相似) .

第二种方法来自Windows PowerShell脚本.这实际上要容易得多.请注意,您必须将执行策略设置为允许脚本运行的内容,但此后,您将顺利进行.

. .\MyScript.ps1

这称为"点源"您的脚本.在Windows PowerShell中执行此操作的优点是,如果您有类似脚本的功能,则会将它们添加到当前范围(Get-Help about_Scopes),这意味着它们现在可用于您当前的会话.一个很好的例子是在您使用主脚本分发的脚本中定义一个名为"Test-DomainConnection"的函数:您点源与主要脚本一起分发的脚本(这通常在您分离"标准"时完成"PowerShell函数来自您的主脚本",然后使用主脚本中的函数.这种方法有利有弊,但似乎通常建议(可能会有一些社区扩展,无需手动管理).

有关其他信息,可以从Windows PowerShell中调用Get-Help about_Scripts.由于您使用的是Windows 10,因此在本地系统上提供帮助内容之前,可能需要从管理PowerShell窗口运行Update-Help.

如果您还有其他问题,请随时给我发消息:)我已经做了一段时间的PowerShell并且可以提供帮助.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有