4

バッチ ファイルを実行するだけで、コンピューターを Wi-Fi または有線インターネット経由で接続するように切り替えるスクリプトを作成しました。これを書いたのは、毎回ユーザー名とパスワードを入力して 2 つを切り替える必要があるのが好きではないからです。

注: UAC を有効にする必要があるため、残念ながら無効にすることはできません。

ワイヤレス アダプタのステータスを確認します。現在有効になっている場合は、ワイヤレス アダプターがオフになり、有線アダプターが有効になります。ワイヤレスが有効になっていない場合は、有線が有効になり、無効になります。これがコードです。

$adapter = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Where-Object {$_.ServiceName -ne "hamachi"}
function wirelessOn
{
    $wireless = Get-WmiObject -Class Win32_NetworkAdapter | Where-Object {$_.Name -like "*Wireless*"}
    $wireless.Disable()
    $wired = Get-WmiObject -Class Win32_NetworkAdapter | Where-Object {$_.Name -like "*gigabit*"}
    $wired.Enable()
}

function wirelessOff
{
    $wired = Get-WmiObject -Class Win32_NetworkAdapter | Where-Object {$_.Name -like "*gigabit*"}
    $wired.Disable()
    $wireless = Get-WmiObject -Class Win32_NetworkAdapter | Where-Object {$_.Name -like "*Wireless*"}
    $wireless.Enable()
}

switch -wildcard ($adapter.description){
    "*wireless*" {
        wirelessOn
    }
    "*gigabit*" {
        wirelessOff
    }
}

残念ながら、このスクリプトは管理者として実行した場合にのみ正しく機能するため、私がこのスクリプトを作成した理由はまったく意味がありません。何もしなくても、これを管理者権限に昇格させる方法はありますか?

4

2 に答える 2

12

新しい昇格されたPowerShellプロセスを開始して、スクリプトを実行できます。例:

Start-Process PowerShell -verb runas -ArgumentList '-noexit','-File','path-to-script'

PowerShellウィンドウを動かしたくない場合は、それを取り除き'-noexit'ますが、スクリプトの起動をデバッグする場合に便利です。

管理者アカウントのユーザー名/パスワードにアクセスできる場合は、次のように実行できます。

# Capture encrypted password once and store to file
$passwd = Read-Host "Enter password" -AsSecureString
$encpwd = ConvertFrom-SecureString $passwd
$encpwd > $path\password.bin

# Afterwards always use this to start the script
$encpwd = Get-Content $path\password.bin
$passwd = ConvertTo-SecureString $encpwd
$cred = new-object System.Management.Automation.PSCredential 'domain\username',$passwd
Start-Process PowerShell -Cred $cred -ArgumentList '-noexit','-File','path-to-script'   
于 2012-10-02T16:34:01.853 に答える