質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

2回答

962閲覧

Powershellで実行させてIPの自動取得とDNSの自動取得に有効にチェックをつけたい

takokaina

総合スコア8

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

1クリップ

投稿2024/07/05 07:30

編集2024/07/10 05:00

実現したいこと

IPの自動取得とDNSの自動取得にチェックをつけたい
現在は固定IPの削除は固定DNSの削除はできており
以下のようにチェックが外れない

イメージ説明

前提

これまでは毎朝、スタートアップのフォルダに入れてWi-Fiアダプターに固定のIPを入れて毎朝つないで
いたのですが、方針が切り替わって、画面右隅のアクションセンター
イメージ説明
からの切り替えで、無線の切り替えを行うことになりました。

発生している問題・エラーメッセージ

ネットから拾ってきたスクリプトを現在動いているスクリプトに統合して動かかそうと簡単に考えていましたが、5~4個ほどのDHPC設定ができるというスクリプトをくっつけたが、
結果は上記の写真の通り。

今朝も手動で
netsh interface ip set address "Wi-Fi" dhcp
netsh interface ip set dnsservers "Wi-Fi" dhcp
を実施するも

リンク内容

イメージ説明

いましがた
https://atmarkit.itmedia.co.jp/ait/articles/0705/25/news145.html
この記事を読んで、
ipconfig /release
ipconfig /renew
を実行したのち手動で
netsh interface ipv4 set add name="Wi-Fi" source=dhcp
netsh interface ipv4 set dnsservers name="wi-Fi" source=dhcp
はうまくとおりました。

これはいったん開放してからでないと、
だめという決まりがあるのでしょうか?

該当のソースコード

startup.powershell

1<# : 2@echo off 3openfiles >nul 2>&1 4if errorlevel 1 ( 5 powershell start-process "'%~f0'" -verb runas 6 goto :EOF 7) 8powershell -noprofile -command "invoke-expression (get-content '%~f0' -raw)" 9goto :EOF 10#> 11 12 13# 以下 powershell スクリプト 14$adapter = Get-NetAdapter | Where-Object {$_.InterfaceAlias -eq "Wi-Fi"} 15 16 17# アダプターのコンフィグを取得 18$conf = $adapter | Get-NetIPConfiguration 19 20# IPアドレスが設定されている場合 21If ($conf.IPv4Address.IPAddress) { 22 23 # その設定を削除する 24 $adapter | Remove-NetIPAddress -AddressFamily "IPv4" -Confirm:$false 25} 26 27# デフォルトゲートウェイが設定されている場合 28If ($conf.Ipv4DefaultGateway) { 29 30 # その設定を削除する 31 $adapter | Remove-NetRoute -AddressFamily "IPv4" -Confirm:$false 32} 33 34# 以下が追加した 35 36$IPType = "IPv4" 37$adapter = Get-NetAdapter | ? {$_.Status -eq "up"} 38$interface = $adapter | Get-NetIPInterface -AddressFamily $IPType 39If ($interface.Dhcp -eq "Disabled") { 40 # Remove existing gateway 41 If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) { 42 $interface | Remove-NetRoute -Confirm:$false 43 } 44 # Enable DHCP 45 $interface | Set-NetIPInterface -DHCP Enabled 46 # Configure the DNS Servers automatically 47 $interface | Set-DnsClientServerAddress -ResetServerAddresses 48} 49

試したこと

DHCPと表題に書いてあるものを張り付けて試しましたが、
アダプターのプロパティ IPv4で確認すると
空欄になっているだけで、IPもDNSも自動取得にチェックがはいっていませんでした。

どのように修正すればうまくチェックが付くのでしょうか?

それとも僕だけの問題なのか
Windowsのバージョンアップの際のエラーなのか?

補足情報(FW/ツールのバージョンなど)

$IPType = "IPv4"  $IPTypeに"IPv4"を代入

$adapter = Get-NetAdapter | ? {$_.Status -eq "up"} 今 up=接続しているネットワークアダプターを$adapterで取得

$interface = $adapter | Get-NetIPInterface -AddressFamily $IPType
今立ち接続しているネットワークの情報が入った$adapterの情報でIPv4のネットワークのものを$interfaceへ代入

If ($interface.Dhcp -eq "Disabled") {

Remove existing gateway

If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) {
$interface | Remove-NetRoute -Confirm:$false
インターフェースのdhcpが利用不可ならーーーー
IPv4のデフォルトゲートウェイの値をとれ

Enable DHCP

$interface | Set-NetIPInterface -DHCP Enabled
DHCPを利用可能にチェックをつける

Configure the DNS Servers automatically

$interface | Set-DnsClientServerAddress -ResetServerAddresses
DNSも自動取得にする

くらいのレベルでcodeは読めていると思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takokaina

2024/07/08 06:30

ダメでした。 次のアドレスを使うラジオボタンがちぇっくされていて 空白のIPアドレスとサブネットマスクとドフォルトゲートウェイ 次のDNSサーバアドレスを使うチェックで 空白行でした。
takokaina

2024/07/08 06:30

うまくいかないものなのでしょうか?
guest

回答2

0

再度、質問を変更してあげます

投稿2024/07/11 02:33

takokaina

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

再挑戦。以下をPowerShellの管理者権限で実行し再起動してみてください。

PowerShell

1# 管理者権限の確認と昇格 2if (!([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) 3{ 4 $arguments = "& '" + $myInvocation.MyCommand.Definition + "'" 5 Start-Process powershell -Verb runas -ArgumentList $arguments 6 Exit 7} 8 9# ネットワークアダプタの取得 10$wifiAdapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -match "Wi-Fi"} 11$ethernetAdapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -match "Ethernet"} 12 13# Wi-Fiアダプタの確認 14if ($wifiAdapter) { 15 Write-Output "Wi-Fi adapter found: $($wifiAdapter.Name)" 16 # DHCPと自動DNS取得を有効化 17 $wifiAdapter | Set-NetIPInterface -DHCP Enabled 18 $wifiAdapter | Set-DnsClientServerAddress -ResetServerAddresses 19 Write-Output "DHCP and DNS set to automatic for Wi-Fi" 20} elseif ($ethernetAdapter) { 21 Write-Output "Wi-Fi adapter not found. Ethernet adapter found: $($ethernetAdapter.Name)" 22 # DHCPと自動DNS取得を有効化 23 $ethernetAdapter | Set-NetIPInterface -DHCP Enabled 24 $ethernetAdapter | Set-DnsClientServerAddress -ResetServerAddresses 25 Write-Output "DHCP and DNS set to automatic for Ethernet" 26} else { 27 Write-Error "No Wi-Fi or Ethernet adapter found" 28} 29

一応、wifiとイーサネット両方に対応しましたが、どちらでしょうか?

投稿2024/07/05 10:02

編集2024/07/08 10:19
mike2mike4

総合スコア935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takokaina

2024/07/07 23:28 編集

回答ありがとうございます。試してみましたが解決できませんでした。 そのまま張り付けて、動かしてみましたが 自動取得にチェックはついていねいようでした。
takokaina

2024/07/08 08:41

実行後に再起動してもダメでした。 うまくいかないでのでしょうか?
takokaina

2024/07/08 08:42

それか実は有効なコマンドなのに何かほかのことが原因でうまくいかないのか。 いくつか試したが、動かない数字が入ったまま、コマンドレットを買いたい方がいいのだろうか?
takokaina

2024/07/09 03:22

それか実は有効なコマンドなのに何かほかのことが原因でうまくいかないのか。 いくつか試したが、動かない数字が入ったまま、コマンドレットを買いたい方がいいのだろうか?
takokaina

2024/07/09 03:25

スタートアップのフォルダにいkれて起動時自動実行させてます。 powershellは自動実行はできないので、コマンドプロンプトの管理者権限で立ち上げて、 さらにpowershellを立ち上げています。 最初の前半部分ははずせないしようになっております。 Wi-Fiで設定します
mike2mike4

2024/07/09 03:50

前半はこのコードの前に置けば良いのでは? タスクスケジューラを使用する方法: タスクスケジューラを開く: 「スタート」メニューを開き、「タスクスケジューラ」と検索し、タスクスケジューラを開きます。 新しいタスクの作成: タスクスケジューラライブラリの中で右クリックし、「タスクの作成」を選択します。 「全般」タブで、タスクに名前を付けます。 「セキュリティオプション」で、「ユーザーがログオンしているかどうかにかかわらず実行する」を選び、「最上の特権で実行する」にチェックを入れます。 トリガーの設定: 「トリガー」タブで、「新規」をクリックし、「タスクの開始」から「コンピュータの起動時」を選択します。 操作の設定: 「操作」タブで、「新規」をクリックし、「操作」から「プログラムの開始」を選択します。 「プログラム/スクリプト」フィールドに powershell と入力し、「引数の追加」に実行したいスクリプトのパスを指定します(例: -File "C:\Path\To\YourScript.ps1")。
takokaina

2024/07/09 04:06

これをメモ帳に張り付けてbatファイルで動かしましたけど、固定IPのままいうまく切り替わりません。
takokaina

2024/07/09 06:48

それもやっているんですが、どうも違う気がします。 手動で管理者で $wifiAdapter | Set-NetIPInterface -DHCP Enabled $wifiAdapter | Set-DnsClientServerAddress -ResetServerAddresses これだけ動かしてもうまくDHCPになっていないです。
mike2mike4

2024/07/09 12:32

私の環境では正常に動きました(Windows11pro) batファイルではありません、PowerShellスクリプトです。バッチファイルと分けて起動してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問