PowerShell получить пользователя, группы с сервера - PullRequest
0 голосов
/ 22 мая 2019

У меня есть сценарий PowerShell, который получает все данные о пользователях и группах с Windows Server. Но этот скрипт нужно запускать на каждом сервере, потому что я не нахожу опцию -ComputerName для запуска на разных серверах. Таким образом, этот сценарий необходимо изменить, и когда мы запускаем сценарий с одного сервера на основе ввода списка серверов, он должен получать все данные с серверов Windows.

1 Ответ

0 голосов
/ 23 мая 2019

Если у вас есть скрипт, который делает это даже для 1 компьютера, вы можете сделать это для любого количества компьютеров, которые вы выберете, используя ForEach.

'computer1',computer2','computer3' | 
ForEach {
    # put your code here 
    # and for the computername property, use $PSItem to get the name being passed in
}

Вы можете получить текущее имя компьютера, на котором выполняется код, просто запросив его с помощью переменной среды

$env:COMPUTERNAME

Или просто с помощью

hostname

То, что вы не делаете, показывает нам ваш код, поэтому мы понятия не имеем, что вы делаете. Многие из классов командлетов / WMI и CIM имеют параметр имени компьютера, поэтому, если вы его не видите, значит, вы не используете командлет / функцию, которая это делает.

Это также означает, что вы будете очень плохо знакомы с PowerShell, и я бы порекомендовал вам потратить время на ускорение. Используйте YouTube, MSDN Channe9 или MS Изучите ресурсы и выполните поиск ...

  • 'Начало PowerShell'
  • 'Intermediate PowerShell'
  • «Продвинутый Powershell»
  • 'PowerShell запускает команды удаленного компьютера'

Всегда сначала используйте файлы справки.

Get-Command -Name '*Computer*' | Format-Table -AutoSize

# Results

CommandType Name                                        Version      Source                                              
----------- ----                                        -------      ------                                                                                
Cmdlet      Add-ADComputerServiceAccount                1.0.1.0      ActiveDirectory                                     
Cmdlet      Add-Computer                                3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Add-WsusComputer                            2.0.0.0      UpdateServices                                      
Cmdlet      Checkpoint-Computer                         3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Disable-ComputerRestore                     3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Enable-ComputerRestore                      3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Get-ADComputer                              1.0.1.0      ActiveDirectory                                     
Cmdlet      Get-ADComputerServiceAccount                1.0.1.0      ActiveDirectory                                     
Cmdlet      Get-ComputerInfo                            3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Get-ComputerRestorePoint                    3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Get-WsusComputer                            2.0.0.0      UpdateServices                                      
Cmdlet      New-ADComputer                              1.0.1.0      ActiveDirectory                                     
..                       
Cmdlet      Remove-ADComputer                           1.0.1.0      ActiveDirectory                                     
Cmdlet      Remove-ADComputerServiceAccount             1.0.1.0      ActiveDirectory                                     
Cmdlet      Remove-Computer                             3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Rename-Computer                             3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Reset-ComputerMachinePassword               3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Restart-Computer                            3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Restore-Computer                            3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Set-ADComputer                              1.0.1.0      ActiveDirectory                                     
Cmdlet      Stop-Computer                               3.1.0.0      Microsoft.PowerShell.Management                     
Cmdlet      Test-ComputerSecureChannel                  3.1.0.0      Microsoft.PowerShell.Management                     


# Find all cmdlets / functions with a target parameter
# Ignore any error show, as that just means the object does not have it
Get-Command -CommandType Function | 
Where-Object { $_.parameters.keys -match 'computer'} | 
Out-GridView -PassThru -Title 'Available functions which has a specific parameter'

Get-Command -CommandType Cmdlet | 
Where-Object { $_.parameters.keys -match 'computer'}| 
Out-GridView -PassThru -Title 'Results for cmdlets which has a specific parameter'

# Results (truncated for brevity)

CommandType     Name                 Version    Source
-----------     ----                 -------    ------
Cmdlet          Add-Computer         3.1.0.0    Microsoft.PowerShell.Management     
Cmdlet          Connect-PSSession    3.0.0.0    Microsoft.PowerShell.Core           
Cmdlet          Connect-WSMan        3.0.0.0    Microsoft.WSMan.Management          
Cmdlet          Disconnect-WSMan     3.0.0.0    Microsoft.WSMan.Management          
Cmdlet          Enter-PSSession      3.0.0.0    Microsoft.PowerShell.Core           
Cmdlet          Get-CimInstance      1.0.0.0    CimCmdlets                          
Cmdlet          Get-Process          3.1.0.0    Microsoft.PowerShell.Management     
Cmdlet          Get-EventLog         3.1.0.0    Microsoft.PowerShell.Management     
Cmdlet          Get-Service          3.1.0.0    Microsoft.PowerShell.Management     
Cmdlet          Get-WmiObject        3.1.0.0    Microsoft.PowerShell.Management     
Cmdlet          Invoke-CimMethod     1.0.0.0    CimCmdlets                          
Cmdlet          Invoke-Command       3.0.0.0    Microsoft.PowerShell.Core           
Cmdlet          Invoke-WmiMethod     3.1.0.0    Microsoft.PowerShell.Management     
Cmdlet          Stop-Computer        3.1.0.0    Microsoft.PowerShell.Management     
Cmdlet          Test-Connection      3.1.0.0    Microsoft.PowerShell.Management

...



# get function / cmdlet details
Get-Command -Name Get-CimInstance -Syntax

(Get-Command -Name Get-WMIObject).Parameters.Keys

 # Results
...
 Credential
 ThrottleLimit
 ComputerName
 Namespace
...

(Get-Command -Name Get-CimInstance).Parameters.Keys

# Results

CimSession
ClassName
...
ComputerName
...
Property
...

Get-help -Name Get-CimInstance -Full
Get-help -Name Get-CimInstance -Online
Get-help -Name Get-CimInstance -Examples

Examples:

...
Get-CimInstance -ClassName Win32_ComputerSystem -ComputerName Server01,Server02
...
$s = New-CimSession –ComputerName Server01,Server02
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...