iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
自我挑戰組

沒有厲害的頭腦,也能利用腳本實現懶人寫程式的夢想系列 第 10

DAY 10 :PowerShell 利用迴圈搭配環境變數使腳本輕量化

  • 分享至 

  • xImage
  •  

上回我們在腳本中加入了環境變數,有助於我們在重複使用腳本時,透過修改環境變數即可重新進行執行工作,不過我們上回的腳本內容對於要執行的命令列依舊是逐條列出,語法如下:

$SERVER = '.' 
$FILENAME = 'FirstDataBase.sql' 
$PATH = "C:\temp" 
$DATABASE_LIST = 'One','Two','Three','Four','Five' 

sqlcmd -S $SERVER -d $DATABASE_LIST[0] -i $PATH\$FILENAME 
sqlcmd -S $SERVER -d $DATABASE_LIST[1] -i $PATH\$FILENAME 
sqlcmd -S $SERVER -d $DATABASE_LIST[2] -i $PATH\$FILENAME 
sqlcmd -S $SERVER -d $DATABASE_LIST[3] -i $PATH\$FILENAME 
sqlcmd -S $SERVER -d $DATABASE_LIST[4] -i $PATH\$FILENAME

可以想像,當我們需要被執行腳本的資料庫如果變多,我們需要在我們的變數$DATABASE_LIST增加項目,並且執行的命令列需要再增加,使得我們在使用上依然有不少的限制。


下面我們嘗試用For迴圈來解決這個問題,我們依照需求使用的For迴圈語法如下,詳細各語法請參考連結

FOR ({起始值};{執行條件};{增量條件})
{
 程式主要邏輯
}

我們在這邊多建立一個變數作為迴圈要執行的終止條件(DATALIST的個數-1),接著將主要程式邏輯寫進迴圈中,語法如下

$SERVER = '.'
$FILENAME = 'FirstDataBase.sql'
$PATH = "C:\temp" 
$DATABASE_LIST = 'One','Two','Three','Four','Five' 

$COUNT = $DATABASE_LIST.Count - 1

FOR($i=0;$i -lt $COUNT;$i++)
{
  sqlcmd -S $SERVER -d $DATABASE_LIST[$i] -i $PATH\$FILENAME
}

將我們改寫過的語法執行後,可以得到跟之前相同的結果,不同的是若改變DATABASE_LIST的內容,無論是數量或是資料庫的名稱,都能執行相同的功能,不過依然還有不少的內容是我們能優化的。

更多小知識,我們下次見~~


上一篇
DAY 9 :PowerShell使用環境變數減少Hard Code
下一篇
DAY 11 :mssql-scripter簡介及安裝流程
系列文
沒有厲害的頭腦,也能利用腳本實現懶人寫程式的夢想30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言