powershell - 为什么 PowerShell 在“Get-Credentials”上意外退出?
问题描述
我正在运行一个 PowerShell gui 脚本,我需要隐藏加载它的批处理脚本。(这使我的团队更容易加载它。)
批处理脚本:
@ECHO OFF
pushd "NETWORK SHARE"
PowerShell.exe -ExecutionPolicy unrestricted -WindowStyle hidden -NoProfile -file .\FileName.ps1
popd
我已经通过以下方式允许弹出窗口进入:
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName PresentationFramework
但是以下行会导致 PowerShell 脚本冻结并意外退出。
$mycredentials = Get-Credential # This is necessary as some people may not use their admin accounts to login
我的一些团队成员不使用他们的管理员帐户登录,而是使用他们的标准帐户登录和做事。有些人使用他们的管理员帐户登录来做事。
解决方案
所以我所做的是编写以下代码并将其放入一个小 bat 文件中,以测试您想要实现的核心内容。
powershell.exe -executionpolicy bypass -windowstyle hidden -noprofile -command "Add-Type -AssemblyName System.Windows.Forms; Add-Type -AssemblyName PresentationFramework;get-credential;start-sleep 10"
如果您有-windowstyle hidden
脚本将失败,因为Get-Credential
不会触发弹出询问您的凭据并退出(或者它可能运行但没有凭据)。
删除-windowstyle hidden
脚本将运行后,创建弹出窗口以获取凭据,然后在关闭前挂起 10 秒。
我也投了进去,[System.Windows.Forms.Application]::EnableVisualStyles()
但这并没有改变任何东西。
除非您提供用户名和密码,Get-Credential
否则它将创建一个弹出窗口。由于您坚持将其隐藏,因此您需要手动提示用户输入用户名和密码,或者使用具有有限权限的额外帐户。另一种方法可能是使用弹出窗口提示输入用户名和密码,然后使用它们生成凭据而不是Get-Credential
如果没有有关您的代码的更多信息以及您尝试使用凭据实现的目标,则无法再为您提供帮助。您可以随时清理代码以删除对用户、服务器和其他敏感信息的引用。如果您需要适当的帮助,您需要愿意分享您所做的事情。
推荐阅读
- sql - 使用 LIKE 运算符的数据库表约束
- python - Plotly:如何在指定阈值的折线图上显示不同的颜色段?
- sql-server - 通过外部电子邮件(SSRS、CRM 或其他方式)发送报告的最佳实践
- autocomplete - 选项卡上的 NVim Omnisharp-Vim 自动完成功能不起作用
- python - Beautifulsoup 无法从社交媒体网站获取正确信息
- keras - 隐藏层在哪里?
- java - 使用 Set 字符串在 sqlite 上运行查询
- google-colaboratory - 当我开始训练我的模型时,YOLO 暗网冻结
- reactjs - 在动作创建者中访问 useReducer 状态
- prolog - 我应该通过抛出实例化错误来强制执行模式声明吗?