未硬编码目录时Bat文件无法启动PowerShell脚本的问题求助
解决Bat脚本管理员权限启动PowerShell及可变目录适配问题
修改后的Bat脚本(Start.bat)
解决硬编码路径和权限问题,自动适配当前脚本所在目录:
@echo off set "SCRIPT_PATH=%~dp0StartNew.ps1" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%SCRIPT_PATH%""' -Verb RunAs}"
关键改动说明
%~dp0:自动获取当前Bat脚本所在的绝对路径,彻底解决跨机器路径适配问题ExecutionPolicy Bypass:临时放宽执行策略,避免安全拦截且无需用户确认-Verb RunAs:强制以管理员权限启动新的PowerShell窗口
配套PowerShell脚本(StartNew.ps1)
实现Chocolatey与Winget的无交互自动安装:
# 配置执行策略与TLS协议,确保安装顺利 Set-ExecutionPolicy Bypass -Scope Process -Force [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 # 无交互安装Chocolatey iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) # 通过Chocolatey无交互安装Winget choco install winget -y --force # 安装完成提示 Write-Host "Chocolatey和Winget已完成自动安装" -ForegroundColor Green
安装逻辑说明
-y参数自动确认所有安装提示,全程无需用户输入--force确保即使Winget已存在也能完成部署(可选,按需保留)- 配置TLS 1.2协议,避免下载时的安全连接问题
注意事项
- 两个脚本需放在同一文件夹下运行
- 首次运行会触发系统UAC管理员权限确认(系统安全机制,无法绕过)
- 需保证机器处于联网状态,才能下载安装包
内容的提问来源于stack exchange,提问作者CreaGab
相关产品推荐
相关产品推荐

