针对文本文件中每个项目的 Powershell 运行 命令
Powershell run command against each item in text file
发现最初发布的脚本存在问题。这是下一期,我相信这很简单。
以下脚本的目标是 运行 针对在主机名列表文本文件中找到的每台计算机执行指定的 ADSI 命令——示例如下:
Computer01
Computer02
Computer03
问题是,当 运行 运行脚本时,它会获取计算机名称文件中的每个计算机名称,并将它们混合在一起形成一个巨大的计算机名称,这显然不是我正在尝试的计算机连接到!
这是脚本。我正在尝试 运行 的 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。
从文件或哈希 table 获取您的计算机并将它们分配给变量。
$computers = @("Computer01", "Computer02", "Computer03")
foreach($computer in $computers)
{
([ADSI]"WinNT://$computer/$LocalGroup,group").psbase.Invoke("Add",([ADSI]"WinNT://$Domain/$DomainGroup").path)
}
希望对您有所帮助。
发现最初发布的脚本存在问题。这是下一期,我相信这很简单。
以下脚本的目标是 运行 针对在主机名列表文本文件中找到的每台计算机执行指定的 ADSI 命令——示例如下:
Computer01
Computer02
Computer03
问题是,当 运行 运行脚本时,它会获取计算机名称文件中的每个计算机名称,并将它们混合在一起形成一个巨大的计算机名称,这显然不是我正在尝试的计算机连接到!
这是脚本。我正在尝试 运行 的 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。 从文件或哈希 table 获取您的计算机并将它们分配给变量。
$computers = @("Computer01", "Computer02", "Computer03")
foreach($computer in $computers)
{
([ADSI]"WinNT://$computer/$LocalGroup,group").psbase.Invoke("Add",([ADSI]"WinNT://$Domain/$DomainGroup").path)
}
希望对您有所帮助。