【发布时间】:2021-09-05 14:29:57
【问题描述】:
我创建了一个从活动目录收集信息的 python 程序。为了收集信息,程序会运行某些 PowerShell 脚本来连接服务器。
调试完成后,我使用 pyinstaller -onefile -w 将文件转换为 .exe。当我运行 .exe 时,gui 打开没有问题,但是当我尝试执行连接到活动目录服务器的命令时,程序崩溃了。发生这种情况时,控制台中没有错误代码。在我自己排除故障一分钟后,我意识到如果我创建的 .exe 没有“-w”使控制台在后台运行,程序可以正常工作。问题是我真的不希望控制台在后台运行,因为这应该是一个用户友好的应用程序。
无论如何我可以在没有控制台窗口的情况下运行程序,或者至少在 gui 运行时将其隐藏?另外,如果这是一个愚蠢的问题,请道歉。我是编程新手,甚至是 powershell 新手。
附言这是运行 PowerShell 脚本的 python 代码的 sn-p:
pscommandUsers = '$users = ' + userNameList + ';'
pscommandHeader = 'foreach ($u in $users) {'
pscommandGroups = '$Group = Get-ADPrincipalGroupMembership -Identity $u | ' \
'Select-Object -ExpandProperty Name | Sort-Object | ft -hidetableheaders;'
pscommandTitles = '$ADProp = Get-ADUser -Identity $u -Properties Department, ' \
'Title | ForEach-Object {$_.Department, $_.Title};'
pscommandFooter = '$Array = $ADProp, $Group; Write-Output "*****" $Array}'
...process = subprocess.Popen(["powershell.exe", pscommand],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
output, error_description = process.communicate()
【问题讨论】:
-
***'我创建了一个从 Active Directory 收集信息的 python 程序。 *** 只是好奇...为什么? PS 专门设计用于处理所有事物 ADDS(RSAT 或 ADSI)等等。使用 WinForms/WPF 为 PowerShell 编写 UX/UI 是一件简单的事情。
-
嘿Postanote,好问题。我使用 python 而不是纯粹的 PowerShell 的原因是因为这个特定的工具是集成到更大程序中的众多工具之一。该程序与服务器交互、操作数据并提供其他实用程序。
标签: python powershell active-directory pyinstaller