我编写了一个脚本,只需运行批处理文件即可在通过Wi-Fi或有线Internet连接计算机之间切换.我这样写是因为我不想每次输入我的用户名和密码来切换两者.
注意:我必须启用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
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果以管理员身份运行,此脚本只能正常运行,因此我编写它的全部原因都没有实际意义.有没有办法让我可以提升管理员权限而无需我做任何事情?
您可以启动一个新的,提升的PowerShell流程来运行您的脚本,例如:
Start-Process PowerShell -verb runas -ArgumentList '-noexit','-File','path-to-script'
Run Code Online (Sandbox Code Playgroud)
如果您不希望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'
Run Code Online (Sandbox Code Playgroud)
您可以使用批处理 (.bat) 文件和任务计划程序来执行此操作。
首先,您必须在 PowerShell .ps1 文件所在的同一文件夹中创建一个批处理文件(可以使用记事本),其中包含以下内容:
@ECHO OFF
SET ThisScriptsDirectory=%~dp0
SET PowerShellScriptPath=%ThisScriptsDirectory%PutTheNameOfYourPowerShellScriptHere.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPath%""' -Verb RunAs}";
Run Code Online (Sandbox Code Playgroud)
打开任务计划程序并单击左侧窗格中的任务计划程序库。然后,右键单击“任务计划程序库”并选择“创建任务”(这将打开一个窗口)。为您的任务命名并检查是否选择了以最高权限运行。然后,单击“操作”选项卡并单击“新建”(这将打开一个窗口)。验证所选操作是否为启动程序,然后单击浏览以选择批处理文件。在两个窗口上单击“确定”,您应该回到“任务计划程序”主窗口。您应该在列表顶部看到新创建的任务,因此右键单击它并选择“运行”。您应该看到您的 PowerShell 脚本以完全管理员权限运行,并且没有任何 UAC 提示。
现在,如果您想定期运行 PowerShell 脚本,您可以通过右键单击新创建的任务,选择Properties,单击Triggers选项卡,然后单击New来自定义该脚本。
但是,如果您希望通过双击快捷方式文件来运行 PowerShell 脚本,则必须执行一些额外的步骤。右键单击桌面并选择新建 > 快捷方式,然后输入以下位置:
C:\Windows\System32\schtasks.exe /run /tn "PutTheNameOfYourNewlyCreatedTaskHere"
Run Code Online (Sandbox Code Playgroud)
单击“下一步”,为快捷方式命名,然后单击“完成”。您应该尝试打开快捷方式并查看 PowerShell 脚本是否按您想要的方式运行。
就这些。
额外奖励:如果您想通过按某个键或组合键来运行 PowerShell 脚本,您还可以右键单击您的快捷方式,然后在“快捷键:”字段中输入您想要的内容。但是,如果它不允许您输入特定的按键或按键组合,您还可以安装Microsoft 的PowerToys并使用其键盘管理器实用程序重新映射按键或按键组合。例如。您可以在快捷键:字段中输入F8,然后将其重新映射到您很少使用的键,例如大多数键盘上的计算器键。
如果您在遵循本指南时遇到任何问题,请告诉我。
| 归档时间: |
|
| 查看次数: |
37735 次 |
| 最近记录: |