2014-09-19 102 views
0

我正在嘗試使用Jenkins在遠程服務器上運行任務。我使用這個命令行:如何在密碼中包含'€'字符時使用用戶名和密碼運行遠程任務?

SCHTASKS /RUN /S <remote server> /U <user> /P <password> /TN <task name> 

這一直工作得很好,但現在一個新的客戶都有自己的密碼,內部有一個「€」字,我無法弄清楚如何將其正確傳遞給我的CMD線。它只是被'?'取代因爲標準的CMD字體不支持此標誌。 在我的CMD控制檯中,我可以通過將dafault字體更改爲「Lucida控制檯」來解決問題,但我無法在Jenkins中執行該操作,或者使批處理腳本使用該字體。

回答

0

需要通過用戶名和密碼進行身份驗證的大多數服務/服務器不允許代碼值大於小數點127的字符,因爲這會導致像這樣的問題。

euro sign在Unicode表中的代碼值爲20AC(十六進制,8364十進制)。

但在西歐和北美國家的代碼頁Windows-1252中,euro sign的代碼值爲80(十六進制,128位十進制)。在用於西里爾文本的代碼頁Windows-1251中,歐元符號具有代碼值88(十六進制,十進制136)。

所以它必須被發現了什麼服務,現在預計,密碼:

  1. Unicode字符串或「ANSI」字符串?
    (Microsoft定義的Windows代碼頁不是ANSI標準。)
  2. 哪個代碼頁分別代表哪個代碼值在「ANSI」字符串的情況下使用。

通過在命令提示符窗口中運行命令chcp可以找到執行批處理文件的活動代碼頁,該命令可用於切換代碼頁。通過輸入chcp /?輸入

例如code page 850是默認在德語Windows控制檯上設置的。

現在讓我們假設用戶在使用Windows-1252的GUI窗口中輸入了歐元符號,並且密碼字符串未被編碼爲Unicode,導致存儲了十進制值128的歐元符號。在這種情況下,必須將批處理文件中密碼字符串中值爲128的字節傳輸到服務/服務器。通過查看代碼頁850的字符表,可以發現字符Ç在該代碼頁中具有代碼值128。因此請在您的批處理文件中嘗試使用c-cedilla字母。

但最好的解決辦法是用戶更改密碼並避免使用代碼值更大的十進制127的特殊字符。

相關問題