Gå til innhold

Powershell på tvers av servere?


Anbefalte innlegg

Hei.

 

På jobb har vi gjerne flere servere som vi bruker til forskjellige ting.

F.eks en til DHCP, en til Printserver, en til AD osv

(Egentlig har vi mange servere for alt dette, men det er ikke poenget)

 

Uansett. Noen kjører Windows server 2012, og andre eldre, helt ned til 2008

 

Alle stort sett knyttet mot samme domene, og jeg kan logge inn på alle med samme brukerkonto.

 

 

Men om jeg vil lage et script som gjør noe med DHCP resservasjoner, samt redigere noe i AD, og kanskje noe i forbindelse med printere.

Hva gjør jeg da?

 

Kan jeg bruke et script på en server og få det til å gjøre ting mot de andre?

I så fall, hvordan?

 

Et annet problem er jo at powershell ikke er like godt støttet i eldre versjoner.

Endret av Evelen!
Lenke til kommentar
Videoannonse
Annonse
  • 2 uker senere...

 

 

 

 

 

 

Følgende fungerer og gir IPconig remote:

 

PS C:\Users\BRUKERNAVN> $server = New-PSSession -ComputerName MIN_SERVER
PS C:\Users\BRUKERNAVN> Invoke-Command -Session $server -ScriptBlock { ipconfig }

 

følgende fungerer også for å gi meg remote IPconfig:

 

PS C:\Users\BRUKERNAVN> Enter-PSSession MIN_SERVER
[MIN_SERVER]: PS C:\Users\BRUKERNAVN\Documents> ipconfig
....ipconfig her....
[MIN_SERVER]: PS C:\Users\BRUKERNAVN\Documents> Exit-PSSession
PS C:\Users\BRUKERNAVN>

 

 

 

 

 

For først å ta pssesion, problemet er at man ikke får satt variabler på tvers av maskinene.

 

eks, fra server til pc:

 

PS C:\Users\BRUKERNAVN> Enter-PSSession MIN_SERVER
[MIN_SERVER]: PS C:\Users\BRUKERNAVN\Documents> Set-Variable -Name var_test -Value "Fisk"
[MIN_SERVER]: PS C:\Users\BRUKERNAVN\Documents> Write-Host $var_test
Fisk
[MIN_SERVER]: PS C:\Users\BRUKERNAVN\Documents> Exit-PSSession
PS C:\Users\BRUKERNAVN> Write-Host $var_test

PS C:\Users\BRUKERNAVN>

 

Og fra pc til server:

 

PS C:\Users\BRUKERNAVN> Set-Variable -Name var_test -Value "Kanin"
PS C:\Users\BRUKERNAVN> Write-Host $var_test
Kanin
PS C:\Users\BRUKERNAVN> Enter-PSSession -ComputerName MIN_SERVER
[MIN_SERVER]: PS C:\Users\BRUKERNAVN\Documents> Write-Host $var_test

[MIN_SERVER]: PS C:\Users\BRUKERNAVN\Documents>

 

 

 

Så Invoke-Command, samme problem her:

 

Server til PC:

 

PS C:\Users\BRUKERNAVN> $server = New-PSSession -Computername MIN_SERVER
PS C:\Users\BRUKERNAVN> Invoke-Command -Session $server -ScriptBlock { Set-Variable -Name var_test -Value "Katt" }
PS C:\Users\BRUKERNAVN> Invoke-Command -Session $server -ScriptBlock { Write-Host $var_test }
Katt
PS C:\Users\BRUKERNAVN> Write-Host $var_test

PS C:\Users\BRUKERNAVN>

 

PC Til Server:

 

PS C:\Users\BRUKERNAVN> Set-Variable -Name var_test -Value "Ulv"
PS C:\Users\BRUKERNAVN> Invoke-Command -Session $server -ScriptBlock { Write-Host $var_test }
Katt
PS C:\Users\BRUKERNAVN>

Så, hvordan løser man dette om man vil bruke variabler på tvers?

Lenke til kommentar

Med Invoke-Command kan du bruke -Args (og param()) hvis du vil sende verdier til server og Return for å returnere verdier.

PS C:\Users\BRUKERNAVN> $a = "test"
PS C:\Users\BRUKERNAVN> $server = New-PSSession -Computername MIN_SERVER
PS C:\Users\BRUKERNAVN> Invoke-Command -Session $server -ScriptBlock { param($a); Set-Variable -Name var_test -Value "Katt $a" } -Args $a
PS C:\Users\BRUKERNAVN> $b = Invoke-Command -Session $server -ScriptBlock { Return $var_test }
PS C:\Users\BRUKERNAVN> Write-Host $b
Katt test
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...