找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26158|回复: 7

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

[复制链接]
发表于 2017-4-8 22:42:49 | 显示全部楼层 |阅读模式
本帖最后由 yiwuyun 于 2017-4-12 17:22 编辑

直接点
在CMD下
ipconfig | findstr "DNS"
不会出问题,一切正常
在powershell 下
ipconfig | findstr "DNS"  乱码
在powershell_ise下,一切正常,但我只要在powershell下运行程序,
我也想了一个憋足的办法,就是用Out-File,但这个要输出到一个临时文件,不爽。
我想问一下,有没有朋友遇到这个问题,又是怎样解决的。
发表于 2017-4-8 23:13:54 | 显示全部楼层
回复 1# yiwuyun
目的应该不只是在cmd窗口显示吧
1、更换代码页
2、用select-string
3、完全用ps的cmdlet取代cmd命令
发表于 2017-4-9 10:42:33 | 显示全部楼层
  1. ipconfig | Select-String DNS
复制代码
 楼主| 发表于 2017-4-9 16:50:14 | 显示全部楼层
谢谢各位,看来,如果要用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#>
复制代码

评分

参与人数 1PB +2 收起 理由
pcl_test + 2 感谢分享

查看全部评分

发表于 2017-4-10 11:46:38 | 显示全部楼层
回复 4# yiwuyun

    $OutputEncoding的不同
  1. $OutputEncoding = [Console]::OutputEncoding
复制代码
 楼主| 发表于 2017-4-10 12:19:11 | 显示全部楼层
我晕,难道操作系统有问题,在win2012下,一切都正常了。前面的测试是在win10下作出的。代码页都是cp 936不会是这个有问题,而且我也是测试了其他代码页的。把人难住了。
发表于 2017-4-10 23:18:37 | 显示全部楼层
回复 6# yiwuyun


在你的Win10和2012上面分别查看一下 $OutputEncoding 这个变量的值,对比看看有何差异。
 楼主| 发表于 2017-4-12 17:21:17 | 显示全部楼层
多谢各位,我太笨了,都说那么清楚了还没搞定。就是要加这一句$OutputEncoding = [Console]::OutputEncoding才行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:03 , Processed in 0.018011 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表