Powershell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ


рдпрд╣ рд▓реЗрдЦ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдЧрд╛ рдХрд┐ рд╣рдо рд╕рднреА рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреЙрд╡рд░реНрд╕ рдХреЛ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд▓реЗрддреЗ рд╕рдордп, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред Powershell рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЖрдХрд░реНрд╖рдХ cmdlets рд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд рд╣реИ, рд╕рдм рдХреБрдЫ рдФрд░ рд╕рд╣рдЬ рдирд╛рдо рдХрд╛ рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╕реАрдЦрдиреЗ рдХреА рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рднрд╛рд╖рд╛ рд╣реИред

рдЗрд╕ рдЧрд╛рдЗрдб рдореЗрдВ, рд╣рдо рд▓реЗрдЦрдХ рдХреА рд░рд╛рдп рдореЗрдВ рдХреБрдЫ рд╢рд╛рдВрдд рдЯреАрдореЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рд╕рдордЭрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рд╢рд╛рдВрдд рд╣реИред рдЪрд▓реЛ рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЙрдкрдпреЛрдЧреА рд╕реНрдирд┐рдкреЗрдЯ:


рд╣рдо рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ TrustedHosts рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ

WinRm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреАред рдХрдорд╛рдВрдб рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдп рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░реЗрдЧрд╛, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдЖрдИрдкреА рдпрд╛ рд╣реЛрд╕реНрдЯрдирд╛рдо рдЬреЛрдбрд╝реЗрдВред рдпрджрд┐ рдЖрдкрдХреЗ рд╕рднреА рд╣реЛрд╕реНрдЯ AD рдореЗрдВ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЫреВрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

Set-Item WSMan:\localhost\Client\TrustedHosts -Value '192.168.0.1' 

рдЕрдЧрд░ рдЖрдк рд╣рд░ рдмрд╛рд░ рдЯреНрд░рд╕реНрдЯреЗрдбрд╣реЛрд╕реНрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╣реЛрд╕реНрдЯ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

 Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*' 

рд╣рдо рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ:

рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдпрд╣ рдЕрдиреБрд╕реВрдЪрдХ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рд╕рд╡рд░реНрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рд▓реЙрдЧ рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 Read-Host -AsSecureString | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Password.txt 

рд╣рдо рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдкрд╛рд╕рд╡рд░реНрдб рд▓реЗрддреЗ рд╣реИрдВ:

 $Password = Get-Content C:\Password.txt | ConvertTo-SecureString 

рдпрд╣реА рдмрд╛рдд рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЧреЗрдЯ-рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд╕рд╛рде рд░реАрдб-рд╣реЛрд╕реНрдЯ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

 Get-Credential | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Credential.txt 

рд╣рдореЗрдВ рдУрдПрд╕ рдХреЗ рдЕрдВрддрд┐рдо рдмреВрдЯ рдХреА рддрд╛рд░реАрдЦ рдорд┐рд▓рддреА рд╣реИред

 (gcim win32_operatingsystem).LastBootUpTime 

рдЗрд╕реА рддрд░рд╣ рд╣рдо рднреА рдЙрда рдЬрд╛рддреЗ рд╣реИрдВред

 Get-CimInstance Win32_operatingsystem -ComputerName $computers | Select-Object LastBootUpTime, @{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}} 

рд╣рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ:

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ, рдШрдЯрдХ рдирд╣реАрдВ:

 Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table тАУAutoSize 


рд╣рдореЗрдВ рдбреНрд░рд╛рдЗрд╡ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдбреНрд░рд╛рдЗрд╡ рдФрд░ рдЙрди рдкрд░ рдореБрдлреНрдд рд╕реНрдерд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИ

 Get-PSDrive -PSProvider filesystem | where-object {$_.used -gt 0} | Select-Object -property Root,@{name="Size";expression={($_.used+$_.free)/1GB -as [int]}}, @{name="Used";expression={($_.used/1GB) -as [int]}}, @{name="Free";expression={($_.free/1GB) -as [int]}} 

рд╣рдо рдЗрд╕рдХреЗ рдирд╛рдо рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо Chrome рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВред рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИ рдпрджрд┐ рдЖрдк рд╕рдм рдХреБрдЫ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

 Get-Process -Name "chrome" | Stop-Process 

рдмрдЪреНрдЪреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рдПрдХреНрд╕реЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЙрдкреА рдХрд░реЗрдВ

рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рд╕рднреА рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИред рдЖрджреЗрд╢ рдкреБрдирд░рд╛рд╡рд░реНрддреА, рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ, рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдкрдврд╝реЗрдВ рдФрд░ рд▓рд┐рдЦреЗрдВред

рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ ACL рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ:

 $Acl = Get-Acl -Path C:\folder\ 

рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдкрд░ ACL рдбрд╛рд▓реЗрдВ:

 Get-ChildItem -Path C:\Folder\ -Recurse | Set-Acl $Acl 

рдЙрдкрдпреЛрдЧреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ:


рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХрд╛ рдХрдВрдкреНрдпреВрдЯрд░ AD рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧреА, рдЗрд╕реЗ рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдпрд╛ рдЧреЗрдЯ-рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЗ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╕рднреА рдЕрдВрддрд░:

C рд╡рд┐рдЬреНрдЮрд╛рдкрди:

 $ADComputers = (Get-ADComputer -filter *).DNSHostName 

рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рдмрд┐рдирд╛:

 $Credentials = Get-Credential $Computers = Get-Content -Path C:\servers.txt 

рд╣рдо AD рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдЕрдВрддрд┐рдо рдмреВрдЯ рдХреА рддрд╛рд░реАрдЦ рд╕реЗ рдКрдкрд░ рдЙрдарддреЗ рд╣реИрдВ:

 $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command $i { Get-CimInstance Win32_operatingsystem | Select-Object LastBootUpTime, @{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}} } } 

рд╣рдо рд╕рднреА рдПрдбреА рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

 $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) {    Invoke-Command -computername $i {        gcim win32_product -computername $env:computername | Sort-Object -property Vendor,Name | Select-Object -property Vendor,Name, Caption    } } 

рдЗрдирд╡реЙрдЗрд╕-рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 Get-WindowsFeature | Where-Object -Property "Installed" -EQ "Installed" 

рд╣рдореЗрдВ рд╡реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╣рдореЗрдВ рдЬрд┐рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рд╡рд╣ рдЪрд▓ рд░рд╣реА рд╣реИ:

рдпрджрд┐ рдЖрдк рднреВрд▓ рдЧрдП рдХрд┐ рдпрд╣ рдХреМрди рд╕рд╛ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ рдпрд╛ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд╛рд▓реВ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) {    Invoke-Command -computername $i {        Get-Process -Name "Chrome"  -ErrorAction SilentlyContinue    } } 

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдорд╛рд░рдирд╛ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) {    Invoke-Command -computername $i {        Get-Process -Name "Chrome" | Stop-Process -ErrorAction SilentlyContinue    } } 

рд╣рдореЗрдВ рд╡реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ:

рдЧреБрдкреНрдд рд░реВрдк рд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╛рд╡рд╛ред рдпрд╣ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреЗ рджреМрд░рд╛рди рдорджрдж рдХрд░реЗрдЧрд╛, рдЖрдк рдЙрди рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рдирд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

 $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) {    Invoke-Command -computername $i {        gcim win32_product -computername $env:computername | Select-String -Pattern "Java" -AllMatches | Sort-Object -property Vendor,Name | Format-Table -ErrorAction SilentlyContinue    } } 

рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдереЗред

рд╣рдо рд╕реНрдерд╛рдкрд┐рдд рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ 2019 рдХреЛрд░ рдХреЗ рд╕рд╛рде 99 рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрдпрддрди рдЕрд▓реНрдЯреНрд░рд╛рд▓рд╛рдЗрдЯ рд╡рд┐рдВрдбреЛрдЬ рд╡реАрдбреАрдПрд╕ рдЯреИрд░рд┐рдл рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi483416/


All Articles