windows-运维-08 执行文件和脚本
执行文件和脚本
像运行可执行文件一样,Powershell运行文件和脚本,也必须使用绝对路径或者相对路径,或者要运行的文件必须定义在可受信任的环境变量中。
关于脚本
脚本和批处理都属于伪可执行文件,它们只是包含了若干命令行解释器能够解释和执行的命令行代码。
执行批处理文件
批处理是扩展名为”.bat”的文本文件,它可以包含任何cmd控制台能够处理的命令。当批处理文件被打开,Cmd控制台会逐行执行每条命令。那Powershell能够直接执行批处理吗?
将下列命令保存为ping.bat
1 | @echo off |
然后执行ping
屏幕会打印ping命令帮助,说明调用的ping cmd 而不是ping.bat。
改为:
1 | PS C:\PS> ./ping |
通过cmd进入cmd控制台输入ping发现执行的不是ping命令,而是直接运行ping.bat ,也就是说可以通过.bat 覆盖cmd命令。这种机制很危险,如果有人侵入电脑,并将系统内部命令篡改成自己批处理,那就太悲剧了。 这种命令与脚本的混淆不会发生在powershell中,因为powershell有更安全的机制。
执行VB脚本文件
1 | Set wmi = GetObject("winmgmts:") |
执行 .\test.vbs 会遍历当前Win32进程,并把每个进程的详细信息通过窗口显示出来。
怎样让VB脚本的通过控制台输出呢?
Wscript //H:CScript
怎样还原VB脚本通过窗口输出呢?
WScript //H:WScript
在powershell中执行VB脚本
1 | PS C:\PS> cscript.exe .test.vbs |
执行powershell脚本
Powershell拥有自己的脚本,扩展名为“.ps1”
1 | PS C:\PS> echo "dir;Get-PSProvider;help dir" >test.ps1 |
初次执行脚本时,可能会碰到一个异常:
1 | File ” C:\PS\test.ps1″ cannot be loaded because the |
这是powershell的默认安全设置禁用了执行脚本,要启用这个功能需要拥有管理员的权限。