定制的wes7操作系统,启动后首次连入网络,会出现如下对话框。怎样默认设置选择一个默认的网络位置呢?
解决方法:
执行powershell脚本setnetworklocation.ps1 ,即可将所有网络接口归为工作网络,脚本如下:
$networkListManager = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]"{DCB00C01-570F-4A9B-8D69-199FDBA5723B}"))
$connections = $networkListManager.GetNetworkConnections()
$connections | % {$_.GetNetwork().SetCategory(1)}
如果把最后一行里SetCategory(1)改成SetCategory(0)则是全归为公用网络。
为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设为受限的(Restricted),这意味着PowerShell脚本无法执行,此时可以使用下面的cmdlet命令确定当前的执行策略:
Get-ExecutionPolicy 你可以选择使用的执行策略有:
Restricted - 脚本不能运行。 RemoteSigned - 本地创建的脚本可以运行,但从网上下载的脚本不能运行(除非它们拥有由受信任的发布者签署的数字签名)。 AllSigned – 仅当脚本由受信任的发布者签名才能运行。 Unrestricted – 脚本执行不受限制,不管来自哪里,也不管它们是否有签名。
可以用批处理设置权限,批处理内容如下:
@echo off
:STR
REG add hklm\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /t REG_SZ /d remotesigned /F
for /f "delims=" %%a in ('REG QUERY hklm\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy') do set test=%%a
::从注册表中获得ExcutionPolicy的权限键值
set test1=%test:~33%
::截取最后值的内容
echo %test1% | findstr "Restricted" >nul 2>nul
if !errorlevel! equ 0 (
echo 当前系统未开启PowerShell脚本,将修改注册表开启脚本支持
powershell set-executionpolicy remotesigned
) else (
echo %test1% | findstr "RemoteSigned" >nul 2>nul
if !errorlevel! equ 0 (
echo 当前系统ExecutePolicy状态为: %test1%
echo 尝试强制设定为RemoteSigned
:powershell set-executionpolicy remotesigned
: pause
goto STR
) else (
echo 当前系统ExecutePolicy状态为: %test1%
echo 该状态已经开启本地脚本执行支持,开启PS脚本
goto SPS
)
)
:SPS
powershell "D:\setnetworklocation.ps1"