Будет ли это работать?
$FilePath = 'Path\To\Output\File.txt'
net view | Out-File -FilePath $FilePath
net use | Out-File -FilePath $FilePath -NoClobber -Append
net session | Out-File -FilePath $FilePath -NoClobber -Append
Или связать его:
Invoke-Command {net view ; net use ; net session} | Out-File -FilePath $FilePath -NoClobber -Append
РЕДАКТИРОВАТЬ на основе комментария (но записывается свободно из памяти на iphone, так что, возможно,незначительные ошибки): чтобы выполнить это удаленно для списка серверов, вы сначала включаете удаленное взаимодействие Powershell на серверах, есть много способов сделать это, и вот один из них - запустить в локальном сеансе PowerShell на каждом сервере (администратор Runas):
winrm quickconfig
Затем, предполагая, что все они имеют одинаковый логин, вы можете:
$Cred = Get-Credential
$Servers = ’server1.example.com’,’server2.example.com’
Invoke-Command -ComputerNames $Servers -Credential $Cred -ScriptBlock {
Do stuff
Do some other stuff
} | Out-File -FilePath $FilePath -NoClobber -Append
Результаты возвращаются в виде массива, поэтому, если вы хотите разделить вывод для каждого сервера, вы можете попробовать:
$a = Invoke-Command [...]etc but skip the |Out-File
затем выполните некоторый цикл, который, по сути, выполняет эту часть, предоставляя вам ручной путь:
$a[0] | Out-File -FilePath $FilePath1 -NoClobber -Append #result from first computer
$a[1] | Out-File -FilePath $FilePath2 -NoClobber -Append #result from second computer
...
и пример цикла:
$a | Foreach-Object {$_ | Out-File -FilePath $Path -Append -NoClobber}
И читатьимена серверов из текстового файла, одно имя сервера в строке:
$Servers = Get-Content -Path ’C:\temp\example.txt’
Invoke-Command -ComputerName $Servers [...]etc