[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 【已解决]powershell 乱码的问题

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

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

回复 1# yiwuyun
目的应该不只是在cmd窗口显示吧
1、更换代码页
2、用select-string
3、完全用ps的cmdlet取代cmd命令

TOP

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

TOP

谢谢各位,看来,如果要用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#>
复制代码
1

评分人数

TOP

回复 4# yiwuyun

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

TOP

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

TOP

回复 6# yiwuyun


在你的Win10和2012上面分别查看一下 $OutputEncoding 这个变量的值,对比看看有何差异。

TOP

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

TOP

返回列表