编写双击运行的PowerShell脚本,以其他用户身份执行指定.ps1文件
PowerShell脚本以其他账户执行指定脚本的修正方案
核心问题修正
你原代码里的Start-Process参数顺序确实存在问题:-File是powershell.exe的启动参数,而非Start-Process的参数,必须通过Start-Process的-ArgumentList参数传递给powershell.exe;而-Credential是Start-Process本身的参数,要放在正确的位置。
修正后的完整代码:
$username = 'domain\username' # 建议加上域名或计算机名,格式如DOMAIN\User或PCName\User $password = 'yourPassword' $scriptPath = '\\path\to\file\script.ps1' # 转换密码为安全字符串 $securePassword = ConvertTo-SecureString $password -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword) # 正确调用Start-Process:-Credential是Start-Process的参数,powershell的参数放在-ArgumentList里 Start-Process powershell.exe -ArgumentList "-File `"$scriptPath`"" -Credential $credential -NoNewWindow # -NoNewWindow可选,不弹出新窗口
关键细节说明
- 用户名建议带上域名或计算机名,避免在域环境下出现身份识别错误
- 明文写入密码存在安全风险,如果允许交互,建议替换为
$credential = Get-Credential,让用户手动输入账户信息,避免密码泄露 - 如果脚本路径包含空格,必须用双引号包裹路径(代码里的
"$scriptPath"就是为了处理这种情况)
满足定期运行、双击启动的配置
双击启动
- 将修正后的代码保存为
.ps1文件 - 若直接双击无法运行,右键选择「用PowerShell运行」;或者创建快捷方式,目标设置为:
(powershell.exe -ExecutionPolicy Bypass -File "C:\path\to\your\launcher.ps1"-ExecutionPolicy Bypass临时绕过执行策略限制,适合测试或信任的脚本)
定期运行
使用Windows任务计划程序配置:
- 创建基本任务,设置触发时间(每日/每周等)
- 操作选择「启动程序」,程序/脚本填
powershell.exe - 添加参数填:
-ExecutionPolicy Bypass -File "C:\path\to\your\launcher.ps1" - 在「常规」选项卡勾选「不管用户是否登录都要运行」,并在「设置」里配置合适的权限
内容的提问来源于stack exchange,提问作者user695752
相关产品推荐
相关产品推荐

