powershell 创建winform窗体 T2 : 自动配置相机网卡参数

news/2024/11/14 13:12:46/文章来源:https://www.cnblogs.com/hakula/p/18386589

<# 脚本功能说明:选择要配置的相机网卡,点击配置按键,自动配置参数
# 2024.08.29  
#># 获取管理员权限
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{# 如果没有,提升权限$arguments = "& '" + $script:MyInvocation.MyCommand.Path + "'"Start-Process powershell -Verb runas -ArgumentList $arguments# 退出当前脚本break
}set-ExecutionPolicy RemoteSigned
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$app=[System.Windows.Forms.Application]
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName PresentationFramework
[System.Windows.Forms.Application]::EnableVisualStyles()# 配置网卡参数
Function setNetParam ($adaptname)  
{  
try{
Set-NetAdapterAdvancedProperty -Name $adaptname  -RegistryKeyword "*SpeedDuplex" -RegistryValue 6             
Set-NetAdapterAdvancedProperty -Name $adaptname  -RegistryKeyword "*ReceiveBuffers" -RegistryValue 2048
Set-NetAdapterAdvancedProperty -Name $adaptname  -RegistryKeyword "*TransmitBuffers" -RegistryValue 2048
Set-NetAdapterAdvancedProperty -Name $adaptname  -RegistryKeyword "*JumboPacket" -RegistryValue 9014
Set-NetAdapterAdvancedProperty -Name $adaptname  -RegistryKeyword "ITR" -RegistryValue 3600
#Set-NetAdapterAdvancedProperty -Name $adaptname  -RegistryKeyword "EEELinkAdvertisement" -RegistryValue 0
}
catch{#Throw "Error:" ,$adaptname"an error occured"
}
}# 获取对应网卡的ipv4
Function getipv4($adaptname)
{Write-Information "param",$adaptname$ipv4 = Get-NetAdapter -name $adaptname | Get-NetIPAddress|where-object {$_.IPAddress -like "192.168.*"}|Where-Object {$_.AddressFamily -eq "IPv4"} | Select-Object -ExpandProperty IPAddressreturn $ipv4
}# 取消勾选允许计算机关闭此设备以节省电
Function disablePowerMang($adaptname)
{	try{# $NICs = Get-NetAdapter | Where-Object {$_.status -eq 'Up'}$NICs = Get-NetAdapter | Where-Object {$_.Name -eq $adaptname}Foreach ($NIC in $NICs){$powerMgmt = Get-WmiObject MSPower_DeviceEnable -Namespace root\wmi | where {$_.InstanceName -match [regex]::Escape($nic.PNPDeviceID)}If ($powerMgmt.Enable -eq $True){$powerMgmt.Enable = $False$powerMgmt.psbase.Put()}}}catch{Write-Host $adaptname," power configure exception"}Write-Host $adaptname," 电源管理配置完成"
}$form = New-Object System.Windows.Forms.Form
$form.Text = '相机网卡参数自动配置'
$form.Size = New-Object System.Drawing.Size(700,360)
$form.StartPosition = 'CenterScreen'$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(175,250)
$OKButton.Size = New-Object System.Drawing.Size(75,33)
$OKButton.Text = '配置'
#$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
#$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(250,250)
$CancelButton.Size = New-Object System.Drawing.Size(75,33)
$CancelButton.Text = '退出'
#$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
#$form.CancelButton = $CancelButton
$CancelButton.Add_Click({$form.Close()
})
$form.Controls.Add($CancelButton)$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(680,20)
$label.Text = '使用说明: [-->]:从左侧选择要配置的相机网卡(可多选); [<--]移除右侧选中的网卡。点击[配置] '
$form.Controls.Add($label)$listBox = New-Object System.Windows.Forms.Listbox
$listBox.Location = New-Object System.Drawing.Point(10,40)
$listBox.Size = New-Object System.Drawing.Size(260,200)
$listBox.SelectionMode = 'MultiExtended'$listBoxOK = New-Object System.Windows.Forms.Listbox
$listBoxOK.Location = New-Object System.Drawing.Point(360,40)
$listBoxOK.Size = New-Object System.Drawing.Size(300,120)
$listBoxOK.SelectionMode = 'MultiExtended'$textbox1=new-object System.Windows.Forms.TextBox
$textBox1.Multiline = $true;
$textBox1.Text = ""
$textBox1.Location = New-Object System.Drawing.Point(360,170) 
$textBox1.Size = new-object System.Drawing.Size(300, 100)# 创建按钮
$button = New-Object System.Windows.Forms.Button
$button.Location = New-Object System.Drawing.Point(280,45)  
$button.Size = New-Object System.Drawing.Size(75,23)
$button.Text = "->"$buttonDel = New-Object System.Windows.Forms.Button
$buttonDel.Location = New-Object System.Drawing.Point(280,95)  
$buttonDel.Size = New-Object System.Drawing.Size(75,23)
$buttonDel.Text = "<-"$button1ClickEventHandler = [System.EventHandler] {#[System.Windows.Forms.MessageBox]::Show("Hello world!")foreach ($ad in $listBoxOK.SelectedIndices){Write-Host "remove ",$ad[void] $listBoxOK.Items.RemoveAt($ad)}
}
$buttonDel.Add_Click($button1ClickEventHandler)$ckbox =  New-Object System.Windows.Forms.CheckBox
$ckbox.Location = New-Object System.Drawing.Point(280,125)  
$ckbox.Size = New-Object System.Drawing.Size(75,43)
$ckbox.Text = "完成是否弹窗"
$ckbox.Checked = $false$form.Controls.Add($button)  
$form.Controls.Add($buttonDel)  
$form.controls.Add($ckbox)# 定义按钮的Click事件处理程序
$button.Add_Click({####获取选中的项$selectedItems = $listBox.SelectedItemsforeach ($ad in $selectedItems){if($ad -like "ACS"){continue}## 右侧已经有的不再添加$flagExist = $falseforeach($rightitem in $listBoxOK.Items){if($ad -eq $rightitem){$flagExist = $truebreak}}if($flagExist){continue}[void] $listBoxOK.Items.Add($ad)#$ipv4 = getipv4($ad)#Write-Output $ad,"--->",$ipv4}})$OKButton.Add_Click({
$textBox1.Clear()
if($listBoxOK.items.Count -gt 0)
{$msResult = [System.Windows.Forms.MessageBox]::Show("开始配置网卡,请等待","Confirm","YesNo","Question")switch ($msResult){'yes'{}'No' { return}}$textBox1.Text = "start configure..... `r`n"foreach($ad in $listBoxOK.Items){Write-Output "start update net param :"$adWrite-Host $ad#setNetParam($ad)disablePowerMang($ad)$textBox1.Text += "【"+$ad + "】 ---->设置 成功! `r`n" if($ckbox.Checked){[System.Windows.Forms.MessageBox]::Show("【"+$ad + "】 ---->设置 成功!")}}}
})## 列出所有网卡名称
$adpaters=$(Get-NetAdapter | Select-Object -ExpandProperty Name)# 将网卡加入列表
foreach ($ad in $adpaters)
{if($ad -notlike "ACS"){[void] $listBox.Items.Add($ad)}
}$form.Controls.Add($listBox)
$form.Controls.Add($listBoxOK)
$form.Controls.Add($textBox1)
$form.Topmost = $true$app::Run($form)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/789101.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打造高效门诊经营分析看板,赋能智慧医疗新篇章

在医疗行业日新月异的今天,门诊作为医疗服务的前沿阵地,其运营效率与服务质量直接关系到患者的就医体验与医院的整体竞争力。为了在这场医疗变革中抢占先机,越来越多的医疗机构开始探索并应用数据分析看板。门诊经营分析看板,是一个集数据收集、处理、展示于一体的综合信息…

lua的update、lateupdate

lua框架里面会封装,想用C#的Update,直接往里面塞事件:

使用 nuxi analyze 命令分析 Nuxt 应用的生产包

title: 使用 nuxi analyze 命令分析 Nuxt 应用的生产包 date: 2024/8/29 updated: 2024/8/29 author: cmdragon excerpt: 使用 nuxi analyze 命令可以帮助你深入了解生产包的结构和大小,从而做出针对性的优化。通过定期分析生产包,你可以识别并解决性能瓶颈,提高应用的加载…

风控系统之事件溯源,决策流程记录与版本控制

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview背景 一天,小明在风控管理台查看事件数据时,发现一笔决策结果为“拒绝”❌的交易事件,小明点开事件详情发现其触发了一条“24小时内向不同陌生账户转账超过30w”的规则,…

解密华为问界M7 Pro:智能出行的全新里程碑与技术亮点

华为问界M7 Pro为何备受瞩目?这款智能SUV究竟能为出行体验带来怎样的颠覆?智能座舱如何将科技与舒适完美结合,自动驾驶技术又将如何引领未来出行?通过鸿蒙生态的无缝联动,华为能否能够真正改变我们的生活方式?在这篇文章中,深入探讨这些问题,揭示华为在智能出行领域的全…

【ROS教程】服务通信

@目录1.流程2.自定义请求和响应的数据2.1 std_msgs内置类型2.2 编写.srv文件2.3 修改package.xml文件2.4 修改CMakeLists.txt文件2.4.1 修改find_package指令2.4.2 添加add_message_files指令2.4.3 添加generate_messages指令2.5 查看头文件3.编写cpp文件3.1 功能包目录文件树3…

NocoBase 1.3:REST API 数据源、移动端 V2 和更多功能

NocoBase 1.3 带来了 REST API 和 MSSQL 数据源、支持通过 URL 打开弹窗、动态配置字段组件、增强的移动端版本、企业微信认证、多对多数组、以及工作流中的日期计算节点等多项新功能。从 v1.3 开始,NocoBase 提供两个关键分支:main 和 next。main 分支,beta 版本,专注于缺…

ArgoWorkflow教程(三)---使用 Artifacts 实现步骤间文件共享

上一篇我们分析了 Workflow、WorkflowTemplate、template 之间的关系。本篇主要分析如何在 argo-workflow 中使用 S3 存储 artifact 实现步骤之间的文件共享。上一篇我们分析了 Workflow、WorkflowTemplate、template 之间的关系。本篇主要分析如何在 argo-workflow 中使用 S3 …

错误处理、cuda模型、GPU架构杂谈

错误处理、cuda模型、GPU架构杂谈 错误处理 所有编程都需要对错误进行处理,早起的编码错误,编译器会帮搞定,内存错误也能观察出来,但是有些逻辑错误很难发现,甚至到了上线运行时才会被发现,而且有些厉害的bug复现会很难,不总出现,但是很致命,而且CUDA基本都是异步执行…

【日记】已经在开始幻想明年的年度计划了(498 字)

正文看来每次都是准备迎检的时候忙很多,但检查来的时候反倒还好一点。今天比昨天好上一些,没有那么忙了。感觉不去跳舞的 8 月,运动量下降了好多,膝盖经常响。只要半月板没事就好…… 前几天高配速的酸痛好像彻底消失了。今晚想去看看舞蹈室开门没有,如果没有的话就去买巧…