我有一个包含服务器列表的文本文件,每行一个,例如:
SERVER1
SERVER2
SERVER3
当我Get-Content对文件执行 a 时,我确实看到输出为:
SERVER1
SERVER2
SERVER3
所以现在我正在编写一个函数,我想将多个服务器作为一个数组接收,并迭代函数中的数组。该功能目前是这样的:
function Get-LocalAdministrators 
{
    param(
        [Parameter(Mandatory=$True,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
        [string[]]$computers
    )
    foreach ($computername in $computers)
    {
        $ADMINS = get-wmiobject -computername $computername -query "select * from win32_groupuser where GroupComponent=""Win32_Group.Domain='$computername',Name='administrators'""" | % {$_.partcomponent}
        foreach ($ADMIN in $ADMINS) 
        {
            $admin = $admin.replace("\\$computername\root\cimv2:Win32_UserAccount.Domain=","") # trims the results for a user
            $admin = $admin.replace("\\$computername\root\cimv2:Win32_Group.Domain=","") # trims the results for a group
            $admin = $admin.replace('",Name="',"\")
            $admin = $admin.REPLACE("""","") # strips the last "
            $objOutput = New-Object PSObject -Property @{
                Machinename = $($computername)
                Fullname = ($admin)
                #DomainName  =$admin.split("\")[0]
                #UserName = $admin.split("\")[1]
            }
        $objReport+=@($objOutput)
        }
        return $objReport
    }
}
然后我打算将该函数称为:
Get-Content “C:\temp\computers.txt” | Get-LocalAdministrators
但是,当我运行该函数时,我可以看到 $computers 的值是{SERVER3}(即文件中的最后一行。)我试图通过谷歌找到答案,虽然有很多数组参考/示例,我找不到一个将文件中的值结合到param语句中的数组中的位置。请原谅我的 PS newb 无知,并提供我需要的线索......谢谢。
更新:链接到在 PowerGUI 脚本编辑器中运行的脚本的屏幕截图,显示运行期间 $computers 的值:调试运行屏幕截图