【发布时间】:2021-08-02 10:18:05
【问题描述】:
到目前为止,我一直在试图让这个脚本工作,如果我运行脚本而不过滤用户,它会根据 OU 上的搜索库过滤工作,但是一旦我尝试过滤用户也一样,它会抛出诸如
之类的错误"术语''不被识别为cmdlet、函数的名称, 脚本文件或可运行的程序。检查名称的拼写,或 如果包含路径,请验证路径是否正确并重试。 在 C:\Users\user\Desktop\UserProvisioning 和许可证 v2.ps1:22 字符:27"
和
"您不能在空值表达式上调用方法。在 C:\Users\user\Desktop\UserProvisioning 和许可证 v2.ps1:23 char:1
- 启用-RemoteMailbox -Identity $users.SamAccountName -RemoteRoutingAd 。”
如果有人可以查看我的代码并告诉我这里出了什么问题,我将不胜感激?
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
$accountNamesToInclude = @("Dev01","Dev02")
Get-ADUser -filter * -SearchBase 'OU=orgunit1,DC=ad,DC=domain,DC=com' | Export-Csv E:\Scripts\ProvisionUsers.csv
$Names = @()
$UPNS = @()
$Licence = "Licence-M365-E5"
$accountNamesToInclude = @('Dev01','Dev02')
# Comment this out if you want to include all users from the csv
($users = Import-Csv E:\Scripts\ProvisionUsers.csv | Where-Object { $accountNamesToInclude -contains $_.Name })
# Uncomment this if you want to include all users from the csv
# $users = Import-Csv E:\Scripts\ProvisionUsers.csv
foreach ($user in $users){
Enable-RemoteMailbox -Identity $users.SamAccountName -RemoteRoutingAddress((($_.UserPrincipalName.split("@")[0])) +"@domain.mail.onmicrosoft.com") -PrimarySmtpAddress((($_.UserPrincipalName.split("@")[0])) +"@domain.com");
}
foreach ($user in $users){
Get-ADUser -Identity $users.SamAccountName | Set-ADObject -Replace @{extensionAttribute8=$Licence}
}
提前致谢!
【问题讨论】:
-
$user.samaccountname,您仍然使用$users.sama..引用整个数组。所以把它改成$user,不带s。 -
感谢亚伯拉罕,我之前尝试过,但没有成功,但朝着正确的方向又迈出了一步。干杯。
-
你为什么要改变它?大声笑这是正确的方法(:现在有任何错误吗?
-
哈哈反复试验,不幸的是仍然是同样的错误......你不能在空值表达式上调用方法。在 C:\Users\users\Desktop\UserProvisioning 和 license v2.ps1:28 char:1 + Enable-RemoteMailbox -Identity $user.SamAccountName -RemoteRoutingAdd
-
把
$_改成对应的变量。
标签: powershell active-directory exchange-server