吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2224|回复: 18
收起左侧

[其他原创] powershell面向装机编程——快捷修改IP与软件安装自动化

[复制链接]
hoochanlon 发表于 2023-2-14 16:26

缘起

主要原因:

  1. 系统封装挺繁琐的,有广告,锁主页。

  2. 很多软件都要点下一步,很机械,过重复。

  3. 手动改IP多次,不断找图形界面,操作很繁琐。

  4. 网上的网络配置方面的相关编程,易用性不理想:

    1. 所用编程语言不同,个人环境相差较大,调试容错率低,学习成本高
    2. IP、DNS,各项配置相对分散,不集中,整合起来相对困难。
  5. 自己三年前写的批处理,能看懂但太费劲吃力了,不好调...还不如重新写。

这算的上是一次旧活新整吧。索性一次软件、配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配置参考:

免费评分

参与人数 7吾爱币 +14 热心值 +7 收起 理由
寒冰流火 + 1 + 1 热心回复!
Courser + 1 + 1 用心讨论,共获提升!
bmwgtr + 1 + 1 我很赞同!
E式丶男孩 + 2 + 1 用心讨论,共获提升!
川姜一男 + 1 + 1 用心讨论,共获提升!
debug_cat + 1 + 1 谢谢@Thanks!
侃遍天下无二人 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| hoochanlon 发表于 2023-2-19 13:42

补充一下吧,今天在思考ssh连接的时候,忽然想到这个网站解析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"

比如SSH的云主机基本在家的网络环境用,不知道公司IP,就可以输入公司的网址,解析成IP,做些加工优化网段加入到ssh登录策略里来。这是种懒人思维。

 楼主| hoochanlon 发表于 2023-2-17 17:09
朔然ゝDendi 发表于 2023-2-17 16:13
# 定义静默安装目录路径
$rawPath = "D:\install\";

我把$softname写死了,自用,没太注意细节。调整一下$rawPath、$softname变量写法就好了。

$softname=$rawPath+$file.name

解释:

  • $rawPath 实际上是给Get-ChildItem -Path获取子项目录用的,通过foreach遍历。

  • $softname 从子项目录中获取到文件名。要想获得整个的完整路径,所以就得加上`$rawPath`,

张道陵 发表于 2023-2-14 16:57
 楼主| hoochanlon 发表于 2023-2-14 17:04
本帖最后由 hoochanlon 于 2023-2-14 17:06 编辑

不客气。反正大家都用的到的。虽然查看及修改IP、DNS有很多种方式,我现在觉得能简单易读易懂,就尽量怎么来吧。保存到装机PE盘里一把梭。
debug_cat 发表于 2023-2-14 17:12
重复的工作让电脑自己做
 楼主| hoochanlon 发表于 2023-2-14 17:16
莫问刀 发表于 2023-2-14 17:12
重复的工作让电脑自己做

其实也是以前刚出来工作,在一家IT外包,然后批量装机,太痛苦了....
paperbox 发表于 2023-2-14 17:37

谢谢分享
dujiu3611 发表于 2023-2-14 18:04
感谢分享,先存个源码,在对比着慢慢试
 楼主| hoochanlon 发表于 2023-2-14 18:16
dujiu3611 发表于 2023-2-14 18:04
感谢分享,先存个源码,在对比着慢慢试

都能跑的,只要不切换目录基本没影响,开个新窗口都可以。信息存档的txt默认是在system32文件下面,所以cmd可以直接输入调用。删除的话就`del ipbak.txt`,我个人是习惯everything的方式。
bmwgtr 发表于 2023-2-14 18:53
感谢大佬分享,正好装系统,已投,收了~
 楼主| hoochanlon 发表于 2023-2-14 19:08
bmwgtr 发表于 2023-2-14 18:53
感谢大佬分享,正好装系统,已投,收了~

谢谢支持;批量自动安装,用的话,注意一下自己的安装选择目录。默认是在下载文件文件夹。

$rawPath = "C:${Env:\HOMEPATH}\Downloads\"

大家也可以看自己需求,改成D盘或其他盘的某个文件夹。如下:

$rawPath = "D:\install\"

文件夹下的软件是一定要有的,不然遍历扫描不到的,自然也就无法安装了。

免费评分

参与人数 1吾爱币 +1 收起 理由
bmwgtr + 1 !谢谢~

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-3 17:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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