0
作爲PowerShell的新手,我使用了這個腳本,它在使用'switch'時起作用。我嘗試使用'while'來工作,但是它的值是1還是0.雖然值是x
看看下面的腳本,有人能指出我哪裏出錯了!
您的幫助表示讚賞。
cls
Import-Module -Name ActiveDirectory
$ADpath = "OU=OU1,DC=DC1,DC=DC2,DC=DC3";
$i = 0
function yaynay(){
$i = Read-Host "`nSearch again.." "Y `tOR N";
switch -Regex ($i.ToUpper()){
"Y(es)?"{$i -eq 1}
default {$i -eq 0}
}
get-pssession | remove-pssession
}
function TableFormat(){
[email protected]{label='Full Name';Expression={$_.name};width=20},
@{label='Login Name';Expression={$_.samaccountname};width=15},
@{label='OU';Expression={(($_.DistinguishedName -split "=",4)[3] -split ",",2[0]};width=15}
$ADusr | Format-Table $x1
}
function getOut(){
Write-Host "AD Search will now exit"
exit
}
function ADUwrite(){
Write-Output "`n Cannot find user: $InputUsr"
}
while ($i -lt 1)
{
$InputUsr = Read-Host "Enter One or More Letters To Search For User"
$InputUsr1 = $InputUsr
if($InputUsr -eq ""){
write "`n No Search Criteria Entered... Exiting AD User Search"
exit
}
$InputUsr = "*"+$InputUsr+"*"
if([string]$InputUsr1 -contains "*"){
$InputUsr = $InputUsr.Replace($InputUsr, $InputUsr1)
}
$ADusr = Get-ADUser -Filter {name -like $InputUsr} -SearchBase $ADpath
$x=$ADusr.name.length
if($x -gt 0){
TableFormat
}
else{
$InputUsr = $InputUsr1.ToUpper()
ADUwrite $InputUsr
};
yaynay($i)
if($i = 1){
GetOut
}
Get-PSSession | Remove-PSSession
}
此外,yaynay()中的'$ i'將會是可能包含'Y'或'N'的字符串。它永遠不會等於1或0.而奇怪的是,「yaynay」函數將刪除所有PSSession。看起來更好的方法是讓yaynay'return'成爲一個bool例如'if(yaynay){GetOut}'。 – 2014-12-02 02:50:19