标题: [问题求助] 【已解决]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
- ipconfig | Select-String DNS
复制代码
作者: yiwuyun 时间: 2017-4-9 16:50
谢谢各位,看来,如果要用findstr ,还是无解。我只是想为何powershell_ise正常,但powershell始终不正常,是不是系统或powershell的某个参数设置不正确,因此搜了百度,但也找不到正确答案。附一个自己最近探索到的对powershell的输入问题的解决方案。懂的自然懂。- if ($true){}# == ($true){}# goto ___yiwuyun
- <#BeginBatOperation#
- :___yiwuyun
- @echo off&setlocal&cls
- (echo $yiwuyun_fileName="%~f0"&echo $strPath="%~dp0"&type "%~f0")|powershell -command -
- pause
- exit/b 0
- #EndBatOperation#>
-
- <#StartPowerShell#>
-
- write-host "test read data from control";
- $bat=@"
- @echo off&setlocal&cls
- set /P ip=`"input ip addres:`"
- set /P mask=`"input mask:`"
- set /P gw=`"input gateway:`"
- >test.bat echo %ip% %mask% %gw%&exit
- "@
- $bat| Out-File -Encoding oem -FilePath test.bat
-
- $cmd=cmd /C "start test.bat"
- $content=$(gc test.bat);
- if($(Test-Path -Path test.bat)){remove-item -path test.bat}
- write-host "your input text is : $content";
-
- <#EndPowerShell#>
复制代码
作者: nwm310 时间: 2017-4-10 11:46
回复 4# yiwuyun
$OutputEncoding的不同- $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://bathome.net./) |
Powered by Discuz! 7.2 |