如何使用SendKeys将types化variables显示为键而不是值

$a = [char]65 $w1 = New-Object -ComObject wscript.shell; $w1.AppActivate('Untitled - Notepad') Sleep 1 Write-Host $a $w1.SendKeys($a); 

在PowerShell脚本中,我尝试使用SendKeys命令,通过将variables$a作为值为65[char]来使字母A出现在记事本中。 当我运行该行时,这给了我预期的结果:

 Write-Host $a 

A出现在PowerShell中)

但是,每当下面的行运行:

 $w1.SendKeys($a); 

数字65被放入记事本而不是A

为什么在给定相同的参数时,这两行会产生不同的输出,在这两种情况下我能做些什么来使variables$a输出字符A

因为char是一个整数类型,所以SendKeys$a当作一个整数。 您可以通过直接传入65来获得相同的行为:

 $w1.SendKeys(65); # Sends "65" to Notepad 

要解决此问题,您需要显式给SendKeys一个字符串参数。 最简单的方法是将$a括在引号中:

 $w1.SendKeys("$a");