Loops 而值是x
作为PowerShell的新手,我有一个使用“switch”时可以使用的脚本。我尝试使用“while”使其工作,但无论值是1还是0,它都会退出 看看下面的脚本,有人能告诉我哪里出了问题 谢谢你的帮助Loops 而值是x,loops,powershell,while-loop,return-value,Loops,Powershell,While Loop,Return Value,作为PowerShell的新手,我有一个使用“switch”时可以使用的脚本。我尝试使用“while”使其工作,但无论值是1还是0,它都会退出 看看下面的脚本,有人能告诉我哪里出了问题 谢谢你的帮助 cls Import-Module -Name ActiveDirectory $ADpath = "OU=OU1,DC=DC1,DC=DC2,DC=DC3"; $i = 0 function yaynay(){ $i = Read-Host "`nSearch again.." "Y `
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(){
$x1=@{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
}
这里有几件事:
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
}
变量$i
是此函数的本地变量,因此它的值永远不会返回,因此不会影响外部发生的任何事情
yaynay($i)
您不需要使用括号来调用Powershell函数(尽管您确实需要调用方法),在这里这无关紧要,因为它只是将数字0作为参数传递,但是如果您尝试使用多个参数,则最终会传递一个数组yaynay
没有定义任何参数,因此它将忽略该参数
if($i = 1){
GetOut
}
将值1
分配给变量$i
。这总是正确的,因此您将始终调用GetOut
。比较应该是if($i-eq 1)
这里有几件事:
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
}
变量$i
是此函数的本地变量,因此它的值永远不会返回,因此不会影响外部发生的任何事情
yaynay($i)
您不需要使用括号来调用Powershell函数(尽管您确实需要调用方法),在这里这无关紧要,因为它只是将数字0作为参数传递,但是如果您尝试使用多个参数,则最终会传递一个数组yaynay
没有定义任何参数,因此它将忽略该参数
if($i = 1){
GetOut
}
将值1
分配给变量$i
。这总是正确的,因此您将始终调用GetOut
。比较应该是if($i-eq 1)
这里有几件事:
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
}
变量$i
是此函数的本地变量,因此它的值永远不会返回,因此不会影响外部发生的任何事情
yaynay($i)
您不需要使用括号来调用Powershell函数(尽管您确实需要调用方法),在这里这无关紧要,因为它只是将数字0作为参数传递,但是如果您尝试使用多个参数,则最终会传递一个数组yaynay
没有定义任何参数,因此它将忽略该参数
if($i = 1){
GetOut
}
将值1
分配给变量$i
。这总是正确的,因此您将始终调用GetOut
。比较应该是if($i-eq 1)
这里有几件事:
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
}
变量$i
是此函数的本地变量,因此它的值永远不会返回,因此不会影响外部发生的任何事情
yaynay($i)
您不需要使用括号来调用Powershell函数(尽管您确实需要调用方法),在这里这无关紧要,因为它只是将数字0作为参数传递,但是如果您尝试使用多个参数,则最终会传递一个数组yaynay
没有定义任何参数,因此它将忽略该参数
if($i = 1){
GetOut
}
将值
1
分配给变量$i
。这总是正确的,因此您将始终调用GetOut
。比较应该是如果($i-eq 1)
同样,yaynay()中的$i
将是可能包含“Y”或“N”的字符串。它永远不会等于1或0。奇怪的是,一个“yaynay”函数会删除所有的PSSessions。似乎更好的方法是让yaynay返回一个bool,例如if(yaynay){GetOut}
。另外,yaynay()中的$i
将是可能包含“Y”或“N”的字符串。它永远不会等于1或0。奇怪的是,一个“yaynay”函数会删除所有的PSSessions。似乎更好的方法是让yaynay返回一个bool,例如if(yaynay){GetOut}
。另外,yaynay()中的$i
将是可能包含“Y”或“N”的字符串。它永远不会等于1或0。奇怪的是,一个“yaynay”函数会删除所有的PSSessions。似乎更好的方法是让yaynay返回一个bool,例如if(yaynay){GetOut}
。另外,yaynay()中的$i
将是可能包含“Y”或“N”的字符串。它永远不会等于1或0。奇怪的是,一个“yaynay”函数会删除所有的PSSessions。似乎更好的方法是让yaynay返回一个bool,例如if(yaynay){GetOut}
。