我有一个包含服务器列表的文本文件,每行一个,例如:
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 的值:调试运行屏幕截图