0

完全に機能する script1.ps1 という名前の PowerShell スクリプトがあります。スクリプトは次のとおりです。

Write-Host Script to display members of the local -ForegroundColor Green
Write-Host Administators group of a remote server. -ForegroundColor Green
Write-Host "`n"

$strComputer = Read-Host "Please enter the computer name"

$computer = [ADSI]("WinNT://" + $strComputer + ",computer")
$group = $computer.PSBase.Children.Find("administrators")

Write-Host ""
Write-Host "Computer Name : "$computer.Name
Write-Host "_____________________________________"
Write-Host ""
Write-Host "Group Name : "$Group.Name
Write-Host "_____________________________________"

$domain = $group.Path.Split("/")[2]
$string1 = "WinNT://" + $domain + "/" + $strComputer + "/"
$string2 = $strComputer + "/"
$string3 = "WinNT://"

$members  = ($group.PSBase.Invoke("Members") | Foreach-Object {$_.GetType().InvokeMember("Adspath", 'GetProperty', $null, $_, $null)}) -replace ($string1,$string2) -replace ($string3,"") 

Write-Host ""
Write-Host "Members : "
Write-Host ""
$members

しかし、ご覧のとおり、必要なコンピューターの名前を毎回書く必要があります。テキストまたは CSV ファイルからコンピュータ名を自動的に取得する関数またはその他の機能があるかどうかを自問します。スクリプトの冒頭でこのように、自動的にすべてのコンピューター名を取得し、ローカルの「管理者」グループのメンバーを取得して、1 つのテキスト ファイルまたは CSV ファイルにエクスポートしますか?


編集:与えられた答えに従ってスクリプトを更新しました。

完全に機能しない script1.ps1 という名前の PowerShell スクリプトがあります。スクリプトは次のとおりです。

Write-Host Script to display members of the local -ForegroundColor Green
Write-Host Administators group of a remote server. -ForegroundColor Green
Write-Host "`n"

Get-Content 'C:\Users\herbautr\Desktop\List1.txt' | ForEach-Object {
  Write-Host "-$_-"
  $computer = [ADSI]("WinNT://" + $_ + ",computer")
  $group = $computer.PSBase.Children.Find("administrators")

  Write-Host ""
  Write-Host "Computer Name : "$computer.Name
  Write-Host "_____________________________________"
  Write-Host ""
  Write-Host "Group Name : "$Group.Name
  Write-Host "_____________________________________"

  $domain = $group.Path.Split("/")[2]
  $string1 = "WinNT://" + $domain + "/" + $_ + "/"
  $string2 = $_ + "/"
  $string3 = "WinNT://"

  $members  = ($group.PSBase.Invoke("Members") | Foreach-Object {$_.GetType().InvokeMember("Adspath", 'GetProperty', $null, $_, $null)}) -replace ($string1,$string2) -replace ($string3,"") 

  Write-Host ""
  Write-Host "Members : "
  Write-Host ""
  $members
} | Set-Content 'C:\Users\herbautr\Desktop\administrators.txt'

List1.txt に 1 つのコンピューター名を追加しました。

01SPEAI-TEST1
01SPEAI-TEST2
02SPHPV-TEST1
01SLCPTAAP-PROD

そして、それは完全に機能します(そうではありません)(読み取り不能なレイアウト)

01SPEAI-PROD1/Administrator
VNF-PRINCIPAL/Admins du domaine
VNF-PRINCIPAL/svceri
01SPEAI-PROD2/Administrator
VNF-PRINCIPAL/Admins du domaine
VNF-PRINCIPAL/svceri
02SPHPV-PROD1/Administrator
VNF-PRINCIPAL/Admins du domaine
01SLCPTAAP-PROD/Administrator
VNF-PRINCIPAL/Admins du domaine
01SLCPTAAP-PROD/maint
VNF-PRINCIPAL/svcoraas
VNF-PRINCIPAL/svcvisionit
VNF-PRINCIPAL/GopOAS
VNF-PRINCIPAL/svcdigora

注 (15:18pm) : 5 つの名前で試しましたが、引き続き動作します..

名前を1つだけ追加すると「機能する」のはなぜですか? おお」

4

1 に答える 1