gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:11:35 25 4
gpt4 key购买 nike

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

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 acmdlet, function, script file, or operable program. Check the spelling of thename, 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

Have tried renaming the file within PowerShell with

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

我已经在 RemoteSigned 之间切换了和 Unrestricted , 我试过一个包含 executionpolicy bypass 的代码(我很抱歉,我没有写下那个就关上了 window )。据我所知,一切都是最新的,我运行的是 Windows 10、Windows PowerShell 和常规的 Windows 记事本。

最佳答案

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

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

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

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

powershell.exe -File MyScript.ps1

我建议您使用一些其他参数,但使用情况取决于您的要求。这是我通常标记的内容:
powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File MyScript.ps1

这将告诉 PowerShell 进程忽略您已设置的任何 PowerShell 配置文件,如果您的配置文件脚本中有一堆执行读取控制台输入之类的内容(对于您当前的情况,我将假设您不,但你可能在 future )。另一个是 ExecutionPolicy 一:RemoteSigned 将告诉 PowerShell 基本上忽略从 Internet 下载的任何内容,但允许任何源自网络内部的内容免费运行。可能不是最佳实践,但如果您可以相信您的脚本存储库是安全的,这不是一个可怕的策略。如果不是,则选择比这更严格的内容(您可以通过在 PowerShell 提示中键入“Get-Help about_Execution_Policies”或访问有关它们的 TechNet 页面来阅读执行策略——如果不相同,内容应该相似) .

第二种方式来自 Windows PowerShell 脚本内部。这实际上要容易得多。请注意,您必须将执行策略设置为允许脚本运行的内容,但此后,您将一帆风顺。
. .\MyScript.ps1

这称为“点源”脚本。在 Windows PowerShell 中执行此操作的优点是,如果您有类似充满函数的脚本之类的东西,它们会被添加到当前范围 (Get-Help about_Scopes),这意味着它们现在在您的当前 session 中可用。一个很好的例子是在与主脚本一起分发的脚本中定义一个名为“Test-DomainConnection”的函数:您可以点源与主脚本一起分发的脚本(这通常在您将“标准"来自主脚本的 PowerShell 函数),然后使用主脚本中的函数。这种方法有优点也有缺点,但它似乎是普遍推荐的(可能有一些社区扩展可以消除手动管理的需要)。

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

如果您有任何其他问题,请随时给我发消息 :) 我已经使用 PowerShell 一段时间了,也许可以提供帮助。

关于windows - 无法将脚本名称识别为 cmdlet、函数等;也不能在简单的脚本上找到位置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34148182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com