Board logo

标题: [问题求助] 【已解决]powershell 乱码的问题 [打印本页]

作者: yiwuyun    时间: 2017-4-8 22:42     标题: 【已解决]powershell 乱码的问题

本帖最后由 yiwuyun 于 2017-4-12 17:22 编辑

直接点
在CMD下
ipconfig | findstr "DNS"
不会出问题,一切正常
在powershell 下
ipconfig | findstr "DNS"  乱码
在powershell_ise下,一切正常,但我只要在powershell下运行程序,
我也想了一个憋足的办法,就是用Out-File,但这个要输出到一个临时文件,不爽。
我想问一下,有没有朋友遇到这个问题,又是怎样解决的。
作者: pcl_test    时间: 2017-4-8 23:13

回复 1# yiwuyun
目的应该不只是在cmd窗口显示吧
1、更换代码页
2、用select-string
3、完全用ps的cmdlet取代cmd命令
作者: ShowCode    时间: 2017-4-9 10:42

  1. ipconfig | Select-String DNS
复制代码

作者: yiwuyun    时间: 2017-4-9 16:50

谢谢各位,看来,如果要用findstr ,还是无解。我只是想为何powershell_ise正常,但powershell始终不正常,是不是系统或powershell的某个参数设置不正确,因此搜了百度,但也找不到正确答案。附一个自己最近探索到的对powershell的输入问题的解决方案。懂的自然懂。
  1. if ($true){}# == ($true){}# goto ___yiwuyun
  2. <#BeginBatOperation#
  3. :___yiwuyun
  4. @echo off&setlocal&cls
  5. (echo $yiwuyun_fileName="%~f0"&echo $strPath="%~dp0"&type "%~f0")|powershell -command -
  6. pause
  7. exit/b 0
  8. #EndBatOperation#>
  9. <#StartPowerShell#>
  10. write-host "test read data from control";
  11. $bat=@"
  12. @echo off&setlocal&cls
  13. set /P ip=`"input ip addres:`"
  14. set /P mask=`"input mask:`"
  15. set /P gw=`"input gateway:`"
  16. >test.bat echo %ip% %mask% %gw%&exit
  17. "@
  18. $bat| Out-File -Encoding oem -FilePath test.bat
  19. $cmd=cmd /C "start test.bat"
  20. $content=$(gc test.bat);
  21. if($(Test-Path -Path test.bat)){remove-item -path test.bat}
  22. write-host "your input text is : $content";
  23. <#EndPowerShell#>
复制代码

作者: nwm310    时间: 2017-4-10 11:46

回复 4# yiwuyun

    $OutputEncoding的不同
  1. $OutputEncoding = [Console]::OutputEncoding
复制代码

作者: yiwuyun    时间: 2017-4-10 12:19

我晕,难道操作系统有问题,在win2012下,一切都正常了。前面的测试是在win10下作出的。代码页都是cp 936不会是这个有问题,而且我也是测试了其他代码页的。把人难住了。
作者: ShowCode    时间: 2017-4-10 23:18

回复 6# yiwuyun


在你的Win10和2012上面分别查看一下 $OutputEncoding 这个变量的值,对比看看有何差异。
作者: yiwuyun    时间: 2017-4-12 17:21

多谢各位,我太笨了,都说那么清楚了还没搞定。就是要加这一句$OutputEncoding = [Console]::OutputEncoding才行。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2