Domanda

Sto cercando di risolvere le autorizzazioni su shared mailboxes nei loro oggetti utente. Questi sono elencati come sulla cassetta postale dal loro O365 SAMAccountName. Ho questi come una serie di stringhe e sto cercando l'oggetto utente come:

foreach ($samaccountname in $SANRWUsers)
{
    Write-Host "Looking for" $samaccountname
    $user = Get-User -Filter "SamAccountName -eq $($samaccountname)"
    # Do other stuff...
}
.

Principalmente questo sta funzionando. La maggior parte dei SamaccountNames è del modulo "abcd1111111-222222222".

Tuttavia, alcuni sembrano questo:

$A75T20-QSRL3G5B6T0L
.

Questa è una stringa, non un nome variabile. Quello che ottengo quando il blocco di codice sopra ricerca è questo questo:

Cannot bind parameter 'Filter' to the target. Exception setting "Filter": ""-QSRL3G5B6T0L" is not a valid operator. For a list of supported operators see the command help.
"SamAccountName -eq $A75T20-QSRL3G5B6T0L" at position 27."
.

Sono molto lontano da un esperto di PowerShell da quello che posso capire che sta prendendo il segno del dollaro sulla parte anteriore della stringa per essere un sigil e cercando di trattarlo come variabile. Come posso prendere PowerShell a non farlo?

Sembra che i conti che abbiano questa forma di SamaccountName siano abbastanza vecchi e sono stati creati nei giorni Live @ EDU, all'inizio del 2011 o giù di lì. Non ci sono molti confrontati con le molte decine di migliaia create da allora, ma c'è abbastanza per questo per essere un problema.

Grazie in anticipo.

È stato utile?

Soluzione

È necessario citare la stringa nidificata nell'espressione del filtro:

$user = Get-User -Filter "SamAccountName -eq '$samaccountname'"
.

Se si fornisce una stringa letterale anziché una variabile nell'espressione del filtro è necessario sfuggire al $ per assicurarsi che PowerShell non tratti la stringa come variabile:

$user = Get-User -Filter "SamAccountName -eq '`$A75T20-QSRL3G5B6T0L'"
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top