Powershell: pobierz zmienne z komputera zdalnego i przechowuj je w pliku programu Excel na komputerze lokalnym

0

Zadałem to pytanie wcześniej, ale myślę, że nie wyjaśniłem tego dobrze: pracuję nad projektem, który wykorzystuje skrypty PowerShell: Chciałbym wykonać na zdalnej maszynie, pliku o nazwie „Remote” (istniał w drugim obrazek w dół), który zawiera niektóre zmienne, chcę uzyskać zawartość tych zmiennych, gdy plik „Remote” jest wykonywany na zdalnej maszynie, że mogę zapisać je w pliku programu Excel na maszynie lokalnej. jak mogę zrób to proszę?

Pierwsze zdjęcie przedstawia polecenie, które wykona plik o nazwie Zdalny

Drugi obrazek przedstawia plik zdalny, który zawiera zmienne

Hkm Mahjoub
źródło
@Ramhound próbowałem zapisać wyniki pliku, który chcę wykonać w zmiennej, używając: $ result = invoke-command -computername (nazwa hosta) -filepath (ścieżka do pliku, który chcę wykonać na komputerze zdalnym ) wynik $ jest przechowywany na komputerze lokalnym, ale nie mogę uzyskać zawartości zmiennej wykonanej w tym pliku!
Hkm Mahjoub
Nie jesteśmy usługą pisania scenariuszy, więc musisz podać to, co próbowałeś (w ramach samego pytania), jeśli chcesz, aby ktoś poważnie spojrzał na twoje pytanie.
Ramhound

Odpowiedzi:

1

Przechwytywanie danych ze zdalnej sesji:

New-PSSession -ComputerName localhost -Credential (Get-Credential) | Out-Null
$a = Invoke-Command -Session (Get-PSSession) -ScriptBlock {
    $env:PROCESSOR_ARCHITECTURE | Out-String
}
$b = Invoke-Command -Session (Get-PSSession) -ScriptBlock {
    "Test Data"
}
Get-PSSession | Remove-PSSession

Jak widać na poniższym zrzucie ekranu ... zmienne $ai $bzapełnij się informacjami ze zdalnej PSSession (która może być na dowolnym komputerze z włączonym pilotem PowerShell )

wprowadź opis zdjęcia tutaj

To powinno dać ci to, czego potrzebują - można następnie wyeksportować dowolną zawartość chcesz plików tekstowych, plików CSV itd uzywajac Set-Content, Export-CSVi różne inne cmdlets / funkcje.

Fazer87
źródło
Sir, zredagowałem moją prośbę, czy możesz ją przeczytać i ponownie wyrazić swoją opinię?
Hkm Mahjoub
Cześć, myślę, że nadmiernie komplikujesz rzeczy ... w oparciu o zaktualizowane pytanie, musisz wykonać wiele poleceń invoke, aby uzyskać wiele zmiennych i starać się nie rozpowszechniać skryptu na maszynie do zdalnego wykonania
Fazer87,
: sir, wykorzystałem twój pomysł i mogłem uzyskać wszystkie zmienne przechowywane w pliku o nazwie „Remote”, a następnie zapisać je w pliku programu Excel, New-PSSession -ComputerName $ IP -Credential (Get-Credential) | Out-Null Invoke-Command -Session (Get-PSSession) -filepath C: \ Users \ Hkm \ Desktop \ Script \ Remote.ps1 $ a = @ (Invoke-Command -Session (Get-PSSession) -ScriptBlock {$ zmienna1, $ zmienna2, $ zmienna3, $ zmienna4}) Get-PSSession | Usuń-PSSesja $ a [0] #tutaj możesz zobaczyć zawartość zmiennej $ 1
Hkm Mahjoub
Genialnie, pamiętaj, że możesz umieścić tyle komend invoke, ile chcesz i odzyskać tyle osobnych zmiennych, ile chcesz. Jeśli to pomogło - zaakceptuj to jako odpowiedź lub głosuj za nią, aby można ją było zidentyfikować i pomóc również innym. Dzięki.
Fazer87
bardzo dziękuję panu za pomoc! Naprawdę doceniam twoją pomoc
Hkm Mahjoub
0

Z twojego komentarza mówisz, że masz już wyniki w lokalnej zmiennej $ wynik, więc wystarczy użyć funkcji wyjściowych pliku PowerShell, aby umieścić go w pliku do odczytu w programie Excel.

Utworzenie prawdziwego pliku .xlsx wymagałoby trochę pracy, ale można użyć pliku wartości oddzielonego przecinkami .csv. Istnieją przykłady na https://superuser.com/a/404096/1571 eksportu csv lub potokowania polecenia do pliku wyjściowego

nvuono
źródło
Sir, zredagowałem moją prośbę, czy możesz ją przeczytać i ponownie wyrazić swoją opinię?
Hkm Mahjoub