Powershell针对文本文件中的每个项目运行命令

Powershell针对文本文件中的每个项目运行命令,powershell,adsi,Powershell,Adsi,发现我最初发布的脚本存在问题。这是下一个问题,我相信这是一个简单的问题 以下脚本的目标是对主机名列表文本文件中的每台计算机运行指定的ADSI命令——示例如下: 计算机01 计算机02 计算机03 问题是,在运行脚本时,它会将计算机名文件中的每台计算机名混合在一起,形成一个巨大的计算机名,显然,这不是我要连接的计算机 这是剧本。我正在尝试运行的ADSI函数大约是下降的3/4 Function Get-OpenFile($initialDirectory) { [System.Reflection

发现我最初发布的脚本存在问题。这是下一个问题,我相信这是一个简单的问题

以下脚本的目标是对主机名列表文本文件中的每台计算机运行指定的ADSI命令——示例如下:

计算机01

计算机02

计算机03

问题是,在运行脚本时,它会将计算机名文件中的每台计算机名混合在一起,形成一个巨大的计算机名,显然,这不是我要连接的计算机

这是剧本。我正在尝试运行的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命令时,前面有一个“Write Host”命令,那么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)

基本上,我需要的是在所有三台计算机上按顺序运行ADSI命令。我做错了什么?

正如TessallatingHeckler链接到的。 从文件或哈希表中获取计算机,并将其分配给变量

$computers = @("Computer01", "Computer02", "Computer03")

foreach($computer in $computers)
    {
    ([ADSI]"WinNT://$computer/$LocalGroup,group").psbase.Invoke("Add",([ADSI]"WinNT://$Domain/$DomainGroup").path)
    }

希望这有帮助。

正如TessallatingHeckler链接到的。 从文件或哈希表中获取计算机,并将其分配给变量

$computers = @("Computer01", "Computer02", "Computer03")

foreach($computer in $computers)
    {
    ([ADSI]"WinNT://$computer/$LocalGroup,group").psbase.Invoke("Add",([ADSI]"WinNT://$Domain/$DomainGroup").path)
    }

希望这能有所帮助。

非常感谢您,这非常有效。我所做的是将@()操作符添加到变量中,该变量包含使用文件对话框函数提取的信息。一旦定义了它,我就能够将该命令分别应用于每台计算机!我将在另一个帖子中显示固定代码!很高兴知道它起作用了,谢谢你让我们知道。非常感谢你,这非常有效。我所做的是将@()操作符添加到变量中,该变量包含使用文件对话框函数提取的信息。一旦定义了它,我就能够将该命令分别应用于每台计算机!我将在另一个帖子中显示固定代码!很高兴知道它起作用了,谢谢你让我们知道。