不确定我是否过于复杂,我只想以本地管理员身份调用另一个脚本并运行它。
下面的命令打开powershell,在新窗口中出现错误,然后窗口关闭得太快,我无法看到它。
start powershell -verb runas -ArgumentList {Invoke-Expression -Command "C:\Script.ps1"}
答案 0 :(得分:1)
如果要保留本机Powershell,请使用start-process cmdlet,并且可以将文件路径(要运行的进程)指定为powershell.exe,并将-ArgumentList参数指定为新会话的条件。在下面的示例中,我设置了ExecutionPolicy,因此您不必依赖系统级策略,NoProfile通过不在系统上加载任何自定义的配置文件来使脚本更有弹性。
$Cred = (Get-Credential)
$ScriptLocation = "C:\Temp\TestScript.ps1"
Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File $ScriptLocation" -Credential $Cred
您可以在脚本中看到一个凭证对象(您可能希望提供该凭证对象,以便脚本可以运行),然后指定脚本位置并执行。
如vonPryz所述,您始终可以通过在参数列表中添加-NoExit来进行故障排除,以便在执行脚本后窗口保持打开状态,但是请记住,如果脚本位置不存在,您仍然会看到Powershell主机出现并立即关闭。
还可以将-WindowStyle Hidden添加到参数列表中,以完全隐藏任何窗口。
答案 1 :(得分:0)
原来是执行策略问题。这是我们环境中的非标准设备,并且没有GPO推送。