Powershell脚本foreach($x in$y)工作不正常

Powershell脚本foreach($x in$y)工作不正常,powershell,automation,Powershell,Automation,在远离PowerShell太久之后,我只是写了一些基本的脚本,我有点被困在这里了。试图将多个参数传递给函数中的单个“参数”,但它只会返回字符串中的第一个值 #-------------------------------- # Returns logged on user of machine(s) given in parameter #-------------------------------- function Get-UserLogged{ param($computerNa

在远离PowerShell太久之后,我只是写了一些基本的脚本,我有点被困在这里了。试图将多个参数传递给函数中的单个“参数”,但它只会返回字符串中的第一个值

#--------------------------------
# Returns logged on user of machine(s) given in parameter
#--------------------------------
function Get-UserLogged{
    param($computerName)
    foreach ($computer in $computerName) {

        return (query user /server:$computerName)
    }
}
现在如果我调用函数并运行,例如

Get-UserLogged Server01 Server02 Server03
它将只返回服务器1的输出,因此foreach似乎没有按预期工作

同一问题的不同脚本:

function p{
    param($computerName)

    foreach ($computer in $computerName) {

        return (test-connection $computer -Count 1)

    }

}
如果我跑步:

p localhost, google.com, bbc.com

它只会尝试在循环中引用数组
$computerName
,而不是“当前项”
$computer

function Get-UserLogged{
    param($computerName)
    foreach ($computer in $computerName) {

        query user /server:$computer
    }
}
要将字符串数组传递给参数,请使用逗号分隔项目:

Get-UserLogged -computerName Server01, Server02, Server03

谢谢,那么参数在默认情况下是一个数组,还是在不带空格的字符串的情况下成为数组?我的印象是,默认情况下,它是一个字符串,如果你在它前面加上@it,那么它就是一个数组。它是由逗号组成的数组。您尚未在
param()
-部分中为参数指定类型,因此当它是单个单词时(如果值中有空格,则将其引用),powershell会将其设置为字符串。如果使用了
-computerName 1
,则它将是一个
int
。在引用当前项而不是数组后,实际上仍然存在相同的问题。无法测试Get UserLogged,因为我家里没有任何服务器,但我尝试了另一个脚本:(将代码粘贴到原始帖子中,因为不确定注释格式)
$computer
无法工作,因为您调用它时没有逗号。因此,只有
Server1
被传递到您的“数组”
$computerName
Server02
Server03
作为未捕获的参数转到参数数组
$args
。我的答案是由两部分组成的:)我相信我已经解决了这两个问题,但仍然得到了相同的结果,请参见顶部帖子中的编辑。谢谢你的帮助,我不知道为什么我觉得这么难,需要去买一本初学者的书我想这是什么类型的?Server01 Server02 Server03无论默认值是什么,我确实尝试将参数设置为字符串和数组,但得到了相同的结果您不应该使用return语句。Return告诉PowerShell退出当前函数/脚本。相反,当您想要返回多个值时,只需调用将生成这些值的命令(例如,在上面的示例中,删除return语句和圆括号)。另外,在第一个示例中,foreach语句中的命令使用$computerName(传入的集合),而不仅仅是$computer(foreach循环的当前迭代中当前正在处理的项)。改变这两件事,你的状态就会好得多。@KirkMunro我不知道你从哪里得到的。这是一种回归的方式,但不是唯一的方式。Return可用于从函数返回值,而不会出现问题或退出脚本。@KirkMunro我不知道删除“Return”的原因,但它解决了问题。。。谢谢你的帮助