私が最初に投稿したスクリプトに私の最初の問題が見つかりました。次の問題がありますが、これは簡単なものだと確信しています。Powershellはテキストファイルの各項目に対してコマンドを実行します
次のスクリプトの目的は、ホスト名のリストをテキストファイルで検出された各コンピュータに対して指定されたADSIコマンドを実行することです - 次のように例:
Computer01
Computer02
Computer03
問題は、スクリプトを実行すると、コンピュータ名にすべてのコンピュータ名ファイルを作成し、一緒にマッシュアップして1つの巨大なコンピュータ名を作ります。これは明らかに私が接続しようとしているコンピュータではありません!
ここにスクリプトがあります。私が走ろうとしているADSI機能は、3分の4ほどです。
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")
私はそれの前に「書く・ホスト」コマンドを使用してADSIコマンドを実行する場合は、ここで出力はPSコンソールにあるものです:
([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)
基本的に私は必要なもののためでありますすべての3台のコンピュータで順に実行されるADSIコマンド私は間違って何をしていますか?
http://stackoverflow.com/documentation/powershell/1067/loops – TessellatingHeckler