J'ai trouvé mon problème initial avec le script que j'ai posté à l'origine. Voici le prochain numéro, et je suis sûr que c'est facile.Powershell exécuter la commande contre chaque élément dans le fichier texte
Le but du script suivant pour exécuter la commande ADSI spécifiée contre chaque ordinateur trouvé dans un fichier texte de la liste des noms d'hôte - par exemple comme suit:
Ordinateur01
COMPUTER02
Computer03
Le problème est que lors de l'exécution du script, il faut CHAQUE nom de l'ordinateur dans le nom de l'ordinateur fichier et les écrase ensemble pour faire un nom d'ordinateur géant, qui, de toute évidence, n'est pas l'ordinateur auquel j'essaye de me connecter!
Voici le script. La fonction ADSI que j'essaie de faire fonctionner est à environ 3/4 de la baisse.
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")
Si je lance la commande ADSI avec un « Write-Host » commande devant elle, voici ce que la sortie est de la PS Console:
([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)
Essentiellement ce que j'ai besoin est pour la La commande ADSI doit être exécutée sur TOUS les trois ordinateurs en séquence. Qu'est-ce que je fais mal?
http://stackoverflow.com/documentation/powershell/1067/loops – TessellatingHeckler