使用 powershell 时遇到csv不分列的问题

话说 cmd 用的不香么,干嘛费劲巴拉换 powershell 呢?两者的不同这里不说了,网上很多,比如 这里 。话说微软是一家很谦虚的公司,单从 微软的微字 就可见一斑了,可是这次推出的 powershell ,直接冠名 power ,这么张狂肯定是有原因的啊!为了强行体现爱学习的态度,这也必须学起。

可是当我迈出第一步的时候就遇到了问题,在 powershell 中将程序输出的结果重定向到某csv文件,结果使用excel打开时发现所有的结果都在第一列中了,还需要使用分列进行分析,实在麻烦,使用 cmd 并没有这个问题。

将两者输出的文件做了个对比,发现同样的程序重定向生成的文件, powershell 竟然要大好多,打开看了下,发现后者输出的文件时UTF-16LE格式的,原来如此。

要更改输出格式不是大问题,只需要使用命令 $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8' 设置一下就可以了。
可是,这样我们还是会遇到一个问题,我们的设置只对当前会话有效,我们在其他地方打开 powershell 或者关闭窗口,重新打开,我们的设置没了!

要想一劳永逸,我们只需要创建一个配置文件,然后将我们的命令写入配置文件,之后每次 powershell 启动的时候都会执行一下配置文件中的命令,这样就可以了。下文中出现的 30990 是用户名,

  1. 我们创建以下文件,
    C:\Users\30990\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
  2. 将我们要执行的配置命令 $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8' 写入以上文件
  3. 重启 powershell
    可是,我们这么做之后遇到了以下问题,我们配置文件里的命令无法执行。
Windows PowerShell
安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows
. : 无法加载文件 C:\Users\30990\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,因为在此系统上禁止运行脚
本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 3
+ . 'C:\Users\30990\Documents\WindowsPowerShell\Microsoft.PowerShell_pr ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

修改执行策略

针对上边的问题,我们要修改一下执行策略

PS C:\Users\30990> Set-ExecutionPolicy -Scope CurrentUser
位于命令管道位置 1 的 cmdlet Set-ExecutionPolicy
请为以下参数提供值:
ExecutionPolicy: RemoteSigned
PS C:\Users\30990>

我们输入的执行策略是RemoteSigned,可以根据需要从下表中自己选择

组策略执行策略
允许所有脚本Unrestricted
允许本地脚本和远程签名脚本RemoteSigned
仅允许已签名的脚本AllSigned

执行之后,我们查询一下运行策略,没有问题。

PS C:\Users\30990> Get-ExecutionPolicy -Scope CurrentUser
RemoteSigned

现在我们重启一下powershell,一切OK了。

关于执行策略
关于配置文件

使用PowerShell可以很方便的计算字符串的长度。PowerShell是继承于Microsoft .NET Framework的,所以在.NET里面怎么获取到字符串的长度,在PowerShell中可以使用相同的方法。 我们知道在.NET中,可以使用String.Length方法来获取字符串的长度,让我们看看PowerShell中怎么样依葫芦画瓢。 代码如下: $string = “1234567”; Write-Host $string.Length; #输出为7 如果你像小编一样懒,你甚至可以这样写: 代码如下: PS >”1234567″.length 怎么样,是不是很简单?
1.cmd生成payload java -jar ysoserial.jar Groovy1 "powershell.exe -NonI -W Hidden -NoP -Exec Bypass -Enc YwBhAGwAYwA=" > payload.bin 2.powershell生成payload java -jar ysoserial.jar Groovy1 ...
有尝试使用 mysqldump 进行数据库导出,我的环境是 Windows ,因此使用了默认的命令提示符来输入命令,导出如下图: mysqldump.exe --databases test1 -uroot -proot --default-character-set=utf8 > D:\Desktop\all-sql.sql 结果发现导出的数据原本应该为 UTF8 类型的中文字符最终是乱码,从往搜索
https://blog.csdn.net/qianxiao_1/article/details/79463409 $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8' 转载于:https://www.cnblogs.com/CyLee/p/10853301.html
本文介绍在PowerShell中如何将cmdlet输出的对象,转换为string字符串类型,便于后期的处理。 PowerShell中的cmdlet输出的结果都是以对象(Object)的形式存在的。对于Object类型,在后期处理时有利有弊,当然利大于弊。但某些时候,我们希望cmdlet输出的结果直接是字符串,那应该怎么来实现呢? PowerShell中提供了一个Out-String的cmdlet,来看看它的介绍:Out-String cmdlet 将 Windows PowerShell 管理的对象转换成字符串数组。默认情况下,Out-String 累积字符串并作为单个字符串返回它们,但您可以
中文版win10 Powershell默认编码为GB2312,而编程中常用编码格式为UTF-8。在UTF-8格式下编写的中文输出信息,在Powershell中执行程序就会显示乱码,这时需要更改编码格式。 1、临时修改 chcp 65001 直接在powershell中执行chcp命令。参数为编码号(参见下文数字编码表) 2、永久修改 win+R->输入regedit打开注册表,位...
首先, 我们说的unicode, 其实就是utf-16, 但最通用的却是utf-8 原因: 我猜大概是英文占的比例比较大, 这样utf-8的存储优势比较明显, 因为utf-16是固定16位的(双字节), 而utf-8则是看情况而定, 即可变长度, 常规的128个ASCII只需要8位(单字节), 而汉字需要24位 UTF-16, UTF-16LE, UTF-16BE 及其区别BOM 同样都是uni
要在 PowerShell 中处理 JSON 字符串,你可以使用 `ConvertTo-Json` 和 `ConvertFrom-Json` cmdlets。例如,如果你有一个 JSON 字符串,可以使用以下命令将其转换为 PowerShell 对象: ```powershell $jsonString = '{"name": "John", "age": 30}' $object = $jsonString | ConvertFrom-Json 然后,你可以像处理任何 PowerShell 对象一样处理 `$object` 变量。如果要将 PowerShell 对象转换为 JSON 字符串,可以使用以下命令: ```powershell $jsonString = $object | ConvertTo-Json 这将把 `$object` 变量转换为一个 JSON 字符串。你可以使用 `-Depth` 参数指定转换的深度。例如,如果要转换包含嵌套对象的对象,可以使用: ```powershell $jsonString = $object | ConvertTo-Json -Depth 2 这将指定转换嵌套对象的深度为 2 级。
CSDN-Ada助手: 非常感谢CSDN博主分享关于SFINAE的文章,这篇博客很详细地介绍了SFINAE的概念和应用,让我受益匪浅。我觉得下一篇博客可以探讨一下“C++模板元编程”的应用,比如如何利用SFINAE实现一些高级的模板技巧,这样的技术文章对其他用户也非常有帮助。相信会有更多读者受益于你的分享。加油! 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 GPS几种基本定位模式原理概述及精度介绍 ice-cream~: 博主好,请教一下伪距差分里的改正数怎么得到的啊,有相关的代码吗,这张伪距差分的图是怎么得到的呀? windows 下使用cmake指定visual studio 版本 对流层顶的圆白菜: 如果cmake已经安装,可能是它没有添加到环境变量中。我自己的做法是找到装cmake.exe的那个文件夹(一般是bin文件夹),把这个路径加入到环境变量path中,然后再重开cmd进行cmake就有效了 rtklib中的基线约束应对观测条件糟糕的GNSS数据 MicroGRIT: 您好,请问您解决该问题了吗?Moving-Base模式下,要添加极限约束的话,需要改constbl这个函数嘛?