位置参数错误 [英] Positional parameter error
本文介绍了位置参数错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用https://365lab.net/2016/01/09/create-ad-users-with-help-from-azure-automation-and-sharepoint-online/#comments到在Azure自动化中运行Runbook.当我执行代码
Hi I am using https://365lab.net/2016/01/09/create-ad-users-with-help-from-azure-automation-and-sharepoint-online/#comments to run a runbook in Azure automation. When I execute the code
param (
[object]$WebhookData
)
#SharePoint Connection Info
$SPCredentials = Get-AutomationPSCredential -Name 'SPOAdmin'
$SPConnection = @{
SharePointSiteURL = "https://abc.sharepoint.com/sites/UserOnboardingTest"
Username = $SPCredentials.Username
Password = $SPCredentials.GetNetworkCredential().Password
}
#Create an object from the webhook request
$UserData = ConvertFrom-Json -InputObject $WebhookData.RequestBody
$TargetOU = "OU=NoPolicy,OU=TEST,DC=abc,DC=local"
$ListName = "User Data"
$PasswordLength = "12"
$UPNSuffix = 'abc.com'
$FirstName = $UserData.FirstName
$LastName = $UserData.LastName
$Manager = $UserData.Manager
#region functions
function Convert-ToLatinCharacters {
param(
[string]$inputString
)
[Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($inputString))
}
function Get-JDDNFromUPN {
param (
[ValidateScript({Get-ADUser -Filter {UserprincipalName -eq $_}})]
[Parameter(Mandatory=$true)][string]$UserPrincipalName
)
$ADUser = Get-ADUser -Filter {UserprincipalName -eq $UserPrincipalName} -ErrorAction stop
return $ADUser.distinguishedname
}
function New-JDSamAccountName {
param (
[Parameter(Mandatory=$true)][string]$FirstName,
[Parameter(Mandatory=$true)][string]$LastName,
[parameter(Mandatory=$false)][int]$FirstNameCharCount = 3,
[parameter(Mandatory=$false)][int]$LastNameCharCount = 3
)
#Construct the base sAMAccountName
$BaseSam = "{0}{1}" -f (Convert-ToLatinCharacters $FirstName).Substring(0,$FirstNameCharCount),(Convert-ToLatinCharacters $LastName).Substring(0,$LastNameCharCount)
#Add a number until you find a free sAMAccountName
if (Get-ADUser -Filter {samaccountname -eq $BaseSam} -ErrorAction SilentlyContinue) {
$index = 0
do {
$index++
$sAMAccountName = "{0}{1}" -f $BaseSam.ToLower(),$index
} until (-not(Get-ADUser -Filter {samaccountname -eq $sAMAccountName } -ErrorAction SilentlyContinue))
} else {
$sAMAccountName = $BaseSam.tolower()
}
return $sAMAccountName
}
function New-JDUPNAndMail {
param (
[Parameter(Mandatory=$true)][string]$FirstName,
[Parameter(Mandatory=$true)][string]$LastName,
[Parameter(Mandatory=$true)][string]$UPNSuffix
)
#Construct the base userPrincipalName
$BaseUPN = "{0}.{1}@{2}" -f (Convert-ToLatinCharacters $FirstName).replace(' ','.').tolower(),(Convert-ToLatinCharacters $LastName).replace(' ','.').tolower(),$UPNSuffix
if (Get-ADUser -Filter {userprincipalname -eq $BaseUPN} -ErrorAction SilentlyContinue) {
$index = 0
do {
$index++
$UserPrincipalName = "{0}{1}@{2}" -f $BaseUPN.Split("@")[0],$index,$UPNSuffix
} until (-not(Get-ADUser -Filter {userprincipalname -eq $UserPrincipalName} -ErrorAction SilentlyContinue))
} else {
$UserPrincipalName = $BaseUPN
}
return $UserPrincipalName
}
function New-JDADUser {
[CmdletBinding(SupportsShouldProcess=$true)]
param (
[Parameter(Mandatory=$true)][string]$FirstName,
[Parameter(Mandatory=$true)][string]$LastName,
[Parameter(Mandatory=$true)][string]$UserPrincipalName,
[Parameter(Mandatory=$true)][string]$sAMAccountName,
[Parameter(Mandatory=$true)][string]$OU,
[Parameter(Mandatory=$true)][string]$Manager,
[Parameter(Mandatory=$true)][int]$PasswordLength = 12
)
#Generate a password
$Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength,2)
#Construct the user HT
$ADUserHt = @{
GivenName = $FirstName
SurName = $LastName
ChangePasswordAtLogon = $true
EmailAddress = $UserPrincipalName
UserPrincipalName = $UserPrincipalName
sAMAccountName = $sAMAccountName
Name = "$FirstName $LastName ($sAMAccountName)"
Displayname = "$FirstName $LastName"
Manager = $Manager
Path = $OU
AccountPassword = (ConvertTo-SecureString -String $Password -AsPlainText -Force)
Enabled = $true
OtherAttribute = @{proxyAddresses = "SMTP:$UserPrincipalName"}
}
try {
#Create the user and return a custom object
New-ADUser @ADUserHt -ErrorAction Stop
Write-Verbose "Successfully created the user $($ADUserHt.Name)"
[pscustomobject] @{
sAMAccountName = $ADUserHt.sAMAccountName
UserPrincipalName = $ADUserHt.UserPrincipalName
Password = $Password
}
} catch {
Write-Warning "Error creating the user $($ADUserHt.Name) `r`n$_"
}
}
#endregion functions
try {
$sAMAccountName = New-JDSamAccountName -FirstName $Firstname -LastName $LastName
$UPNandMail = New-JDUPNAndMail -FirstName $Firstname -LastName $LastName -UPNSuffix $UPNSuffix
$ManagerDN = Get-JDDNFromUPN -UserPrincipalName $Manager
#Create the user in Active Directory
$NewAdUserHt = @{
FirstName = $Firstname
LastName = $LastName
Manager = $ManagerDN
sAMAccountName = $sAMAccountName
UserPrincipalName = $UPNandMail
OU = $TargetOU
PasswordLength = $PasswordLength
}
Write-Output $NewAdUserHt
$ADUser = New-JDADUser @NewAdUserHt -ErrorAction Stop
$UpdateHt = @{
Status = 'Created'
UserName = $ADUser.sAMAccountName
EmailAddress = $ADUser.UserPrincipalName
}
Update-SPOListItem -SPOConnection $SPConnection -ListItemID $UserData.ID -ListFieldsValues $UpdateHt -ListName $ListName
} catch {
$UpdateHt = @{
Status = 'Error'
}
Update-SPOListItem -SPOConnection $SPConnection -ListItemID $UserData.ID -ListFieldsValues $UpdateHt -ListName $ListName
Write-Warning $_
}
我收到错误消息:
Update-SPOListItem : A positional parameter cannot be found that accepts argument '+'.
At line:157 char:9
+ Update-SPOListItem -SPOConnection $SPConnection -ListItemID $ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Update-SPOListItem], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Update-SPOListItem
有人可以帮我吗?
推荐答案
已移至
这篇关于位置参数错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文