{"id":483,"date":"2024-03-25T16:22:52","date_gmt":"2024-03-25T08:22:52","guid":{"rendered":"https:\/\/www.keioi.cn\/?p=483"},"modified":"2024-03-25T16:24:23","modified_gmt":"2024-03-25T08:24:23","slug":"powershell%e8%84%9a%e6%9c%ac%e8%ae%be%e7%bd%ae%e8%87%aa%e5%8a%a8%e8%8e%b7%e5%8f%96%e6%88%96%e8%80%85%e9%9d%99%e6%80%81ip","status":"publish","type":"post","link":"https:\/\/www.keioi.cn\/archives\/483","title":{"rendered":"powershell\u811a\u672c\u8bbe\u7f6e\u81ea\u52a8\u83b7\u53d6\u6216\u8005\u9759\u6001IP"},"content":{"rendered":"\n<p>\u4ee3\u7801\u5982\u4e0b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u67e5\u770b\u6743\u9650 \r\n#Get-ExecutionPolicy\r\n# \u65e0\u6267\u884c\u6743\u9650:Restricted\r\n#Set-ExecutionPolicy Restricted\r\n#\u5f00\u542fpowershell\u6267\u884c\u6743\u9650\r\n#Set-ExecutionPolicy remotesigned \r\n \r\n \r\n######\r\nfunction judge-IsAdmin {\r\n    return (&#91;Security.Principal.WindowsPrincipal] &#91;Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(\r\n            &#91;Security.Principal.WindowsBuiltInRole] \"Administrator\")\r\n}\r\nif (!(judge-IsAdmin)) {\r\n   Write-Host \"\u4efb\u610f\u952e\u7ee7\u7eed\u4e0b\u4e00\u6b65,\u70b9\u662f,\u4f1a\u7ba1\u7406\u8eab\u4efd\u8fd0\u884cpowershell\u7a97,\u82e5\u95ea\u9000,\u8bf7\u5f00\u542f\u6267\u884c\u7b56\u7565(Set-ExecutionPolicy remotesigned)\"\r\n   Write-Host \"\u4e0b\u4e00\u6b65\u540c\u65f6\u4f1a\u751f\u6210\u76f8\u540c\u529f\u80fd\u7684\u6279\u5904\u7406setmyip.cmd,\u82e5\u4e0d\u4f1a\u5f00\u542fpowershell\u6267\u884c\u7b56\u7565\u53ef\u4ee5\u7528\u6279\u5904\u7406\"\r\n   cmd \/c pause\r\n}\r\n \r\n######\r\nfunction Generate-cmds(){\r\n$cmdContent = @\"\r\n@echo off\r\nif not exist netinf.txt (\r\necho 192.168.10.113 > netinf.txt\r\necho 255.255.240.0 >> netinf.txt\r\necho 192.168.0.250 >> netinf.txt\r\necho 202.96.128.86 >> netinf.txt\r\necho 202.96.128.166 >> netinf.txt\r\n)\r\ngoto mychoces\r\n:mychoces\r\nnetsh interface ipv4 show config\r\necho \"\u4fee\u6539netinf.txt\u6587\u4ef6\u4e3a\u8981\u8bbe\u7684IP\u4fe1\u606f\"\r\nset \/p name=\"\u8bbe\u7f6e\u63a5\u53e3\u7684\u540d\u5b57:\"\r\nset \/p chosse=\"\u8bbe\u7f6e\u81ea\u52a8\u83b7\u53d6\/\u9759\u6001IP(Y\/N):\"\r\nif \"%chosse%\"==\"y\" (goto autoip )\r\nif \"%chosse%\"==\"Y\" (goto autoip )\r\nif \"%chosse%\"==\"N\" (goto setmyip )\r\nif \"%chosse%\"==\"n\" (goto setmyip )\r\ngoto mychoces\r\n:autoip\r\nnetsh interface ip set address name=%name% source=dhcp\r\nnetsh interface ip set dns name=%name% source=dhcp\r\ngoto mychoces\r\n:setmyip\r\nsetlocal enabledelayedexpansion\r\nset dp=%~dp0\r\nset \"filename=netinf.txt\"\r\nset \"index=0\"\r\nfor \/F \"tokens=*\" %%L in (%dp%%filename%) do (\r\n    set \"line&#91;!index!]=%%~L\"\r\n    set \/A index+=1 \r\n)\r\n \r\nnetsh interface ipv4 set address name=%name% static !line&#91;0]! !line&#91;1]! !line&#91;2]!\r\nnetsh interface ipv4 set dns name=%name% static !line&#91;3]! primary\r\nnetsh interface ipv4 add dns name=%name% !line&#91;4]! index=2\r\nendlocal\r\ngoto mychoces\r\n \r\n\"@\r\n$cmdFileName = \"setmyip.cmd\"\r\nSet-Content -Path $cmdFileName -Value $cmdContent  \r\nWrite-Host \"\u5df2\u751f\u6210\u76f8\u540c\u529f\u80fd\u7684\u6279\u5904\u7406$($cmdFileName)\"\r\n \r\n}\r\n#####\r\n \r\n###\r\n$hascommand = Get-Command -Name \"Get-CimInstance\" -ErrorAction SilentlyContinue\r\nif(!$hascommand){\r\nWrite-Host \"powershell\u7248\u672c\u592a\u4f4e\"\r\nGenerate-cmds\r\ncmd \/c pause | out-null  \r\nexit\r\n}else{\r\n####\r\nGenerate-cmds\r\n \r\n#\r\n#Start-Process cmd -ArgumentList \"\/k\", $cnds\r\n}\r\n#####\r\n \r\n$filePath =\"netinf.txt\"\r\n \r\nif (!(Test-Path -Path $filePath)){\r\n$intlines = @(\"192.168.10.110\", \"255.255.240.0\", \"192.168.0.250\",\"202.96.128.86\",\"202.96.128.166\") \r\nforeach ($iline in $intlines) {\r\n    Add-Content -Value $iline -Path $filePath \r\n}\r\n}\r\n \r\n$p1=(Get-Location).path\r\n$fip=Join-Path -Path $p1 -ChildPath \"setip.ps1\"\r\n \r\n  \r\nif (-not (judge-IsAdmin)) {\r\n    # \u5982\u679c\u4e0d\u662f\u7ba1\u7406\u5458\uff0c\u5219\u4ee5\u7ba1\u7406\u5458\u6743\u9650\u91cd\u65b0\u542f\u52a8\u5f53\u524d\u811a\u672c\r\n    Start-Process PowerShell -Verb RunAs -ArgumentList (\"-noprofile -file `\"{0}`\"\" -f ($myinvocation.MyCommand.Definition)) \r\n    exit\r\n}\r\n \r\nFunction Convert-MaskToCIDR {\r\n    param (\r\n        &#91;Parameter(Mandatory = $true)]\r\n        &#91;IPAddress] $SubnetMask\r\n    )\r\n \r\n    &#91;String] $binaryString = @()\r\n    $SubnetMask.GetAddressBytes() | ForEach-Object { $binaryString += &#91;Convert]::ToString($_, 2) }\r\n \r\n    Return $binaryString.TrimEnd('0').Length\r\n}\r\n \r\n$q=\"\"\r\n#$aa=@()\r\nwhile ($q -ne \"Q\"){\r\n \r\n$ips=Get-CimInstance -Class Win32_NetworkAdapterConfiguration\r\n \r\nforeach($ip in $ips){\r\nif($ip.IPAddress){\r\nWrite-Host \"Description:$($ip.Description) \"\r\nWrite-Host \"InterfaceIndex:$($ip.InterfaceIndex) \"\r\nWrite-Host \"DHCP:$($ip.DHCPEnabled) \"\r\nWrite-Host \"IP:$($ip.IPAddress) \"\r\nWrite-Host \"Gateway:$($ip.DefaultIPGateway) \"\r\nWrite-Host \"IPSubnet:$($ip.IPSubnet)  \"\r\nWrite-Host \"DNS:$($ip.DNSServerSearchOrder) \"\r\nWrite-Host \"---------------------------------------\"\r\n#$aa.add(@{\"index\"=$ip.InterfaceIndex,\"dhcp\"=$ip.DHCPEnabled})\r\n}\r\n }\r\n   \r\n \r\n \r\nWrite-Host \"\u4fee\u6539IP\u914d\u7f6e\u6587\u4ef6netinf.txt\u4e3a\u8981\u8bbe\u7f6e\u7684IP\u4fe1\u606f\"\r\n \r\n$userindex=Read-Host \"\u8981\u914d\u7f6e\u7684\u9009\u9879InterfaceIndex\uff1a\"\r\n$isdhcp=Read-Host \"(Y\/N)\u81ea\u52a8\u83b7\u53d6\/\u9759\u6001IP\uff1a\"\r\nif($isdhcp -eq \"Y\")\r\n{\r\n$ne=Get-NetIPInterface -InterfaceIndex $userindex\r\nif($ne.dhcp&#91;1] -eq \"Disabled\"){\r\n  \r\nRemove-NetIPAddress -InterfaceIndex $userindex  -Confirm:$false\r\nRemove-NetRoute -InterfaceIndex $userindex  -Confirm:$false 2>$null\r\nSet-NetIPInterface -InterfaceIndex $userindex -Dhcp Enabled\r\nSet-DnsClientServerAddress -InterfaceIndex $userindex -ResetServerAddresses\r\n#Invoke-Expression \"ipconfig \/renew\"\r\n$ne1=Get-NetIPInterface -InterfaceIndex $userindex\r\nWrite-Host \"DHCP:$($ne1.dhcp&#91;1])\"\r\nGet-NetIPConfiguration -Verbose -InterfaceIndex $userindex\r\n}else{\r\nWrite-Host \"\u5df2\u7ecf\u662f\u81ea\u52a8\u83b7\u53d6\"\r\n}\r\n}\r\nif($isdhcp -eq \"N\")\r\n{\r\n$p2=Split-Path -Parent $MyInvocation.MyCommand.Definition\r\n$finf=Join-Path -Path $p2 -ChildPath $filePath\r\n#Write-Host $finf\r\n$lines = Get-Content -Path $finf\r\n#Write-Host $lines\r\n#Get-NetIPAddress -InterfaceIndex $userindex | Remove-NetIPAddress\r\nRemove-NetIPAddress -InterfaceIndex $userindex  -Confirm:$false\r\nRemove-NetRoute -InterfaceIndex $userindex  -Confirm:$false 2>$null\r\n$plen=Convert-MaskToCIDR $lines&#91;1]\r\nNew-NetIPAddress -InterfaceIndex $userindex -IPAddress $lines&#91;0] -AddressFamily IPv4 -PrefixLength $plen -DefaultGateway $lines&#91;2] >$null\r\n \r\nSet-DnsClientServerAddress -InterfaceIndex $userindex -ServerAddresses $lines&#91;3,4]\r\nGet-NetIPConfiguration -Verbose -InterfaceIndex $userindex\r\n}\r\n \r\n$q=Read-Host \"\u8f93\u5165Q\u9000\u51fa\"\r\n \r\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4ee3\u7801\u5982\u4e0b<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,15],"tags":[],"class_list":["post-483","post","type-post","status-publish","format-standard","hentry","category-4","category-15"],"_links":{"self":[{"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/posts\/483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/comments?post=483"}],"version-history":[{"count":3,"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/posts\/483\/revisions"}],"predecessor-version":[{"id":486,"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/posts\/483\/revisions\/486"}],"wp:attachment":[{"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/media?parent=483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/categories?post=483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.keioi.cn\/api\/wp\/v2\/tags?post=483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}