在所有远程设备上运行命令,并在使用powershell的本地计算机上获取结果
我想在所有远程服务器(大约100台服务器)上远程运行一个命令。此命令收集所有iis并保存在txt文件中在所有远程设备上运行命令,并在使用powershell的本地计算机上获取结果,powershell,iis,powershell-4.0,powershell-remoting,Powershell,Iis,Powershell 4.0,Powershell Remoting,我想在所有远程服务器(大约100台服务器)上远程运行一个命令。此命令收集所有iis并保存在txt文件中 (C:\Windows\System32\inetsrv\appcmd.exe list app >C:\Temp\list.txt) 当然,我的问题是如何获取本地机器中所有远程设备的列表。我不想在远程服务器上收集每个列表 $Servers = @("remotemachine1", "remotemachine2", "remotemachine3" ) foreach ($se
(C:\Windows\System32\inetsrv\appcmd.exe list app >C:\Temp\list.txt)
当然,我的问题是如何获取本地机器中所有远程设备的列表。我不想在远程服务器上收集每个列表
$Servers = @("remotemachine1", "remotemachine2", "remotemachine3" )
foreach ($server in $Servers) {
$PSSession=New-PsSession -ComputerName $server
Invoke-command -Session $PSSession -ScriptBlock {
Write-Verbose -Message "Server: $env:ComputerName" -Verbose
C:\Windows\System32\inetsrv\appcmd.exe list app >C:\Temp\list.txt
}
}
Get-PSSession | Remove-PSSession
您可以按如下方式返回此文件的内容:
$Servers = @("remotemachine1", "remotemachine2", "remotemachine3" )
foreach ($server in $Servers) {
$PSSession=New-PsSession -ComputerName $server
$result = Invoke-command -Session $PSSession -ScriptBlock {
Write-Verbose -Message "Server: $env:ComputerName" -Verbose
return (C:\Windows\System32\inetsrv\appcmd.exe list app)
}
$result > C:\Temp\list.txt
}
Get-PSSession | Remove-PSSession
Write output
并将其保存到变量中,而不是输出C:\Temp\list.txt
-ComputerName
参数即可最后,
$Array
应该可以保存所有内容。您还可以将invoke命令通过管道传输到一个文件中
invoke command-session$pssession-scriptblock{commands on remote machine}| out file-literalpath“c:\temp\$server results.txt”
可能在返回后还需要一个“cat”,ty:)
$Array = New-Object System.Collections.ArrayList
$Servers = @("remotemachine1", "remotemachine2", "remotemachine3" )
foreach ($server in $Servers) {
$Results = Invoke-command -ComputerName -ScriptBlock {
Write-Verbose -Message "Server: $env:ComputerName" -Verbose
Write-Output (C:\Windows\System32\inetsrv\appcmd.exe list app)
}
$Row = "" | Select Server,Results
$Row.Server = $Server
$Row.Results = $Results
[void]$Array.Add($Row)
}