2014-11-13 71 views
0

我是PowerShell腳本編寫新手。我已經被賦予了理解PowerShell腳本正在做什麼的任務。PowerShell腳本「&」「&&」「||」運營商

我被困在下面一行:

& $basePath\CPAU.exe -u $($sqlUser.UserName) -p $(ConvertTo-UnsecureString $sqlUser.Password) -ex "cmd /c (sqlcmd $($sqlArgs -join ' ') > $outputFile && echo TRUE > SUCCESS) || echo TRUE > FAILURE" -wait -nowarn -hide 

感覺就像腳本試圖執行某種SQL命令的。但是,我不確定啓動「&」符號。

另外,CPAU.exe可以在basepath中是外部的嗎? -p,-u-ex強制執行什麼?

下一行:

if (!(Test-Path .\SUCCESS)) 
{ 
    #some more code 
} 

在上面的if語句,是什麼.\SUCCESS是什麼意思? Test-Path是否在某種路徑上運行以測試它是否存在?

+0

'-u'用戶名,'-p'密碼和'-ex'可能是執行? – Cyclonecode

+0

謝謝,你能寫一個解釋整條線的答案嗎?我仍然沒有得到什麼是「||」 for和TRUE> FAILURE? – nitinsh99

+0

請給出反對的理由。 – nitinsh99

回答

5

&是PowerShell call operator,其中「運行命令,腳本或腳本塊」。根據你的情況,它的運行位於$basePath與參數-u-p-ex-wait-nowarn-hide外部命令CPAU.exe。這命令執行另一個命令(參數-ex的說法):

cmd /c (sqlcmd $($sqlArgs -join ' ') > $outputFile && echo TRUE > SUCCESS) || echo TRUE > FAILURE 

上述用途cmd.exe(Windows命令提示符)運行sqlcmd $($sqlArgs -join ' '),其輸出重定向到文件$outputFile,並寫上「TRUE」要麼如果命令成功則文件爲SUCCESS,否則爲文件FAILURE

||&&cmd命令鏈接的操作符。 ||表示「如果先前的命令失敗,則運行下一個命令」。 &&的意思是「如果先前的命令成功,則運行下一個命令」。

0
& $basePath\CPAU.exe -u $($sqlUser.UserName) -p $(ConvertTo-UnsecureString $sqlUser.Password) -ex "cmd /c (sqlcmd $($sqlArgs -join ' ') > $outputFile && echo TRUE > SUCCESS) || echo TRUE > FAILURE" -wait -nowarn -hide 

這是一些PowerShell代碼,調用存儲在$基本路徑可執行CPAU.exe通過用戶名和密碼,並使其執行一些代碼CMD:

CMD/C(SQLCMD $($ sqlArgs - 加入'')> $ outputFile & & echo TRUE> SUCCESS)|| echo TRUE> FAILURE

cmd執行一個SQL命令,給定一些預定義的$ sqlArgs,由空格連接。整個命令被重定向到$ outputFile,這也是預定義的。

如果該命令的輸出與CMD控制檯上Echo TRUE的能力爲真,則會創建一個名爲SUCCESS的文件,接收重定向的輸出。否則,如果某些內容失敗,但回顯TRUE發生,則會創建一個FAILURE文件。

整個事情等待一切是完整的,沒有給出警告,...隱藏....

誰寫這一點,需要一個假期。