Если у вас есть скрипт, который делает это даже для 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
...