Форма WPF с использованием Powershell для получения настроек клиентского доступа O365 - PullRequest
0 голосов
/ 24 октября 2019

Мне нужна помощь для моего скрипта формы WPF, я создаю с использованием powershell с формой WPF. Я пытаюсь получить командный вывод командлетов Powershell exchange онлайн, когда я нажимаю кнопку отправки, например Get-CASMailbox. кажется, что это не соединяется в том же сеансе или что-то. Если я запустил окно powershell и ввел команды для подключения, то смог получить подробности, однако, когда я попытался запустить скрипт и нажать кнопку подтверждения в форме, ничего не произошло. Может кто-нибудь помочь мне выяснить, где у меня проблема?

Вот код, который я использую

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Confirm:$false -Force
Add-Type -AssemblyName presentationframework, presentationcore
Add-Type -AssemblyName WindowsBase

$wpf = @{ }

Function Connect-ExchangeOnline {
    $msolcred = Get-Credential
    Set-ExecutionPolicy Unrestricted
    $Global:Session365 = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri  https://outlook.office365.com/powershell-LiveID/ -Credential $msolcred -Authentication Basic -AllowRedirection
   Import-PSSession $global:Session365 -AllowClobber
   }

[xml]$Form = @" 
  <Window Name="AzureAD"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp5"
    Title="AzureAD Tool" Height="470" Width="800" Topmost="True">
<StackPanel>
    <Grid>
       <Button x:Name="Submit" Content="Submit"  Width="129" Margin="4,6,4,2" FontWeight="Bold" />
    </Grid>
</StackPanel>

</Window>

"@
#Create a form
$Global:xmlReader = New-Object System.Xml.XmlNodeReader $Form
$Global:xmlform = [Windows.Markup.xamlReader]::Load($xmlReader)
$Global:namedNodes = $Form.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]")
$Global:namedNodes | ForEach-Object {$wpf.Add($_.Name, 
$xmlform.Findname($_.Name))}

$wpf.Submit.Add_Click({
    Connect-ExchangeOnline
    Get-CASMailbox 
})

$wpf.AzureAD.ShowDialog()
#Get-CASMailbox 
Remove-PSSession -ComputerName outlook.office365.com

1 Ответ

0 голосов
/ 25 октября 2019

Я понял, что по какой-то причине, когда я вызываю Get-CASMailbox с WPF, он не получает никакого вывода, но когда я добавил «Get-CASMailbox | out-host», я смог его получить ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...