我有一個腳本可以在我的域中創建用戶帳戶。
我添加了一個中間名,它是可選的,但如果用戶名將是重復的,則它是必需的,因此將使用中間名的首字母來區分。
問題是以下代碼保留了最后一個值。因此,如果我指定名字、中間名和姓氏,那么下一個用戶是名字和姓氏,那么它仍然保留中間名。
下次從頭開始運行時,是否有任何東西使中間名保持空白?
Do
{
#Getting variable for the First Name
Do
{
$firstname = Read-Host "Enter in the First Name"
Write-Host
if ($firstname -ge 1) {
Write-Host "First name is $firstname"
}
else
{
Write-Host "Please enter the first name" -ForegroundColor:Green
}
}
Until ($firstname -ge 1)
$option = Read-Host "Does the person have a middle name? (y/n)"
if ($option -eq "y")
{
#Getting variable for the Middle Name
Do
{
$middlename = Read-Host "Please enter the middle name"
Write-Host
if ($middlename -ge 1)
{
Write-Host "Middle name is $middlename"
}
else
{
Write-Host "Please enter the middle name" -ForegroundColor:Green
}
}
Until ($middlename -ge 1)
}
else
{
Write-Host "No middle name required"
}
#Getting variable for the Last Name
Do
{
$lastname = Read-Host "Enter in the Last Name"
Write-Host
if ($lastname -ge 1)
{
Write-Host "Last name is $lastname"
}
else
{
Write-Host "Please enter the last name" -ForegroundColor:Green
}
}
Until ($lastname -ge 1)
#Setting Full Name (Display Name) to the users first and last name
if ($middlename)
{
$fullname = "$firstname $middlename $lastname"
Write-Host $fullname
sleep 5
}
else
{
$fullname = "$firstname $lastname"
}
#Write-Host
#Setting username to first initial of first name along with the last name.
$i = 1
$logonname = $firstname.substring(0,$i) $lastname
uj5u.com熱心網友回復:
只需清除腳本開頭的變數即可。
任何一個:
$middlename = ""
或使用Remove-Variable
Remove-Variable middlename
uj5u.com熱心網友回復:
此行為來自您選擇啟動腳本的方式。在 PowerShell 中基本上有兩個選項,呼叫(運行)或點源(加載)。
拿這個簡短的腳本。
#stack.ps1
"my variable should be empty $myVar"
$myvar = "cat"
"my variable should have a value $myVar"
當我使用 Invocation 運算子在 PowerShell 中運行/呼叫它時,看看會發生什么:
PS> & .\stack.ps1
my variable should be empty
my variable should have a value cat
PS> & .\stack.ps1
my variable should be empty
my variable should have a value cat
PowerShell 運行腳本,因此腳本將其變數值存盤在腳本范圍內。這意味著當腳本結束時,變數會消失。
與點源比較
現在,將其與 dot-sourcing 進行比較,后者在您當前的背景關系中運行腳本。
PS> . .\stack.ps1
my variable should be empty
my variable should have a value cat
PS> . .\stack.ps1
my variable should be empty cat #!!!! the value persisted!
my variable should have a value cat
因為它在您當前的背景關系中運行,所以當腳本結束時這些值仍然存在。
如果我不得不猜測,我會說您可能正在點源您的腳本而不是呼叫它。這是一件非常容易的事情,并且可以解釋您所看到的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/405506.html
標籤:
