Gefunden mein erstes Problem mit dem Skript, das ich ursprünglich gepostet habe. Hier ist das nächste Problem, und ich bin mir sicher, dass dies ein leichtes ist.Powershell run Befehl gegen jedes Element in der Textdatei
Das Ziel des folgenden Skript ist den angegebenen ADSI-Befehl für jeden Computer in einer Host-Namen-Liste Textdatei gefunden laufen - Beispiel wie folgt:
Computer01
Computer02
Computer03
Das Problem besteht darin, dass bei der Ausführung des Skripts JEDER Computername im Computernamen eingegeben wird file und mashes sie zusammen, um einen riesigen Computernamen zu machen, der offensichtlich nicht der Computer ist, mit dem ich mich verbinde!
Hier ist das Skript. Die ADSI-Funktion, die ich ausführen möchte, ist etwa 3/4 von unten.
Function Get-OpenFile($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "Text Files (*.txt)|*.txt)|CSV Files (*.csv)|*.csv)"
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.filename
$OpenFileDialog.ShowHelp = $true
}
$InputFile = Get-OpenFile
$Computers = get-content -path $InputFile
Do {
write-host = "Do you want to Enter a Domain Group to Add to the Local Administrators Group? Type Y for Yes, or N for No"
$GroupAddOperation = read-host = " "
If ($GroupAddOperation -eq "N") {break}
Do {
write-host = "Enter Group Name"
$groupname = Read-Host " "
$DomainGroup = $groupname
$LocalGroup = "Administrators"
$Domain = "domainname.com"
$pc = $computers
([ADSI]"WinNT://$pc/$LocalGroup,group").psbase.Invoke("Add",([ADSI]"WinNT://$Domain/$DomainGroup").path)
Write-Host "Do you want to Add Another Group? Enter Y for Yes or N for No"
$AddAnotherGroup = Read-Host " "
}
Until ($AddAnotherGroup -eq "N")
}
Until ($GroupAddOperation -eq "N")
Wenn ich das ADSI-Befehl mit einem „Write-Host“ Befehl vor ihm laufen, hier ist es, was die Ausgabe an die PS-Konsole ist:
([ADSI] WinNT://Computer01.domainname.com Computer02.domainname.com Computer03.domainname.com/Administrators group).psbase.Invoke(Add,([ADSI]WinNT://us.kworld.kpmg.com/us-sg eaudit business).p
ath)
Im Grunde, was ich brauche für die ist Der ADSI-Befehl wird nacheinander auf ALLEN DREI Computern ausgeführt. Was mache ich falsch?
http://stackoverflow.com/documentation/powershell/1067/loops – TessellatingHeckler