2017-08-11 97 views
1

我有這麼長的字符串需要發送,正如我從($token = Get-Content $token_txt)中讀取的文本文件中所示。這串字符有幾個百分號。他們需要包含在字符串中。每次使用wshell,VB或WASP執行SendKeys時,都會從文本中刪除百分號和後兩個字符。我確定它認爲它是一個特殊字符和一些擊鍵命令或其他東西。我如何讓系統忽略百分號而不將它們視爲特殊字符?使用PowerShell發送按鍵並在文本中包含百分號

這裏是我從文本文件和它集閱讀變量$token字符串的例子:

YzY5FlNDItMjllctZjA4ZDVkNzUxNWM3LTE1MzMyMzMw%0AMTY2NDJ8VjBPd1BhT1JVSmtwWkxaZk1tRkNCbGNONzl5SndHb3YyQVZNVlNX%0AQWdMQT0%3D%0A 

正如你可以看到有令牌百分之幾的跡象但這些都需要如圖所示完全發送。當我看到它送送它使

YzY5FlNDItMjllctZjA4ZDVkNzUxNWM3LTE1MzMyMzMwMTY2NDJ8VjBPd1BhT1JVSmtwWkxaZk1tRkNCbGNONzl5SndHb3YyQVZNVlNXQWdMQT0 

就像我說的,我試過wshell,VB,WASP所有發送鍵的膩子窗口,其無法正常發送。

如果我只是在PowerShell中顯示變量$token,它會正確顯示百分號。它只有當我發送密鑰,當它刪除特殊字符。

下面是三種方式我試圖將其發送

$wshell = New-Object -ComObject wscript.shell; 
$wshell.AppActivate('putty') 
Sleep 1 
Add-Type -AssemblyName System.Windows.Forms 
[System.Windows.Forms.SendKeys]::SendWait($token); 

add-type -AssemblyName microsoft.VisualBasic 
add-type -AssemblyName System.Windows.Forms 
[Microsoft.VisualBasic.Interaction]::AppActivate("putty") 
[System.Windows.Forms.SendKeys]::SendWait($token) 

Select-Window putty | Send-Keys $token 
Select-Window putty | Send-Keys "{ENTER}" 

任何幫助將不勝感激。

+0

我相信你應該使用反引號'引用一個特殊字符。 –

+0

我曾嘗試添加反向文本文件,它仍然刪除百分號和以下兩個字符 –

回答

0

括在{}的%,似乎這樣的伎倆

[System.Windows.Forms.SendKeys]::SendWait("Test{%}Test"); 

MSDN SendKeys Class

加號(+),插入符號(^),百分號(%),波浪號(〜 )和括號()對SendKeys有特殊意義。要指定其中一個字符,請將其括在大括號({})中。例如,要指定加號,請使用「{+}」。

添加替換方法到$令牌

$token = $token.Replace("%","{%}") 
+0

亞當你真了不起這就是我所需要的!謝謝!! –

相關問題