function - Powershell 函数参数
问题描述
所以我创建了一个为用户分配许可证的功能。当我执行该函数时,它会显示一个错误。
Function Create_resource_account {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0)]
[string] $UserPrincipalName,
[Parameter(Mandatory = $true, Position = 1)]
[string] $ApplicationId,
[Parameter(Mandatory = $true, Position = 2)]
[string] $DisplayName
)
process {
try {
New-CsOnlineApplicationInstance -UserPrincipalName $UserPrincipalName -ApplicationId $ApplicationId -DisplayName $DisplayName
}
catch {
write-Log(“Error while creating a new application instance for a Call queue with $UserPrincipalName”)
$ErrorMessage = $_.Exception.Message
$FailedItem = $_.Exception.ItemName
Write-Log($ErrorMessage)
Write-Log($FailedItem)
exit(0)
}
}
}
Function AddLicense {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0)]
[string] $UserPrincipalName,
[Parameter(Mandatory = $true, Position = 1)]
[string] $License,
[Parameter(Mandatory = $true, Position = 2)]
[string] $UsageLocation
)
process {
$SkuIds = (Get-MsolUser -UserPrincipalName $UserPrincipalName).licenses | ForEach-Object { $_.AccountSkuId }
if ( $SkuIds -contains $License) {
Write-Output ("No licence to assign for $UserPrincipalName")
}
else {
try {
Get-MsolUser -UserPrincipalName $UserPrincipalName -UsageLocation $UsageLocation
Set-MsolUserLicense -UserPrincipalName $UserPrincipalName -AddLicenses $License
}
catch {
write-Log(“Error while assigning PhoneSystem Virtual Licence to $UserPrincipalName”)
$ErrorMessage = $_.Exception.Message
$FailedItem = $_.Exception.ItemName
Write-Log($ErrorMessage)
Write-Log($FailedItem)
exit(0)
}
}
}
}
$Util2 = Get-PnPListItem -List "2"
foreach ($temp2 in $Util2) {
$CQNom = $temp2['CQ_nom']
$CQMail = $temp2['CQ_Compte_de_ressource']
$CQNum = $temp2['Tel_sda']
#Création des ressources
$newCqRa = Create_resource_account $CQMail 11cd3e2e-fccb-42ad-ad00-878b93575e07 "RA_$CQNom" #Call queue
#Assign licence
$User = Get-AzureADUser -objectid $newCqRa.ObjectId | select -ExpandProperty UserPrincipalName
AddLicense $User "domain:PHONESYSTEM_VIRTUALUSER" "US"}
错误
Get-MsolUser : User Not Found. User: CQ-JeanPierreViseur@domain.onmicrosoft.com.
Au caractère Ligne:51 : 26
+ ... nsedUser = (Get-MsolUser -UserPrincipalName $UserPrincipalName).licen ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [Get-MsolUser], MicrosoftOnlineException
+ FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.UserNotFoundException,Microsoft.Online.Administration.Automation.GetUser
它向所有用户显示了相同的错误。我告诉自己,我的 Addlicense 函数有问题。有人可以帮助我。
我还将程序的功能存储在日志文件中,这就是它写给我的内容
"Error while assigning PhoneSystem Virtual Licence to CQ-EricDesbordes@domain.onmicrosoft.com
The parameter set cannot be resolved using the specified named parameters.
Error while assigning PhoneSystem Virtual Licence to CQ-JeanPierreViseur@domain.onmicrosoft.com The parameter set cannot be resolved using the specified named parameters."
感谢同志们的建议,我能够在 addlicense 功能上解决我的问题
Function AddLicense {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0)]
[Guid] $objectid,
[Parameter(Mandatory = $true, Position = 1)]
[String[]] $SkuidLicense,
[Parameter(Mandatory = $true, Position = 2)]
[string] $UsageLocation
)
process {
$SkuID = Get-AzureADUser -ObjectID $objectid | Select -ExpandProperty AssignedLicenses | Select SkuID
if ( $SkuID -contains $SkuidLicense) {
Write-Log ("No licence to assign for $newCqRa")
}
else {
try {
Set-AzureADUser -ObjectId $objectid -UsageLocation $UsageLocation
$License = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$License.SkuId = $SkuidLicense
$LicensesToAssign = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$LicensesToAssign.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $objectid -AssignedLicenses $LicensesToAssign
}
catch {
write-Log(“Error while assigning PhoneSystem Virtual Licence to $newCqRa”)
$ErrorMessage = $_.Exception.Message
$FailedItem = $_.Exception.ItemName
Write-Log($ErrorMessage)
Write-Log($FailedItem)
}
}
}
#Attribution de la licence
AddLicense $newCqRa.ObjectId "440eaaa8-b3e0-484b-a8be-62870b9ba70a" "US"
解决方案
推荐阅读
- javascript - 日志 = 新日志(“调试”);
- unity3d - 孩子们在 Unity 中以父母为中心“自动居中”
- javascript - 有没有办法使用javascript在客户端对视频文件(.mkv)进行一些操作?
- mysql - closeCells() 查询说明
- javascript - “i”变量在控制台中未定义
- ruby-on-rails - Rails + Sidekiq: Sidekiq.options[:concurrency] returns 10 instead of 3, which is the value in my config/sidekiq.yml file
- jquery - 前端 jQuery 代码无法使用 Node.js 正确执行
- ssl - OpenSSL SSL_connect:SSL_ERROR_SYSCALL 连接到 api.telegram.org:443
- bash - 使用 curl 从远程服务器下载最新文件
- c# - 在提交 C# ASP.NET 重新加载页面上从视图重写模型