我正在尝试做我的第一个脚本。只需让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
我已在RemoteSigned
和Unrestricted
之间切换,我尝试过包含executionpolicy bypass
的代码(我道歉,我关闭了窗口而没有写下那个)。据我所知,一切都是最新的,我正在运行Windows 10,Windows PowerShell和常规Windows记事本。
答案 0 :(得分:5)
首先,我强烈建议使用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并且可以提供帮助。