我試圖編寫一個代碼,可以快速鎖定密鑰的LED(使用-comObject發送密鑰)。 Powershell(來自CMD)的代碼運行速度非常慢,並且錯過了一些按鍵,但似乎在Powershell_ise上效果很好。Powershell代碼在PowerShell_ise上運行良好,但在PowerShell中破解
該代碼將文件讀取爲二進制文件,然後將每個位傳輸到num/scroll lock。這需要運行得非常快 - 儘可能快。
這是代碼:
$wsh = New-Object -ComObject "WScript.Shell"
$bytes = [Byte[]] (Get-Content $env:temp\temp1536.txt -Encoding Byte -ReadCount 0) | ForEach-Object {[System.Convert]::ToString($_,2)}
##($i=0; $i -le $byte.length; $i++){
foreach ($byte in $bytes) {
#$byte;
while($byte.length -ne 1){
if($byte[1] -eq '1'){
#echo "1";
$wsh.SendKeys('{SCROLLLOCK}');
[System.Threading.Thread]::Sleep(40);
$wsh.SendKeys('{SCROLLLOCK}');
} Else {
#echo "0";
$wsh.SendKeys('{NUMLOCK}');
[System.Threading.Thread]::Sleep(40);
$wsh.SendKeys('{NUMLOCK}');
}
$byte=$byte.Substring(1);
[System.Threading.Thread]::Sleep(50);
}
#echo " ";
#echo "1";
$wsh.SendKeys('{CAPSLOCK}');
[System.Threading.Thread]::Sleep(55);
$wsh.SendKeys('{CAPSLOCK}');
[System.Threading.Thread]::Sleep(20);
}
任何人都知道爲什麼出現這種情況?
編輯: 我添加了一個視頻,顯示在Powershell Console Vs.上閃爍的鎖定鍵的延遲。 Powershell_ISE http://youtu.be/OnOmr50OBhs
I/Windows 7上
試過這對PowerShell的V3.0 4.0我用這個文本文件名-'temp1536.txt」在%temp%文件夾 的文件導入到二進制文件,然後相應地點亮領導。
$bytes = [Byte[]] (Get-Content $env:temp\temp1536.txt -Encoding Byte -ReadCount 0) | ForEach-Object {[System.Convert]::ToString($_,2)}
謝謝。 你能在控制檯和ISE中看到不同的性能嗎?當我在控制檯上運行它時,它的運行速度非常慢......我可以看到LED慢速閃爍,並且在運行「測量命令」時也顯示爲 – oriez
@oriez您的意思是我的代碼在控制檯中運行緩慢?只需使用'Measure-Command'在另一臺PC上檢查它,仍然沒有問題:它的運行速度與ISE一樣快。檢查這個問題,也許它與代碼本身沒有任何關係:[KB3057134中描述的更新似乎使PowerShell開始緩慢](http://serverfault.com/questions/691873/it-seems-like -updates-in-the-kb3057134-make-powershell-to-start-slow) – beatcracker
@oriez Btw,你使用的是什麼版本的PowerShell?這可以實現STA \ MTA模式:[PowerShell控制檯和PowerShell ISE之間的區別](http://stackoverflow.com/questions/20022976/difference-between-powershell-console-and-powershell-ise)。嘗試使用'-sta'和'-mta'開關運行PS控制檯,看看它是否有幫助。 – beatcracker