$Output = 'C:\temp\Result.txt' $Servers = Get-Content 'C:\temp\ServerNames.txt' $ScriptBlock = { $Groups = Get-WmiObject Win32_GroupUser -ComputerName $Servers $LocalAdmins = $Groups | Where GroupComponent –like '*"Administrators"' $LocalAdmins |% { $_.partcomponent –match ".+Domain\=(.+)\,Name\=(.+)$" > $nul $matches[1].trim('"') + "\" + $matches[2].trim('"') } } foreach ($ServerNames in $Servers) { "Local Admin group members in $ServerNames" | Out-File $Output -Append Invoke-command -ScriptBlock $ScriptBlock -ComputerName $ServerNames | Out- File $Output -Append }
我正在使用上述脚本让本地pipe理员组成员运行在多个服务器上,我收到错误 –
无法validation参数“ComputerName”上的参数。 参数是空或空的。 提供一个非空或空的参数,然后再次尝试该命令。 + CategoryInfo:InvalidData:(:) [Get-WmiObject],ParameterBindingValidationException + FullyQualifiedErrorId:ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetWmiObjectCommand + PSComputerName:Computer
你能帮我纠正一下吗?
ServerNames.txt文件中的服务器名称采用以下所述的格式 –
ServerNames.txt
$Output = 'C:\temp\Result.txt' $Servers= Get-Content 'C:\temp\ServerNames.txt' $ScriptBlock = { $Groups = Get-WmiObject Win32_GroupUser -ComputerName $Using:ServerName $LocalAdmins = $Groups | Where GroupComponent –like '*"Administrators"' $LocalAdmins | ForEach-Object { If($_.partcomponent –match ".+Domain\=(.+)\,Name\=(.+)$"){ $matches[1].trim('"') + "\" + $matches[2].trim('"') } } } ForEach ($ServerName in $Servers) { "Local Admin group members in $ServerName" | Out-File $Output -Append Invoke-command -ScriptBlock $ScriptBlock -ComputerName $ServerName | Out-File $Output -Append }
但海事组织这可能是一个简单的没有不必要的变数
$Output = 'C:\temp\Result.txt' $Servers= Get-Content 'C:\temp\ServerNames.txt' $ScriptBlock = { Get-WmiObject Win32_GroupUser -ComputerName $Using:ServerName | Where GroupComponent –like '*"Administrators"'| ForEach-Object { If($_.partcomponent –match ".+Domain\=(.+)\,Name\=(.+)$"){ $matches[1].trim('"') + "\" + $matches[2].trim('"') } } } ForEach ($ServerName in $Servers) { "Local Admin group members in $ServerName" | Out-File $Output -Append Invoke-command -ScriptBlock $ScriptBlock -ComputerName $ServerName | Out-File $Output -Append }