Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

Køre PowerShell script på flere maskiner via remot...

Af Gæst Tobias | 08-10-2021 15:41 | 3103 visninger | 14 svar, hop til seneste
Nogle PowerShell nørder som venligst vil se på nedenstående og fortælle mig hvad jeg overser? Jeg forsøger at køre dette PS script remotely på flere maskiner. Den kan pt. kun køre lokalt på en maskine med admin rettigheder. Men ligeså snart jeg forsøger at køre scriptet via remote, så tilføjes disse værdier ikke i registry. Tråden på stackoverflow kan findes her: https://stackoverflow.com[...] If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) { Write-Host "You didn't run this script as an Administrator. This script will self elevate to run as an Administrator and continue." Start-Sleep 1 Write-Host " 3" Start-Sleep 1 Write-Host " 2" Start-Sleep 1 Write-Host " 1" Start-Sleep 1 Start-Process powershell.exe -ArgumentList ("-NoProfile -ExecutionPolicy Bypass -File `"{0}`"" -f $PSCommandPath) -Verb RunAs Exit } $ErrorActionPreference = 'silentlycontinue'``` Function ABC{ Write-Host "Showing tray icons..." Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" -Name "EnableAutoTray" -Type DWord -Value 0 Write-Host "Done - Now showing all tray icons" Write-Host "Showing known file extensions..." Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "HideFileExt" -Type DWord -Value 0 Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People" -Name "PeopleBand" -Type DWord -Value 0 } taskkill /f /im explorer.exe start explorer.exe ABC
--
Gæstebruger, opret dit eget login og få din egen signatur.
#1
Porphyra
Giga Supporter
08-10-2021 16:03

Rapporter til Admin
Har maskinerne en lokal administrator? Hvis de er i et domæne så kan det være de ikke har det og man skal bruge domain credentials i stedet. Ellers så tror jeg det er -noprofile parameteren der giver problemer, ikke sikker på at den virker i remote sessions (jeg prøvede lige og kunne faktisk ikke få den til at gøre noget på min egen PC, staller bare out). Der nævnes i hvert fald noget om at profiler og komander relateret til dem ikke loades automatisk under Profiles and remote sessions https://docs.microsoft.com[...] Kan være du skal køre en invoke-command som der snakkes om.
--
Du er altid velkommen til at sende en PM hvis jeg ikke ser din kommentar
#2
mr doc22
Junior Supporter
08-10-2021 16:07

Rapporter til Admin
Har du tjekke denne side: https://stackoverflow.com[...]
--
Ryzen 5 5600X,ASUS TUF GAMING B550 PLUS,G.skill 3600 MHz AUTO C16-16-16-36 4x8GB,AOC G2590FX,Corsair RM850,Sapphire RX 5600 XT 6GB,1 TB NVMe ADATA
#3
Tobias
Gæst
08-10-2021 16:13

Rapporter til Admin
Der var lige en fejl i koden. Prøv igen :)
--
Gæstebruger, opret dit eget login og få din egen signatur.
#4
Porphyra
Giga Supporter
08-10-2021 16:21

Rapporter til Admin
Har ikke kørt hele koden, afprøvede bare: powershell -noprofile Og det virkede ikke for mig så der er måske noget galt med at køre med -noprofile parameteren.. Testede også dette, og et nyt vindue åbner kortvarigt og lukker så igen. Start-Process powershell.exe -ArgumentList ("-NoProfile -ExecutionPolicy Bypass -File `"{0}`"" -f $PSCommandPath) -Verb RunAs
--
Du er altid velkommen til at sende en PM hvis jeg ikke ser din kommentar
#5
Tobias
Gæst
08-10-2021 16:27

Rapporter til Admin
#2 Har tjekket. Har været nettet igennem ret meget faktisk :( #4, Hvad vil dit forslag være? Kunne det ske, at jeg skal køre scriptet som System bruger og ikke administrator? Det skal siges, at brugerne har admin rettigheder.
--
Gæstebruger, opret dit eget login og få din egen signatur.
#6
mr doc22
Junior Supporter
08-10-2021 16:50

Rapporter til Admin
#5 Hvad hvis du starter powershell med direkte arguments: Start-Process PowerShell -Verb RunAs "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`"";
--
Ryzen 5 5600X,ASUS TUF GAMING B550 PLUS,G.skill 3600 MHz AUTO C16-16-16-36 4x8GB,AOC G2590FX,Corsair RM850,Sapphire RX 5600 XT 6GB,1 TB NVMe ADATA
#7
Porphyra
Giga Supporter
08-10-2021 17:06

Rapporter til Admin
#6 Den virker heller ikke #5 Hvis brugerne har admin rettighederne så ville det nok være en god ide at prøve, ellers så kunne du prøve at lege med invoke som jeg linkede, ikke noget jeg har erfaring med. Men behøver du overhovedet kontrolstrukturen og elevation? Hvis du kan remote ind på en maskine, kan du så ikke bare nøjes med ExecutionPolicy Bypass, og køre ABC alene? Jeg er ikke helt nok inde i Powershell til at kunne sige hvad præcist der går galt, bruger det til lidt simplere ting. Hvis det var i et domæne så ville jeg nok køre de regedits med en GPO i stedet når det skal til flere maskiner.
--
Du er altid velkommen til at sende en PM hvis jeg ikke ser din kommentar
#8
anox
Gæst
08-10-2021 17:29

Rapporter til Admin
Du kan prøve at bruge Powershell's invoke command: invoke-Command -ComputerName server `-FilePath "C:\script.ps1" -creds
--
Gæstebruger, opret dit eget login og få din egen signatur.
#9
upz
Monsterbruger
08-10-2021 20:01

Rapporter til Admin
Du burde kunne bruge det her som inspiration til at løse dit problem https://pastebin.com[...]
--
Sidst redigeret 08-10-2021 20:03
#10
Tobias
Gæst
08-10-2021 20:55

Rapporter til Admin
Virker desværre ikke. Kan se det bliver en svær opgave at komme i mål med. Min script er på ca 100 linjer og virker fejlfrit når det køres på en lokal admin. Men målet er, at køre scriptet på mange pc'er på en gang. De alle pc'er som enten er i AAD, AD eller blot har en lokal admin konto. Overvejer lidt at hoppe på en .Bat script og køre den derfra... Simpelthen for uoverskueligt og har brugt såååå mange timer på at finde en løsning. Må hellere gå til plan b :)
--
Gæstebruger, opret dit eget login og få din egen signatur.
#11
Tobias
Gæst
08-10-2021 20:56

Rapporter til Admin
1000* Eller lig akkurat 991 linjer :P
--
Gæstebruger, opret dit eget login og få din egen signatur.
#12
AHoeg
Juniorbruger
08-10-2021 22:04

Rapporter til Admin
Hvad sker der når du prøver som #8 skriver? Jeg har lavet flere scripts som kører på +100 maskine via den metode. Lig scriptet på en filserver alle kan nå og gør som 8, det burde virke.
--
#13
Tobias
Gæst
08-10-2021 22:46

Rapporter til Admin
Scriptet er lagt i en automation manager som en del af vores RMM løsning. I automation manager skal jeg kunne køre scriptet på forskellige brugere uden at angive domæne/brugernavn for hver enkelt pc. Jeg har fundet ud af, at årsagen til at det fejler er, at scriptet bliver kørt som workgroup/SYSTEM når jeg kør det igennem automation manageren. Tænker det er der "fejlen" ligger og skal muligvis finde en string som tvinger skriptet til at køre som den administrative bruger der er logget ind.
--
Gæstebruger, opret dit eget login og få din egen signatur.
#14
anox
Gæst
08-10-2021 23:13

Rapporter til Admin
Det er nu ikke så omfattende. Du skal oprette en liste med de server du vil tilgå der i eksemplet her der hedder: script.list.txt. Udfylde brugernavn/password og så er du ellers klar til at lave ændringer. Husk at teste inden, da du hurtigt kan lave rav i den ;-) $Username = '[email protected]' $pass = ConvertTo-SecureString -AsPlainText "Passw0rd" -Force $credential = New-Object System.Management.Automation.PSCredential -ArgumentList $username,$pass foreach($line in Get-Content c:\script.list.txt) { invoke-command -ComputerName $line -FilePath C:\script.ps1 -Credential $credential }
--
Gæstebruger, opret dit eget login og få din egen signatur.

Opret svar til indlægget: Køre PowerShell script på flere maskiner via remot...

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning