Мне нужна помощь для моего скрипта формы 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