Powershell实现编写和运行脚本(如何运行powershell脚本)一篇读懂

随心笔谈2年前发布 admin
196 0 0

文章摘要

嗯,用户给了一篇关于PowerShell脚本的文章,要求生成一个大约150字的简要总结。同时,关键词密度要控制在2%左右,总结要简明扼要,突出核心内容。 首先,我需要仔细阅读文章内容,抓住主要观点。文章主要讲PowerShell脚本是什么,如何创建、运行,以及执行策略的问题。关键词可能包括PowerShell、脚本、Powershell、Here-String、执行策略等。 文章提到PowerShell脚本类似于CMD脚本,可以通过文本编辑工具创建。还讨论了两种重定向的方法,一种是简单的,另一种用Here-String。接着,提到了在Notepad中编辑、保存,以及运行脚本时的注意事项,比如路径问题和执行策略的限制。 用户要求总结大约150字,关键词密度2%左右。我需要确保每个关键词出现不超过两次,避免过多堆砌。 接下来,我得组织内容。先介绍PowerShell脚本的基本概念,然后说明创建和运行的方法,包括遇到的问题和解决办法。最后,提到执行策略的设置及其对安全的影响。 可能还需要提到脚本的别名功能,让运行更方便。这样总结起来,结构清晰,涵盖主要点。 检查一下,确保所有重要信息都涵盖,并且语言简洁明了。关键词出现次数要控制好,避免超过限制。最后,确保总结流畅,突出核心内容。 现在,把这些点整合起来,确保在150字左右,符合用户的要求。 </think> PowerShell是一个运行在Windows上的命令解释器,允许用户编写脚本进行自动化任务。PowerShell脚本类似于CMD脚本,可以通过文本编辑工具创建。脚本可以通过重定向方式直接生成,但需要遵循特定规则,例如使用`@‘...@’`的Here-String语法,以避免特殊字符被解析。此外,脚本可以通过Notepad编辑器创建,并在运行时遇到路径或执行策略问题。默认情况下,PowerShell禁止脚本执行,但可以通过设置执行策略(如Unrestricted或AllSigned)进行调整。脚本可以像命令一样执行,通过设置别名实现无需路径直接运行的功能。需要注意的是,脚本的安全性受到执行策略的影响,更改策略可能带来安全风险。



一个Powershell仅仅是一个包含Powershell代码的文本文件。如果这个文本文件执行,Powershell解释器会逐行解释并执行它的的语句。Powershell脚本非常像以前CMD控制台上的批处理文件。您可以通过非常简单的文本编辑工具创建Powershell脚本。

通过重定向创建脚本

如果您的脚本不是很长,您甚至可以直接在控制台中要执行的语句重定向给一个脚本文件。

PS E:> ‘”Hello,Powershell Script”‘ > MyScript.ps1
PS E:> .\MyScript.ps1
Hello,Powershell Script

这样有个缺点,就是您的代码必须放在闭合的引号中。这样的书写方式一旦在脚本内部也有引号时,是一件很痛苦的事。甚至您还可能希望在脚本中换行。下面的Here-strings例子不错,也就是将脚本文件通过@‘ ‘@闭合起来。

PS E:> @’
>> Get-Date
>> $Env:CommonProgramFiles
>> #Script End
>> “files count”
>> (ls).Count
>> #Script Really End
>>
>> ‘@ > myscript.ps1
>>
PS E:> .MyScript.ps1

2012年4月27日 8:15:10
C:\Program Files\Common Files
files count
20

Here-String以 @‘开头,以’@结束.任何文本都可以存放在里面,哪怕是一些特殊字符,空号,白空格。但是如果您不小心将单引号写成了双引号,Powershell将会把里面的变量进行解析。

通过编辑器创建脚本

其实非常方便的还是最地道的文版编辑器Notepad,您可以直接在Powershell控制台中打开Notepad

PS E:> notepad.exe .\MyScript.ps1
PS E:> notepad.exe

编辑完记得保存即可。

运行Powershell脚本

当您的脚本编写成功后您可能第一次会像下面的方式运行它,也就是只输入脚本的文件名,会报错。

PS E:> MyScript.ps1

无法将“MyScript.ps1”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括

路径,请确保路径正确,然后重试。

所在位置 行:1 字符: 13

+ MyScript.ps1 < <<<

+ CategoryInfo : ObjectNotFound: (MyScript.ps1:String) [], CommandNotFoundException

+ FullyQualifiedErrorId : CommandNotFoundException

Suggestion [3,General]: 未找到命令 MyScript.ps1,但它确实存在于当前位置。Windows PowerShell 默认情况

下不从当前位置加载命令。如果信任此命令,请改为键入 “.MyScript.ps1″。有关更多详细信息,请参阅 “get-h

elp about_Command_Precedence”。

除非您使用相对路径,或者绝对路径

PS E:> .\MyScript.ps1

2012年4月27日 8:33:03
C:\Program Files\Common Files
files count
20

PS E:> E:MyScript.ps1

2012年4月27日 8:33:11
C:\Program Files\Common Files
files count
20

执行策略限制

Powershell一般初始化情况下都会禁止脚本执行。脚本能否执行取决于Powershell的执行策略。

PS E:> .\MyScript.ps1

无法加载文件 E:MyScript.ps1,因为在此系统中禁止执行脚本。有关详细信息,请参阅 “get-help about_sign

ing”。

所在位置 行:1 字符: 15

+ .MyScript.ps1 < <<<

+ CategoryInfo : NotSpecified: (:) [], PSSecurityException

+ FullyQualifiedErrorId : RuntimeException

只有管理员才有权限更改这个策略。非管理员会报错。

查看脚本执行策略,可以通过:

PS E:> Get-ExecutionPolicy

更改脚本执行策略,可以通过

PS E:> Get-ExecutionPolicy
Restricted
PS E:> Set-ExecutionPolicy UnRestricted

执行策略更改

执行策略可以防止您执行不信任的脚本。更改执行策略可能会使您面临 about_Execution_Policies

帮助主题中所述的安全风险。是否要更改执行策略?

[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): y

脚本执行策略类型为:Microsoft.PowerShell.ExecutionPolicy

查看所有支持的执行策略:

PS E:> [System.Enum]::GetNames([Microsoft.PowerShell.ExecutionPolicy])

Unrestricted

RemoteSigned

AllSigned

Restricted

Default

Bypass

Undefined

Unrestricted:权限最高,可以不受限制执行任何脚本。

Default:为Powershell默认的策略:Restricted,不允许任何脚本执行。

AllSigned:所有脚本都必须经过签名才能在运行。

RemoteSigned:本地脚本无限制,但是对来自网络的脚本必须经过签名。

关于Powershell脚本的签名在后续会谈到。

像命令一样执行脚本

怎样像执行一个命令一样执行一个脚本,不用输入脚本的相对路径或者绝对路径,甚至*.ps1扩展名。

那就将脚本的执行语句保存为别名吧:

PS E:> Set-Alias Invok-MyScript .MyScript.ps1
PS E:> Invok-MyScript

2012年4月28日 0:24:22
C:\Program Files\Common Files
files count
20

您可能感兴趣的文章:Windows PowerShell是啥?看完本文你就懂它了25个常用PowerShell命令总结Windows Powershell 介绍和安装浅谈CMD和win powershell的区别PowerShell读取文件内容、替换文件内容、读取限定行的例子PowerShell中使用Get-Date获取日期时间并格式化输出的例子PowerShell 入门基础教程Win8系统中使用PowerShell安装APPX应用命令介绍使用 powershell 创建虚拟机

© 版权声明

相关文章