Помощь Convertfrom-JSON
Я пытаюсь собрать сценарий для создания команды Microsoft из файла JSON. Я пытаюсь понять Convertfrom-JSON и то, как я могу передать объект в создание новой команды с каналами и пользователями. Я могу просмотреть объект, введя $json.teams. почему $_.Displayname работает? Я знаю, что это то, что находится в стадии разработки.
function New-MSteam {
[CmdletBinding()]
param (
[Parameter(Position = 0)]
[string]$TeamsFilePath
)
begin {
#checking for Microsoft Teams Module
Write-Verbose "Importing modules"
$Module = Get-Module -Name MicrosoftTeams -ListAvailable
if ($Module.Count -eq 0) {
Write-Verbose "Installing MicrosoftTeams module"
Install-Module -Name MicrosoftTeams -AllowPrerelease -AllowClobber -Force
}
Connect-MicrosoftTeams
}
process {
#Converting JSON
$json = Get-Content -Path c:\salest.json | ConvertFrom-Json
$json.teams | ForEach-Object {
$_.gettype().Team
}
#creating New team
$NewTeam = New-Team -DisplayName $teams.DisplayName -Visibility $teams.Visibility
$NewTeam.Users | ForEach-Object { $_.email
Add-TeamUser -User $_.email -Role $_.Role -GroupId $NewTeam.GroupId
}
$Team.Channels | ForEach-Object
New-TeamChannel -DisplayName $_.DisplayName -MembershipType $_.MembershipType -GroupId $NewTeam.GroupId
}
}
end {
}
{
"teams": [
{
"displayName": "IT Team",
"visibility": "Public",
"users": [
{
"email": "admin@3q4kz.onmicrosoft.com",
"role": "Owner"
},
{
"email": "AlexW@3q4kz.onmicrosoft.com",
"role": "Member"
},
{
"email": "GradyA@3q4kz.onmicrosoft.com",
"role": "Member"
}
],
"channels": [
{
"displayName": "Systems",
"membershipType": "Standard"
},
{
"displayName": "Dev",
"membershipType": "Standard"
},
{
"displayName": "Suport",
"membershipType": "Standard",
"users": [
{
"email": "admin@3q44z.onmicrosoft.com",
"role": "Owner"
}
]
}
]
}
]
}
1 ответ
Я попробую это, основываясь на предыдущих комментариях выше. Мне пришлось сделать небольшую операцию на вашем JSON, так как он был не совсем правильным, см. выше. Это может быть не совсем правильно, но, возможно, сблизит вас:
function New-MSteam {
[CmdletBinding()]
param (
[Parameter(Position = 0)]
[string]$TeamsFilePath
)
begin {
#checking for Microsoft Teams Module
Write-Verbose "Importing modules"
$Module = Get-Module -Name MicrosoftTeams -ListAvailable
if ($Module.Count -eq 0) {
Write-Verbose "Installing MicrosoftTeams module"
Install-Module -Name MicrosoftTeams -AllowPrerelease -AllowClobber -Force
}
Connect-MicrosoftTeams
}
process {
# Convert JSON
$json = Get-Content -Path c:\salest.json | ConvertFrom-Json
# Iterate teams property in JSON
$json.teams | ForEach-Object {
# Create New team
$NewTeam = New-Team -DisplayName $_.DisplayName -Visibility $_.Visibility
# Iterate the users in JSON, adding them to the team just created
$_.Users | ForEach-Object {
Add-TeamUser -User $_.email -Role $_.Role -GroupId $NewTeam.GroupId
}
# Iterate the channels in JSON
$_.Channels | ForEach-Object {
New-TeamChannel -DisplayName $_.DisplayName -MembershipType $_.MembershipType -GroupId $NewTeam.GroupId
}
}
}
}
end {
}