缘起
主要原因:
-
系统封装挺繁琐的,有广告,锁主页。
-
很多软件都要点下一步,很机械,过重复。
-
手动改IP多次,不断找图形界面,操作很繁琐。
-
网上的网络配置方面的相关编程,易用性不理想:
- 所用编程语言不同,个人环境相差较大,调试容错率低,学习成本高
- IP、DNS,各项配置相对分散,不集中,整合起来相对困难。
-
自己三年前写的批处理,能看懂但太费劲吃力了,不好调...还不如重新写。
这算的上是一次旧活新整吧。索性一次软件、配IP全搞定。也方便到时候再拿来用。(注:win7是叫“本地连接”,所有代码测试均在win10、win11主机)
自动静默所有软件
实现与解读
hoochanlon/ihs-simple/ez_auto_install.ps1源码附上及加注释说明。
echo "提示:把需要自动安装的软件,拷贝到下载目录文件夹即可。"
# 定义静默安装目录路径
$rawPath = "C:${Env:\HOMEPATH}\Downloads\";
# Get-ChildItem是获取子项目的意思,可以获取一个目录下的文件和子目录。
$allFile = Get-ChildItem -Path $rawPath;
# foreach遍历目录
foreach ($file in $allFile)
{
# 转成文件路径字符串。
$softname="C:${Env:\HOMEPATH}\Downloads\"+$file.name
# Write-Host $softname
Start-Process -Wait -FilePath $softname -ArgumentList '/S /SP- /VERYSILENT /NORESTART /SUPPRESSMSGBOXES /FORCE' -PassThru
}
echo "ok"
核心就两逻辑:一、在已有静默安装的前提选项上,我需要知道文件夹下面的所有软件名;二、每遍历一次目录、文件什么的,网上这样样例玩具代码,一抓一大把;配合上自己的逻辑思想,得发挥作用才行;每执行一遍静默安装就好了,把遍历过的自变量投射到静默安装指令上就行了。
单提下静默安装,我查了下资料,这些参数和软件打包方式有关,索性都加上吧。还有个/FORCE
,虽然文章没提,但我加上后测试也没报错。
资料:cnblogs-Windows软件静默安装
Start-Process -Wait -FilePath $softname -ArgumentList '/S /SP- /VERYSILENT /NORESTART /SUPPRESSMSGBOXES /FORCE' -PassThru
测试效果
基本上不少软件都支持静默安装,除了对福昕PDF阅读器同类别的打包方式程序,静默安装不起作用。
钉钉原则上是不支持静默安装的,参考钉钉帮助中心,但目前代码测试正常,也可能是我用离线版安装包的缘故包吧。
简化批量装机配置IP步骤
hoochanlon/ihs-simple/ez_edit_net.ps1,源码修改网络的每项配置都整合在一起,并不方便拿来用。并且我考虑到文件要正常执行,到最后也是还原为动态获取,变更了下dns罢了。
所以这里做下分块处理,方便CV直接使用。
常用三项
写死型IP配置,三项为:IP、掩码、网关
netsh interface ip set address "以太网" static 192.168.1.123 255.255.255.0 192.168.1.1
写死型DNS配置
Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses ("114.114.114.114","8.8.8.8")
动态IP与DNS
netsh interface ip set address "以太网" dhcp
netsh interface ip set dnsservers "以太网" source=dhcp
IP调试与测试用(装机也是常用项)
手动输入IP,保存就好。子网掩码、网关、DNS根据自己所在公司内部局域网环境改动就好。
# 1. 保存改写IP、DNS之前历史信息
netsh interface ip show config > ipbak.txt
## 1.2 打印必要提示
echo "cmd运行 ipbak.txt 查看备份信息;扔入垃圾桶:del ipbak.txt"
# 2. 修改IP、子网掩码、网关
$input_ip = Read-Host "输入IP地址";netsh interface ip set address "以太网" static $input_ip 255.255.255.0 192.168.1.1
# 3. 设置DNS,并打印OK
Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses ("114.114.114.114","8.8.8.8");echo "OK"
逻辑基本也在注释里了,基本上每条指令都能单独拿出来用,挺方便。
从网站获取dns(较少使用,可实现罢了)
个人整活,普及性来说意义不太大。
# 扩展:反向解析 nslookup -ty=ptr 1.1.1.1
# 1. 从nslookup解析网址中,获取到索引行dns记录,注入文本;dns.sb是一个dns域名。
nslookup dns.sb|Select-Object -Index 4 >dns-w.txt
# 2. 获取dns-w.txt文本内容,利用正则筛选出IP地址,$matches[0]取值
(Get-Content dns-w.txt) -match '\d+\.\d+\.\d+\.\d+'; $get_dns_num = $matches[0]
# 设置dns,将变量参数填入进去
Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses ($get_dns_num)
# 顺便把解析记录文本删掉,打印ok
del dns-w.txt;echo "ok"
测试效果图
昨天测试,2.13,自动安装
2.14 IP配置powershell脚本运行正常
参考资料
自动安装参考:
修改IP、DNS配置参考: