跳至主要内容

博文

目前显示的是标签为“Powershell”的博文

Create Symbolic Link using PowerShell

类似于 Linux 的 `ln -s` 命令,Windows PowerShell 也支持在文件系统中创建 SymbolicLink。 例如,为了方便在 Visual Studio Code中预览 Markdown 的图片,就可以建立软链接: ```PowerShell cd src\main New-Item -Path .\markdown\frontend\img \ -ItemType SymbolicLink \ -Value .\resources\frontend\images\ ```

Powershell 批量抽取视频中的声音

是不是会从油管载几个音乐视频,为了方便转换为MP3,在Win10试了PowerShell,尚未完全批处理,分为步骤如下: 1. 搜集目录下近期下载的MV文件列表 ``` # List input file name Get-ChildItem -Path I:\YOUGET\MusicVideos\*.mp4 | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-30) } | Select Name ``` 2. 自定义输出的MP3文件名,将其与对应的输入文件名一起存放到一个字符串中,稍后转换为一个Hashtable结构。 ``` # Construct a hashtable, using Output MP3 name as key, and input file name as Value. $nmapping=@" mp3-file1 = ... mp3-file2 = ... mp3-file3 = ... "@ $hash = ConvertFrom-StringData $nmapping ``` 3. 遍历Hashtable的元素,执行 ffmpeg 命令来转换为MP3。 ``` # Loop the hash table, and run ffmpeg foreach ($h in $hash.GetEnumerator()) { $InputFileName = "I:\YOUGET\MusicVideos\" + "$($h.Value)" $OutputFileName = "I:\YOUGET\MP3\" + "$($h.Name)" + ".MP3" Write-Host "Convertign $InputFileName to $OutputFileName ..." ffmpeg -i "$InputFileName" -vn -ab 256k "$OutputFileName" } ``` 参考了以...

调整网络适配器的优先级

参考[这篇文章](https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10) 重置了几个网络适配器的优先顺序。 Powershell命令: ``` > Get-NetIPInterface > Set-NetIPInterface -InterfaceIndex 30 -AutomaticMetric enabled ``` 根据文章描述,也可以手动修改每个网络适配器对应的Metrics (跃点数),数值越低则优先级越高。

Windows 10 卓越性能模式

Windows 10 升级到 version 1803 版本之后,可以打开一个隐藏的电源计划,也就是传说中的“卓越性能”模式。 具体操作是以管理员身份打开 PowerShell 窗口,输入以下指令: powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 具体是哪里可以体现极限,媒体的报道也语焉不详: > “极限性能”模式是专门为高端台式系统打造的。 > 如果你想在电池供电的笔记本平台上使用,显然是无法享受到其所宣称的最佳体验的。 不过好歹俺的台式机N年前也算是还凑合的 [Intel i7-4790K](https://ark.intel.com/products/80807/Intel-Core-i7-4790K-Processor-8M-Cache-up-to-4_40-GHz),虽然生命周期已经 discontinued 了,不过期望多少可以压榨一点油水吧?

PowerShell Exercises - Rename file names in batch

以前用TotalCommander来做batch rename的,GUI下输入pattern挺方便的。现在的PC上没有安装,于是要靠命令行了。 好在PowerShell的pipe也不算太糟糕: Get-ChildItem directory | Rename-Item -NewName { $_.Name -replace '^filename_+','' } 如果有多个 patterns 需要替换可以使用多组 `-replace` 表达式组合。

PowerShell Exercises - Merge files in folder

需要在Windows下做一些简单的文件操作,CMD显然已经过时了,开始试着用PowerShell。 如果是在Linux下面通常就是 find 之后 pipe 到 cat 完事。PowerShell的语法稍微复杂了点儿,不过也还是可以接受的: ``` Get-ChildItem -path . -recurse | ?{ $_.name.contains(".markdown") } | %{ Out-File -filepath ./cat-all.txt -Encoding UTF8 ` -inputobject (Get-Content $_.fullname -Encoding UTF8) -Append } ``` 『补充于2018年6月底』后来发现,`Get-Content` 的别名是 `cat`;还有一个与之对应的 `Set-Content` 别名是 `sc`,因此如果文件结构简单的情况下,可以把上面的命令简化为: ``` cat -Encoding UTF8 *.markdown | sc -Encoding UTF8 cat-all.txt ``` 另外如果需要执行类似于 `grep` 命令,例如,在 markdown 文件内使用正则表达式 `^## ` 查找二级 head : sls ^## .\cat-all.txt -ca

Windows 10 无法使用 Powershell 创建 NIC Team

主板上有两块网卡,一个是 Intel 的,另一个是 Killer 的。为了充分利用,将两个千兆口都连在了 Hub 上。 在网上看到 Windows 其实可以组建 `NIC Team`,将多块网卡绑定成一个 team,内部通过负载均衡算法来控制网卡的使用。这样整个操作系统的应用程序只通过 team 来发送和接收数据,具体分配到哪一块 NIC 则是由 Windows 来管理的。 这么美好的东西怎么可以错过呢,MSDN 告诉我可以[使用 Cmdlets 来创建 NIC Team](https://technet.microsoft.com/en-us/library/jj130849(v=wps.630).aspx),于是我激动的开始尝试使用 powershell 来执行一行行命令: PS C:\WINDOWS\system32> Get-NetAdapter -Name Nic* Name InterfaceDescription ifIndex Status ---- -------------------- ------- ------ NicIntel Intel(R) Ethernet Connection I217-V 16 Up NicKiller Killer e2200 PCI-E Gigabit Ethernet ... 11 Up PS C:\WINDOWS\system32> New-NetLbfoTeam -Name LinkNics -TeamingMode SwitchIndependent -TeamMembers NicIntel,NicKiller New-NetLbfoTeam : 参数错误。 所在位置 行:1 字符: 2 + New-NetLbfoTeam -Name LinkNics -TeamingMode SwitchIndependent -TeamM ... + ~~~~~~~~~~~~~~~~~...