powershell - 脚本随机开始出错
问题描述
随机地,我的脚本开始出错。
我们更改了 JumpBox 服务器,我觉得这可能是相关的,但我不确定。
错误如下:
You must provide a value expression on the right-hand side of the '-' operator.
At C:\Users\Timmsj\Desktop\Fixes\powershell\AD & Exchange New User Creation.ps1:128 char:26
+ $Folder = if ($SInitial - <<<< in 'a','b','c'){$AC}
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedValueExpression
有问题的块如下:
$Folder = if ($SInitial -in 'a','b','c'){$AC}
ElseIf ($SInitial -in 'd','e','f', 'g','h'){$DH}
ElseIf ($SInitial -in 'i','j','k', 'l','m'){$IM}
ElseIf ($SInitial -in 'n','o','p', 'q','r','s'){$NS}
Else {$TZ}
编辑 1 - 完整代码
$GivenName = Read-Host -Prompt "What Is The New User's First Name?"
Write-Host " "
$Surname = Read-Host -Prompt "What Is The New User's Last Name?"
Write-Host " "
$Description = Read-Host -Prompt "What Is The Job Title & Department Of The New User? [Please format as Job Title – Dept]"
Write-Host " "
$DisplayName = $Surname + " " + $GivenName
$Mail = $GivenName + "." + $Surname + "@" + "royalberkshire.nhs.uk"
$MailAlias = $GivenName + "." + $Surname + "@" + $DNSRoot2
$SInitial = $Surname[0]
$Initial = $GivenName[0]
$SAMAccountName = $Surname + "" + $Initial
$SAMAccountLower = $SAMAccountName.ToLower()
$UserPrincipalName = $Surname+$Initial
$HD = "U"
$HDir = "\\RBHFILRED002\"
$AC = "Users_01$\"
$DH = "Users_02$\"
$IM = "Users_03$\"
$NS = "Users_04$\"
$TZ = "Users_05$\"
$Folder = if ($SInitial -in 'a','b','c'){$AC}
ElseIf ($SInitial -in 'd','e','f', 'g','h'){$DH}
ElseIf ($SInitial -in 'i','j','k', 'l','m'){$IM}
ElseIf ($SInitial -in 'n','o','p', 'q','r','s'){$NS}
Else {$TZ}
$group1 = "zz Everyone"
$group2 = "Safeboot Domain Users"
$defaultname = $SAMAccountName
$email = $GivenName + "." + $Surname
$i = 1
cls
While ((Get-ADUser -Filter "SamAccountName -eq '$SAMAccountName'" -ErrorAction SilentlyContinue) -ne $null){
$SamAccountName = $defaultname + [string]$i
$Mail = $email + [string]$i + "@" + "royalberkshire.nhs.uk"
$i++
}
$NewUserParams = @{
path = "OU=Users,OU=RBFT,DC=rbbh-tr,DC=nhs,DC=uk"
SamAccountName = $SAMAccountName
Name = $SAMAccountName
DisplayName = $DisplayName
GivenName = $GivenName
Surname = $Surname
EmailAddress = $Mail
UserPrincipalName = "$SAMAccountName@rbbh-tr.nhs.uk"
Title = $title
HomeDrive = $HomeDrive
HomeDirectory = "$HDir$Folder$SAMAccountName"
Description = $Description
ChangePasswordAtLogon = $true
PasswordNeverExpires = $false
AccountPassword = $defpassword
Enabled = $true
}
New-ADUser @NewUserParams -ErrorAction SilentlyContinue
Add-ADGroupMember -Identity $group1 -Members $SAMAccountName
Start-Sleep -s 10
Add-ADGroupMember -Identity $group2 -Members $SAMAccountName
cls
echo "Please Wait Whilst We Create The AD Account & Create The Exchange Mailbox.."
Start-Sleep -s 30
Enable-Mailbox -Identity $SAMAccountName
cls
echo "Please Wait Whilst We Activate The Exchange Mailbox..."
Start-Sleep -s 15
cls
echo "Username:" $SAMAccountName
Write-Host " "
echo "Password:" "Welcome123"
Write-Host " "
echo "Email:" $Mail
Write-Host " "
echo "Job Title - Department:" $Description
Write-Host " "
echo "Home Directory:" $HDir$Folder$SAMAccountName
Write-Host " "
解决方案
我不知道带有-Regex
参数的 switch 命令是否会发现问题,
但它可以更轻松地创建额外的范围并可能查明问题。
该开关包含在一个小测试脚本中:
## Q:\Test\2018\06\19\SO_50925074.ps1
$AC,$DH,$IM,$NS,$TZ = 'AC','DH','IM','NS','TZ'
while ($True) {
$SInitial = Read-Host -Prompt "Enter anything"
$Folder = switch -regex ($SInitial) {
'^[a-c]' {$AC;Break}
'^[d-h]' {$DH;Break}
'^[i-m]' {$IM;Break}
'^[n-s]' {$NS;Break}
'^[t-z]' {$TZ;Break}
'^[0-9]' {"Number";Break}
'^\p{L}' {"Diacritique";Break}
default {"Other"}
}
"{0} Folder = {1}" -f $SInitial,$Folder
}
样本输出:
> Q:\Test\2018\06\19\SO_50925074.ps1
Enter anything: a
a Folder = AC
Enter anything: ö
ö Folder = Diacritique
Enter anything: ;
; Folder = Other
Enter anything: 7
7 Folder = Number
推荐阅读
- kubernetes - 子图表上的 Helm 安装后挂钩
- git - 不使用 git lfs 推送大文件
- bubble-sort - 冒泡排序在使用动态内存分配时不起作用
- java - 在不实际更改它们返回的内容的情况下覆盖已弃用的方法是一种不好的做法吗?
- jquery-selectors - 不是 mailto 链接的锚标记的角度选择器
- javascript - ./src/actions/productActions.js 尝试导入错误:“PRODUCT_LIST_FAIL”未从“../reducers/productReducers”导出
- javascript - 在 react-native-gesture-handler/Swipeable 中如何添加 post API
- python - 如何在 python 中使用验证数据训练 knn 模型
- python - Python 预算自动化 - 使用不同的工作表创建多个工作簿 - XLSXwriter
- javascript - 如何在 prisma 中使用 findUnique 和 post id 和 prodCode 来查找帖子