У меня есть функция в модуле, как показано ниже:
function Update-QlikUser {
[CmdletBinding()]
param (
[parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True,Position=0)]
[string]$id,
[string[]]$customProperties,
[string[]]$tags,
[string]$name,
[string[]]$roles
)
PROCESS {
$user = Get-QlikUser $id -raw
If( $roles ) { $user.roles = $roles }
If( $name ) { $user.name = $name }
If( $customProperties ) {
$user.customProperties = @(GetCustomProperties $customProperties)
}
If( $tags ) {
$user.tags = @(GetTags $tags)
}
$json = $user | ConvertTo-Json -Compress -Depth 10
return Invoke-QlikPut "/qrs/user/$id" $json
}
}
Теперь я пытаюсь передать параметр -customProperties примерно так:
Update-QlikUser -id "270007b2-8c8e-4b33-8b1f-b4ba7b714c95" -customProperties "User"
Теперь я знаю, что этоневерно, поскольку необходимо указать имя пользовательского свойства и значение для этого имени.Однако я не знаю синтаксиса или даже того, что искать, поэтому мне нужна ваша помощь.
edit: Ниже приведена функция getCustomProperty:
function Get-QlikCustomProperty {
[CmdletBinding()]
param (
[parameter(Position=0)]
[string]$id,
[string]$filter,
[switch]$full,
[switch]$raw
)
PROCESS {
$path = "/qrs/custompropertydefinition"
If( $id ) { $path += "/$id" }
If( $full ) { $path += "/full" }
If( $raw ) { $rawOutput = $true }
return Invoke-QlikGet $path $filter
}
}
Пример, который я нашел в Интернете:следующее.пожалуйста, проверьте последнюю строку.Update-QlikUser - это то, что я пытаюсь сделать с параметром customproperty
$importdata = $null
$files = Get-ChildItem $csvpath
$importdata = $files | ForEach { Import-Csv $_ }
$allSeCpValues = $importdata.SE_Value | sort -unique
Update-QlikCustomProperty -id $(Get-QlikCustomProperty -filter "name eq '$sheetexceptioncp'").id -choiceValues $allSeCpValues
$allvaluescp = $importdata.Username | sort -unique
foreach ($userid in $allvaluescp) {
$allcpperuser = $importdata | Where-Object { $_.Username -eq $userid }
$allcpperuser2 = $allcpperuser.SE_Value | sort -unique | Where-Object { $_ -ne '' } | ForEach-Object {"$sheetexceptioncp=$_"}
[array]$stringcpperuser = $null
foreach( $cpvalue in $allcpperuser2) {
$stringcpperuser += $cpvalue
}
$previousCPvalues = $(Get-QlikUser -filter "userid eq '$userid'" -full).customProperties | Where-Object { $_.definition.name -ne "$sheetexceptioncp" }
foreach ($previousvalue in $previousCPvalues) {
$prev = $previousvalue.definition.name + "=" + $previousvalue.value
write-host the following previous custom properties was found:
write-host $prev
$stringcpperuser += $prev
}
write-host adding all this information to the users custom properties
write-host $stringcpperuser
Update-QlikUser -id $(Get-QlikUser -filter "userid eq '$userid'" -full).id -customProperties @($stringcpperuser)
}