- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想构建一个在后台使用 MicrosoftTeams 模块并执行批量操作的 Windows 窗体应用程序。
首先,必须始终建立与 Azure 的连接。为此,我想使用集成的 Windows 身份验证。
例如,在 PowerShell 控制台中,我只需执行以下行即可建立连接:
Connect-MicrosoftTeams -AccountId ' <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4e3b3d2b3c0e2d21203a213d21602d2123" rel="noreferrer noopener nofollow">[email protected]</a>'
现在我想在单击按钮时执行这个脚本。
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.DImport-Module -Name MicrosoftTeams
$window = New-Object System.Windows.Forms.Form
$window.Width = 200
$window.Height = 200
$windowButton = New-Object System.Windows.Forms.Button
$windowButton.Location = New-Object System.Drawing.Size(10,10)
$windowButton.Size = New-Object System.Drawing.Size(100,50)
$windowButton.Text = "connect teams"
$windowButton.Add_Click({
write-host 'connecting'
Connect-MicrosoftTeams -AccountId '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dda8aeb8af9dbeb2b3a9b2aeb2f3beb2b0" rel="noreferrer noopener nofollow">[email protected]</a>'
Write-Host 'connected'
})
$window.Controls.Add($windowButton)
[void]$window.ShowDialog()
但是该命令无法正确执行。 PowerShell 只是卡在命令上。没有错误消息,也没有超时。
您知道问题出在哪里吗?这些是 Windows 窗体的限制吗?如果是,我该如何解决它们?
编辑:我认为我的问题表述得不够精确。但我很难描述这个问题。所以我会分享一些额外的代码/日志,希望这能避免误解。
如果我更改身份验证方法:
Connect-MicrosoftTeams -AccountId '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="374244524577545859435844581954585a" rel="noreferrer noopener nofollow">[email protected]</a>'
到此
Connect-MicrosoftTeams -Credential (Get-Credential)
代码工作正常(也在 Windows 窗体事件按钮的脚本 block 中)。不幸的是,随后系统会提示用户输入用户名和密码。我想不惜一切代价避免这种情况。
所以我的猜测是 Windows 窗体按钮事件脚本 block 内的代码未访问集成的 Windows 身份验证。
为了调查该问题,我启用了此 cmdlet 的事件日志记录功能。
首先,卡住的 cmdlet 的日志(在 Windows 窗体按钮事件脚本 block 内)。
2022-12-26T10:22:17.5531799Z,Info ,Logger.Initialize ,
Logging initialized at level: Verbose
2022-12-26T10:22:17.5531799Z,Info ,Logger.Initialize ,
Logged in at: DEVPCName
2022-12-26T10:22:17.5531799Z,Info ,LogAssemblyInfo ,
Running assembly assemblyInfo : Microsoft.TeamsCmdlets.PowerShell.Connect, Version=1.2.5.0, Culture=neutral, PublicKeyToken=null assemblyLocation : C:\Users\lukas\Documents\WindowsPowerShell\Modules\MicrosoftTeams\4.9.1\net472\Microsoft.TeamsCmdlets.PowerShell.Connect.dll assemblyName : Microsoft.TeamsCmdlets.PowerShell.Connect, Version=1.2.5.0, Culture=neutral, PublicKeyToken=null assemblyVersion : 1.2.5.0 fileVersion : 1.2.5.0 productVersion : 1.2.5
2022-12-26T10:22:17.5531799Z,Info ,Connect-MicrosoftTeams.BeginProcessing ,
Connecting to the AzureCloud environment.
2022-12-26T10:22:17.5790454Z,Info ,Connect-MicrosoftTeams.ProcessRecord ,
Connect to MicrosoftTeams with UserCredential.
2022-12-26T10:22:17.5790454Z,Info ,Connect-MicrosoftTeams.ProcessRecord ,
Azure account type: IntegratedWindows
使用相同参数正常执行同一 cmdlet(在 Windows 窗体按钮单击事件脚本 block 之外)的日志。
2022-12-26T10:21:34.3697523Z,Info ,Logger.Initialize ,
Logging initialized at level: Verbose
2022-12-26T10:21:34.3697523Z,Info ,Logger.Initialize ,
Logged in at: DEVPCName
2022-12-26T10:21:34.3697523Z,Info ,LogAssemblyInfo ,
Running assembly assemblyInfo : Microsoft.TeamsCmdlets.PowerShell.Connect, Version=1.2.5.0, Culture=neutral, PublicKeyToken=null assemblyLocation : C:\Users\lukas\Documents\WindowsPowerShell\Modules\MicrosoftTeams\4.9.1\net472\Microsoft.TeamsCmdlets.PowerShell.Connect.dll assemblyName : Microsoft.TeamsCmdlets.PowerShell.Connect, Version=1.2.5.0, Culture=neutral, PublicKeyToken=null assemblyVersion : 1.2.5.0 fileVersion : 1.2.5.0 productVersion : 1.2.5
2022-12-26T10:21:34.3697523Z,Info ,Connect-MicrosoftTeams.BeginProcessing ,
Connecting to the AzureCloud environment.
2022-12-26T10:21:34.3697523Z,Info ,Connect-MicrosoftTeams.ProcessRecord ,
Connect to MicrosoftTeams with UserCredential.
2022-12-26T10:21:34.3697523Z,Info ,Connect-MicrosoftTeams.ProcessRecord ,
Azure account type: IntegratedWindows
2022-12-26T10:21:34.6700461Z,Info , ,
Sending request :https://api.interfaces.records.teams.microsoft.com/Teams.InternalSupport/TelemetryRelay 01234567-8901-2345-6789-012345678901 SendAsync C:\a_work\7\s\Microsoft.Teams.ConfigAPI.Cmdlets\generated\custom\Infrastructure\ModuleCustom.cs:79
2022-12-26T10:21:34.6700461Z,Info , ,
RequestUri: https://api.interfaces.records.teams.microsoft.com/Teams.InternalSupport/TelemetryRelay AttachTargetUriHeaderToAutoRestCmdlets C:\a_work\7\s\Microsoft.Teams.ConfigAPI.Cmdlets\generated\custom\Infrastructure\SendAsyncCallback.cs:198
2022-12-26T10:21:34.6700461Z,Info , ,
X-MS-Target-Uri: https://admin1e.online.lync.com/ AttachTargetUriHeaderToAutoRestCmdlets C:\a_work\7\s\Microsoft.Teams.ConfigAPI.Cmdlets\generated\custom\Infrastructure\SendAsyncCallback.cs:210
2022-12-26T10:21:35.3499509Z,Info , ,
CsInternalPsTelemetry flightEnabledCommands=(Get-CsTeamsEducationConfiguration,Set-CsTeamsEducationConfiguration,Grant-CsTeamsEventsPolicy,Get-CsOnlineTelephoneNumber,Grant-CsConferencingPolicy,Get-CsClientPolicy,Grant-CsHostedVoicemailPolicy,Grant-CsClientPolicy,Grant-CsMobilityPolicy,Get-CsBroadcastMeetingConfiguration,Grant-CsVoiceRoutingPolicy,Get-CsConferencingPolicy,Get-CsMobilityPolicy,Get-CsBroadcastMeetingPolicy,Get-CsCloudMeetingPolicy,Get-CsVoiceRoutingPolicy,Get-CsGraphPolicy,Get-CsExternalUserCommunicationPolicy,Grant-CsBroadcastMeetingPolicy,Get-CsHostedVoicemailPolicy,Get-CsIPPhonePolicy,Get-CsUserServicesPolicy,Get-CsAudioConferencingProvider,Grant-CsExternalUserCommunicationPolicy,Get-CsOAuthConfiguration,Get-CsMeetingConfiguration,Get-CsTenantCatalogApp,Get-CsDefaultCatalogApp,Get-CsGlobalCatalogApp,Set-CsTeamsAppPermissionPolicy,Set-CsTeamsAppSetupPolicy,Get-CsPushNotificationConfiguration,Get-CsTeamsUpgradeStatus,Get-CsTeamsPinnedApp,Get-CsUCPhoneConfiguration,Get-CsImFilterConfiguration,Set-CsPushNotificationConfiguration,Get-CsTenantUpdateTimeWindow,New-CsTeamsAppSetupPolicy,Grant-CsCloudMeetingPolicy,Get-CsTeamsAppPreset,New-CsTeamsAppPermissionPolicy,Set-CsOAuthConfiguration,Grant-CsIPPhonePolicy,Set-CsClientPolicy,Grant-CsGraphPolicy,Set-CsIPPhonePolicy,New-CsTeamsPinnedApp,New-CsDefaultCatalogApp,Set-CsConferencingPolicy,New-CsClientPolicy,Set-CsMeetingConfiguration,Set-CsUCPhoneConfiguration,New-CsConferencingPolicy,Set-CsExternalUserCommunicationPolicy,Remove-CsClientPolicy,New-CsExternalUserCommunicationPolicy,Set-CsMobilityPolicy,Remove-CsTeamsAppPreset,Set-CsBroadcastMeetingConfiguration,Remove-CsConferencingPolicy,Remove-CsTeamsPinnedApp,New-CsMobilityPolicy,Remove-CsExternalUserCommunicationPolicy,Set-CsTeamsUpgradeStatus,Remove-CsMobilityPolicy,Remove-CsDefaultCatalogApp,Set-CsDefaultCatalogApp,New-CsGlobalCatalogApp,Remove-CsGlobalCatalogApp,Set-CsGlobalCatalogApp,New-CsTeamsAppPreset,Set-CsTeamsAppPreset,Set-CsTeamsPinnedApp,New-CsTenantCatalogApp,Remove-CsTenantCatalogApp,Set-CsTenantCatalogApp,New-CsTenantUpdateTimeWindow,Remove-CsTenantUpdateTimeWindow,Set-CsTenantUpdateTimeWindow,Invoke-CsUcsRollback,Get-CsMeetingRoom,Enable-CsMeetingRoom,Set-CsMeetingRoom,Disable-CsMeetingRoom,New-CsTeamsComplianceRecordingPairedApplication,New-CsTeamsEmergencyCallingPolicy,Set-CsTeamsEmergencyCallingPolicy,New-CsTeamsEmergencyNumber,New-CsTeamsCallHoldPolicy,Set-CsTeamsCallHoldPolicy,Get-CsTeamsComplianceRecordingApplication,Remove-CsTeamsComplianceRecordingApplication,Get-CsOnlineNumberPortOutOrderPin,Set-CsOnlineNumberPortOutOrderPin,Get-CsOnlineNumberPortInOrder,New-CsOnlineNumberPortInOrder,Test-CsOnlineCarrierPortabilityIn,Test-CsOnlinePortabilityIn,Remove-CsOnlineNumberPortInOrder,Set-CsOnlineNumberPortInOrder,Remove-CsOnlineTelephoneNumber,Get-CsOnlineApplicationInstanceAssociationStatus,Remove-CsOnlineApplicationInstanceAssociation,New-CsOnlineApplicationInstanceAssociation,Get-CsOnlineApplicationInstanceAssociation,Find-CsOnlineApplicationInstance,Find-CsGroup,Remove-CsCallQueue,New-CsCallQueue,Set-CsCallQueue,Get-CsCallQueue,Get-CsAutoAttendantTenantInformation,Get-CsAutoAttendantSupportedTimeZone,Get-CsAutoAttendantSupportedLanguage,Export-CsAutoAttendantHolidays,Import-CsAutoAttendantHolidays,Get-CsAutoAttendantHolidays,Update-CsAutoAttendant,Remove-CsAutoAttendant,Get-CsOnlineApplicationEndpoint,Set-CsOnlineApplicationEndpoint,Remove-CsOnlineApplicationEndpoint,New-CsOnlineApplicationEndpoint,Switch-CsOnlineApplicationEndpoint,Get-CsUserPstnSettings,Set-CsUserPstnSettings,Get-CsOnlineDialInConferencingUser,Test-CsVoiceNormalizationRule,Sync-CsOnlineApplicationInstance,Get-CsTenant,Test-CsInboundBlockedNumberPattern,Get-CsOnlineDialInConferencingLanguagesSupported,Set-CsOnlineDialInConferencingUser,Get-CsOnlineDialInConferencingBridge,Set-CsOnlineDialInConferencingBridge,Get-CsOnlineLisPort,Set-CsOnlineLisPort,Remove-CsOnlineLisPort,Set-CsOnlineLisLocation,New-CsOnlineLisLocation,Set-CsOnlineEnhancedEmergencyServiceDisclaimer,New-CsCallingLineIdentity,Set-CsCallingLineIdentity,Get-CsOnlineLisSubnet,Set-CsOnlineLisSubnet,Remove-CsOnlineLisSubnet,Get-CsOnlineLisSwitch,Set-CsOnlineLisSwitch,Remove-CsOnlineLisSwitch,Get-CsOnlineLisWirelessAccessPoint,Set-CsOnlineLisWirelessAccessPoint,Remove-CsOnlineLisWirelessAccessPoint,Get-CsOnlineLisCivicAddress,Set-CsOnlineLisCivicAddress,Remove-CsOnlineLisCivicAddress,Get-CsOnlineLisLocation,Remove-CsOnlineLisLocation,Get-CsOnlineEnhancedEmergencyServiceDisclaimer,New-CsOnlineLisCivicAddress,Set-CsOnlineApplicationInstance,Set-CsOnlineVoiceApplicationInstance,Set-CsOnlineVoiceUser,Test-CsEffectiveTenantDialPlan,Get-CsMeetingMigrationStatus,Grant-CsApplicationAccessPolicy,Grant-CsExternalAccessPolicy,Grant-CsOnlineAudioConferencingRoutingPolicy,Grant-CsOnlineVoicemailPolicy,Grant-CsTeamsAppPermissionPolicy,Grant-CsTeamsAppSetupPolicy,Grant-CsTeamsCallHoldPolicy,Grant-CsTeamsCallingPolicy,Grant-CsTeamsCallParkPolicy,Grant-CsTeamsChannelsPolicy,Grant-CsTeamsComplianceRecordingPolicy,Grant-CsTeamsCortanaPolicy,Set-CsUser,Grant-CsTeamsEmergencyCallingPolicy,Grant-CsTeamsFeedbackPolicy,Grant-CsTeamsIPPhonePolicy,Grant-CsTeamsMeetingBroadcastPolicy,Grant-CsTeamsMeetingPolicy,Grant-CsTeamsMessagingPolicy,Grant-CsTeamsMobilityPolicy,Grant-CsTeamsShiftsPolicy,Grant-CsTeamsUpdateManagementPolicy,Grant-CsTeamsUpgradePolicy,Grant-CsTeamsVdiPolicy,Grant-CsTeamsVideoInteropServicePolicy,Get-CsOnlineUser,Get-CsOnlineVoiceUser,Get-CsEffectiveTenantDialPlan,New-CsOnlineApplicationInstance,Get-CsOnlineApplicationInstance,Start-CsExMeetingMigration,Grant-CsCallingLineIdentity,Grant-CsDialoutPolicy,Grant-CsTeamsAudioConferencingPolicy,Grant-CsTeamsEmergencyCallRoutingPolicy,Grant-CsTeamsEnhancedEncryptionPolicy,Grant-CsTeamsWorkLoadPolicy,Grant-CsTenantDialPlan,Grant-CsTeamsFilesPolicy,Remove-CsApplicationAccessPolicy,Remove-CsCallingLineIdentity,Remove-CsExternalAccessPolicy,Remove-CsOnlineVoicemailPolicy,Remove-CsTeamsAudioConferencingPolicy,Remove-CsTeamsCallHoldPolicy,Remove-CsTeamsCallingPolicy,Remove-CsTeamsCallParkPolicy,Remove-CsTeamsChannelsPolicy,Remove-CsTeamsEmergencyCallingPolicy,Remove-CsTeamsEmergencyCallRoutingPolicy,Remove-CsTeamsEnhancedEncryptionPolicy,Remove-CsTeamsIPPhonePolicy,Remove-CsTeamsMeetingBroadcastPolicy,Remove-CsTeamsMeetingPolicy,Remove-CsTeamsMessagingPolicy,Remove-CsTeamsUpdateManagementPolicy,Remove-CsTenantDialPlan,Remove-CsTeamsComplianceRecordingPolicy,Remove-CsTeamsCortanaPolicy,Remove-CsTeamsFeedbackPolicy,Remove-CsTeamsMobilityPolicy,Remove-CsTeamsShiftsPolicy,Remove-CsTeamsVdiPolicy,Remove-CsTeamsWorkLoadPolicy,Remove-CsOnlineAudioConferencingRoutingPolicy,Remove-CsTeamsFilesPolicy,Grant-CsTeamsSurvivableBranchAppliancePolicy,Remove-CsTeamsSurvivableBranchAppliancePolicy,Remove-CsTeamsAppPermissionPolicy,Remove-CsTeamsAppSetupPolicy,Set-CsOnlineDialinConferencingUserDefaultNumber,Get-CsOnlineDialInConferencingServiceNumber,Set-CsOnlineDialInConferencingServiceNumber,Get-CsDialPlan,Get-CsExternalAccessPolicy,Get-CsOnlineDialInConferencingTenantSettings,Get-CsOnlineVoiceRoutingPolicy,Get-CsPrivacyConfiguration,Get-CsTeamsAudioConferencingPolicy,Get-CsTeamsCallingPolicy,Get-CsTeamsCallParkPolicy,Get-CsTeamsChannelsPolicy,Get-CsTeamsClientConfiguration,Get-CsTeamsCortanaPolicy,Get-CsTeamsEducationAssignmentsAppPolicy,Get-CsTeamsFeedbackPolicy,Get-CsTeamsGuestCallingConfiguration,Get-CsTeamsGuestMeetingConfiguration,Get-CsTeamsGuestMessagingConfiguration,Get-CsTeamsIPPhonePolicy,Get-CsTeamsMeetingBroadcastPolicy,Get-CsTeamsMeetingConfiguration,Get-CsTeamsMigrationConfiguration,Get-CsTeamsMobilityPolicy,Get-CsTeamsNotificationAndFeedsPolicy,Get-CsTeamsShiftsAppPolicy,Get-CsTeamsShiftsPolicy,Get-CsTeamsTargetingPolicy,Get-CsTeamsUpgradeConfiguration,Get-CsTeamsVdiPolicy,Get-CsTeamsWorkLoadPolicy,Get-CsTenantMigrationConfiguration,Get-CsTeamsFilesPolicy,New-CsExternalAccessPolicy,New-CsOnlineVoiceRoutingPolicy,New-CsTeamsAudioConferencingPolicy,New-CsTeamsCallingPolicy,New-CsTeamsCallParkPolicy,New-CsTeamsChannelsPolicy,New-CsTeamsCortanaPolicy,New-CsTeamsFeedbackPolicy,New-CsTeamsIPPhonePolicy,New-CsTeamsMeetingBroadcastPolicy,New-CsTeamsMobilityP...
2022-12-26T10:21:35.3499509Z,Info ,Connect-MicrosoftTeams.ProcessRecord ,
Session created with. Account: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ef9a9c8a9daf8c80819b809c80c18c8082" rel="noreferrer noopener nofollow">[email protected]</a>, Environment: AzureCloud, Tenant: 01234567-8901-2345-6789-012345678901, domainName: contoso.onmicrosoft.com, AccountType: IntegratedWindows.
所以现在我更具体的问题是:这种现象是否为任何人所知或者这是 Windows 窗体的已知限制?或者有没有办法解决这个问题?
最佳答案
当然,您可以创建一个函数,将其放在代码顶部,并在点击事件中调用它。
Add-Type -AssemblyName System.Windows.Forms
# Add-Type -AssemblyName System.DImport-Module -Name MicrosoftTeams
function ConnectTo-MSTeams
{
[CmdletBinding(SupportsShouldProcess)]
Param()
Write-Host 'connecting'
Get-Date |
Out-Host
Write-Host 'connected'
}
$window = New-Object System.Windows.Forms.Form
$window.Width = 200
$window.Height = 200
$window.StartPosition = 'CenterScreen'
$windowButton = New-Object System.Windows.Forms.Button
$windowButton.Location = New-Object System.Drawing.Size(10,10)
$windowButton.Size = New-Object System.Drawing.Size(100,50)
$windowButton.Text = 'connect teams'
$windowButton.Add_Click({ConnectTo-MSTeams})
$window.Controls.Add($windowButton)
[void]$window.ShowDialog()
# Results
<#
connecting
Monday, December 26, 2022 13:14:01
connected
#>
我没有安装 Teams,因此您需要测试。
关于azure - Windows 窗体按钮脚本 block 是否有任何已知的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74923138/
对于一个科学实验,我写了一个turtle.py ,它会打开一个 800x480 的窗口并绘制一个缓慢增长的黑点。 turtle.py以 C:\Users\kaza>python C:\Users\ka
我开发了一个 swing 应用程序,但每次运行应用程序时都会打开一个新窗口。我希望如果一个窗口已经打开,则其他窗口不允许打开。 最佳答案 Here是一个 Java 单一应用实例的例子: A singl
有没有办法检测主进程中 Electron 的结构? process.platform 似乎也在 x64 机器上返回 win32,我没有在文档中找到任何获取架构的选项。 最佳答案 你试过 process
public short[] HanningWindow(short[] signal_in ,int pos ,int size) { for (int i= pos; i < pos+si
我有一个具有这些属性的 Electron 窗口: mainWindow = new BrowserWindow({ width: 800, height: 600, title: "Aqu
我有一个 Ubuntu 工作站,我正在尝试引导一个 Windows 节点。 Windows 节点在端口 2222 上打开了 ssh。我一直在关注 http://docs.opscode.com/plu
我是一名优秀的程序员,十分优秀!