Powershell实现编写和运⾏脚本
⼀个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:> .\MyScript.ps1
PS E:>
编辑完记得保存即可。
运⾏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脚本的签名在后续会谈到。
像命令⼀样执⾏脚本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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。