jeg er kommet så langt at den her virker
Invoke-Command -ComputerName SERVER -Credential DOMAIN\USER -ScriptBlock {Get-HotFix}
jeg får password boks og logger på og får så resultat.
Kan jeg udvide den til at gøre det på 10 servere fra en txt fil som er i samme domæne og så lægge resultat i en txt eller csv fil?
--
Sidst redigeret 23-10-2023 15:55
Fik også save til txt file til at virke.
Så det jeg mangler er at køre det mod 10 servere.
forestiller mig at jeg kan logge på i logon boks og så kører den mod første server i en fil og gemmer resultat i min outputfil og går videre til næste server o.s.v.
er det muligt?
--
Er serverne i domæne?
Jeg har før bare læst en server liste ud af ad og lavet en for each loop på objekterne. Alternativt kan du læse en txt fil som er komma repeteret og lave det til et array og loope over
--
jeg mener du bare kan:
Invoke-Command -ComputerName SERVER1,Server2,server3 -Credential DOMAIN\USER -ScriptBlock {Get-HotFix}
men husk "altid" at kigge på MS Documentation, der er næsten altid gode eksempler på hvordan du kommer i gang
https://learn.microsoft.com[...]
kig på eksempel 6 og 7
/Fido-dk
--
2 sekunder på ChatGPT:
# Define the credentials
$credential = Get-Credential -Credential "DOMAIN\USER"
# Read the list of servers from the text file
$serverList = Get-Content -Path "ServerList.txt"
# Iterate through the server list and run Invoke-Command
foreach ($server in $serverList) {
$scriptBlock = {
Get-HotFix
}
Invoke-Command -ComputerName $server -Credential $credential -ScriptBlock $scriptBlock
}
--
Tjek min side omkring Tog og Modeltog: http://www.simontog.dk[...] super...
yes har set MS vejledninger og nået hvor jeg nåede til.
det var lige det med de amnge servere der drillede.
Kigger og afprøver.
tak for tip
--
Hej,
Som #5 skriver burde det virke.
Du bør nok lige læse på noget basis Powershell.
Bemærk at:
1. Når du benytter "Invoke-Command" mod andre computere går det via Powershell remoting, som måske/måske ikke er slået til på de computere du prøver at ramme.
2. Get-HotFix kræver formentlig en nyere computer, dvs nok kun Windows 10+.
Du kan også blot lave simpelt array og loop igennem det:
# Define the credentials
$credential = Get-Credential -Credential "DOMAIN\USER"
# Read the list of servers from variable string array
$serverList = "server1","server2","server3"
$scriptBlock = {
Get-HotFix
}
# Iterate through the server list and run Invoke-Command
foreach ($server in $serverList) {
Invoke-Command -ComputerName $server -Credential $credential -ScriptBlock $scriptBlock
}
--
Mange af ovenstående svar er korrekte, men den pæne måde, i min optik, vil være følgende:
# Lav en variabel, hvor du gemmer dine credentials
$Creds = Get-Credential (husk at specificere domæne i dit username)
# Har du serverne i et text-dokument kan du hente indholdet via. Get-Content
$Servers = Get-Content -Path C:\Din\Fix.txt
# Hvis du har servere i en Variabel
$Servers = 'ServerA','ServerB','ServerC'
# For at køre koden ude på en anden server er der 2 muligheder
1. Invoke-Command (denne kører en scriptblock på serverenl, og returnerer det. Supporterer flere servere)
2. Enter-PSSession (denne skaber blot en session, og er mere tiltænkt at få en vedholdende session)
# I dette tilfælde bruges Invoke-Command, og vi gemmer det i en variabel, der hedder Output
$Output = Invoke-Command -ComputerName $Servers -Credential $Creds -Scriptblock { Get-HotFix}
I $Output vil du nu have din information :)
--
“I will not let anyone walk through my mind with their dirty feet.”
-Mahatma Gandhi