一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - PowerShell - Windows Powershell 執(zhí)行文件和腳本

Windows Powershell 執(zhí)行文件和腳本

2020-06-18 10:07pstips PowerShell

PowerShell腳本提供了一個方便的方法來自動化各種瑣事。下面是關(guān)于PowerShell的一些基本概念,對于PowerShell初學(xué)者,掌握這些概念有助于加深對PowerShell腳本的理解。

象運行可執(zhí)行文件一樣,Powershell運行文件和腳本,也必須使用絕對路徑或者相對路徑,或者要運行的文件必須定義在可受信任的環(huán)境變量中。

關(guān)于腳本
腳本和批處理都屬于偽可執(zhí)行文件,它們只是包含了若干命令行解釋器能夠解釋和執(zhí)行的命令行代碼。

執(zhí)行批處理文件
批處理是擴展名為”.bat”的文本文件,它可以包含任何cmd控制臺能夠處理的命令。當(dāng)批處理文件被打開,Cmd控制臺會逐行執(zhí)行每條命令。那Powershell能夠直接執(zhí)行批處理嗎?
將下列命令保存為ping.bat

?
1
2
3
4
@echo off
echo batch File Test
pause
Dir %windir%/system

然后執(zhí)行ping
屏幕會打印ping命令幫助,說明調(diào)用的ping cmd 而不是ping.bat。
改為:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
PS C:\PS> ./ping
batch File Test
Press any key to continue . . .
 Volume in drive C has no label.
 Volume Serial Number is 4E9B-D846
 
 Directory of C:Windowssystem
 
2009/06/11 05:21   69,584 avicap.dll
2009/06/11 05:21   109,456 avifile.dll
2009/07/14 05:41   32,816 COMMDLG.DLL
2009/07/14 05:41    2,000 keyboard.drv
2009/06/11 05:42    9,936 lzexpand.dll
2009/06/11 05:21   73,376 mciavi.drv
2009/06/11 05:21   25,264 mciseq.drv
2009/06/11 05:21   28,160 mciwave.drv
2009/07/14 05:41   68,992 MMSYSTEM.DLL
2009/07/14 05:41    1,152 mmtask.tsk
2009/07/14 05:41    2,032 mouse.drv
2009/06/11 05:21   126,912 msvideo.dll
2009/06/11 05:42   82,944 olecli.dll
2009/07/14 05:41   24,064 OLESVR.DLL
2009/07/14 05:41    5,120 SHELL.DLL
2009/07/14 05:41    1,744 sound.drv
2009/06/11 05:25    5,532 stdole.tlb
2009/07/14 05:41    3,360 system.drv
2009/07/14 05:41    4,048 TIMER.DRV
2009/06/11 05:42    9,008 ver.dll
2009/07/14 05:41    2,176 vga.drv
2009/07/14 05:41   12,704 WFWNET.DRV
    22 File(s)  700,380 bytes
    2 Dir(s) 75,927,420,928 bytes free

這時運行的是批處理。

通過cmd進入cmd控制臺輸入ping發(fā)現(xiàn)執(zhí)行的不是ping命令,而是直接運行ping.bat ,也就是說可以通過.bat 覆蓋cmd命令。這種機制很危險,如果有人侵入電腦,并將系統(tǒng)內(nèi)部命令篡改成自己批處理,那就太悲劇了。 這種命令與腳本的混淆不會發(fā)生在powershell中,因為powershell有更安全的機制。

執(zhí)行VB腳本文件
將下列命令保存為test.vbs

?
1
2
3
4
5
Set wmi = GetObject("winmgmts:")
Set collection = wmi.ExecQuery("select * from Win32_Process")
For Each process in collection
WScript.Echo process.getObjectText_
Next

執(zhí)行 .\test.vbs 會遍歷當(dāng)前Win32進程,并把每個進程的詳細信息通過窗口顯示出來。
怎樣讓VB腳本的通過控制臺輸出呢?
Wscript //H:CScript
怎樣還原VB腳本通過窗口輸出呢?
WScript //H:WScript
在powershell中執(zhí)行VB腳本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
PS C:\PS> cscript.exe .test.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
 
instance of Win32_Process
{
  Caption = "System Idle Process";
  CreationClassName = "Win32_Process";
  CSCreationClassName = "Win32_ComputerSystem";
  CSName = "test-me-01";
  Description = "System Idle Process";
  Handle = "0";
  HandleCount = 0;
  KernelModeTime = "484113379271";
  Name = "System Idle Process";
  OSCreationClassName = "Win32_OperatingSystem";
  OSName = "Microsoft Windows 7 Enterprise |C:Windows|DeviceHarddisk0Partition2";
  OtherOperationCount = "0";
  OtherTransferCount = "0";
  PageFaults = 0;
  PageFileUsage = 0;
  ParentProcessId = 0;
  PeakPageFileUsage = 0;
  PeakVirtualSize = "0";
  PeakWorkingSetSize = 0;
  Priority = 0;
  PrivatePageCount = "0";
  ProcessId = 0;
  QuotaNonPagedPoolUsage = 0;
  QuotaPagedPoolUsage = 0;
  QuotaPeakNonPagedPoolUsage = 0;
  QuotaPeakPagedPoolUsage = 0;
  ReadOperationCount = "0";
  ReadTransferCount = "0";
  SessionId = 0;
  ThreadCount = 2;
  UserModeTime = "0";
  VirtualSize = "0";
  WindowsVersion = "6.1.7601";
  WorkingSetSize = "24576";
  WriteOperationCount = "0";
  WriteTransferCount = "0";
};

執(zhí)行powershell腳本
Powershell擁有自己的腳本,擴展名為“.ps1”

?
1
2
3
4
5
6
7
8
9
PS C:\PS> echo "dir;Get-PSProvider;help dir" >test.ps1
PS C:\PS> Get-Content ./test.ps1
dir;Get-PSProvider;help dir
PS C:\PS> ./test.ps1初次執(zhí)行腳本時,可能會碰到一個異常:
File ” C:\PS\test.ps1″ cannot be loaded because the
execution of scripts is disabled on this system. Please see
“get-help about_signing” for more details.
At line:1 char:10
+ .test.ps1 <<<<

這是powershell的默認安全設(shè)置禁用了執(zhí)行腳本,要啟用這個功能需要擁有管理員的權(quán)限。

開啟:set-executionpolicy remotesigned

關(guān)閉:Set-ExecutionPolicy Restricted

Powershell調(diào)用入口的優(yōu)先級
別名:控制臺首先會尋找輸入是否為一個別名,如果是,執(zhí)行別名所指的命令。因此我們可以通過別名覆蓋任意powershell命令,因為別名的優(yōu)先級最高。

函數(shù):如果沒有找到別名,會繼續(xù)尋找函數(shù),函數(shù)類似別名,只不過它包含了更多的powershell命令。因此可以自定義函數(shù)擴充cmdlet 把常用的參數(shù)給固化進去。

命令:如果沒有找到函數(shù),控制臺會繼續(xù)尋找命令,即cmdlet,powershell的內(nèi)部命令。

腳本:沒有找到命令,繼續(xù)尋找擴展名為“.ps1”的Powershell腳本。

文件:沒有找到腳本,會繼續(xù)尋找文件,如果沒有可用的文件,控制臺會拋出異常。

?
1
2
3
4
5
6
The term ‘now' is not recognized as the name of a cmdlet, function, script file, or operable program. Chec
g of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:4
+ now <<<<
+ CategoryInfo : ObjectNotFound: (now:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 五月色婷婷久久综合 | 免费超级乱淫播放手机版 | xxx95日本老师xxx学生 | 91拍拍 | 红杏网| 精品亚洲视频在线观看 | 成人永久免费视频 | 99视频在线国产 | 欧美a级v片在线观看一区 | 国产精品资源在线观看网站 | 免费视频网 | 国产精品久线观看视频 | 18成人在线观看 | 色综合网亚洲精品久久 | 性关系免费视频 | 草嫩社区 | 日本啊v在线观看 | 久久精品国产久精国产果冻传媒 | 饭冈加奈子黑人解禁在线播放 | 欧美草逼网 | 青青草99热这里都是精品 | 97超pen个人视频公开视频视 | 国产福利免费看 | 日本精品久久久久中文字幕 1 | 无码观看AAAAAAAA片 | 亚洲国产精品成 | 欧美一区二区三区高清不卡tv | 亚洲午夜精品久久久久久人妖 | 日韩一区二区三区四区区区 | 亚洲毛片基地4455ww | 国人精品视频在线观看 | 高清不卡一区 | 五月激情丁香婷婷综合第九 | 成年性生交大片免费看 | 欧美大片一区二区 | 天码毛片一区二区三区入口 | 欧美综合国产精品日韩一 | 日本中年japanesebear | 99国产国人青青视频在线观看 | 欧美理论片手机在线观看片免费 | 亚洲欧美一区二区三区不卡 |