Invoke-Command
Выполняет команды на локальных и удаленных компьютерах.
Синтаксис
InProcess (по умолчанию)
Invoke-Command
[-ScriptBlock] <ScriptBlock>
[-StrictMode <Version>]
[-NoNewScope]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
FilePathRunspace
Invoke-Command
[[-Session] <PSSession[]>]
[-FilePath] <String>
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Session
Invoke-Command
[[-Session] <PSSession[]>]
[-ScriptBlock] <ScriptBlock>
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
FilePathComputerName
Invoke-Command
[[-ComputerName] <String[]>]
[-FilePath] <String>
[-Credential <PSCredential>]
[-Port <Int32>]
[-UseSSL]
[-ConfigurationName <String>]
[-ApplicationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <String[]>]
[-HideComputerName]
[-JobName <String>]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
ComputerName
Invoke-Command
[[-ComputerName] <String[]>]
[-ScriptBlock] <ScriptBlock>
[-Credential <PSCredential>]
[-Port <Int32>]
[-UseSSL]
[-ConfigurationName <String>]
[-ApplicationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <String[]>]
[-HideComputerName]
[-JobName <String>]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-CertificateThumbprint <String>]
[<CommonParameters>]
Uri
Invoke-Command
[[-ConnectionUri] <Uri[]>]
[-ScriptBlock] <ScriptBlock>
[-Credential <PSCredential>]
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <String>]
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-CertificateThumbprint <String>]
[<CommonParameters>]
FilePathUri
Invoke-Command
[[-ConnectionUri] <Uri[]>]
[-FilePath] <String>
[-Credential <PSCredential>]
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <String>]
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
VMId
Invoke-Command
[-ScriptBlock] <ScriptBlock>
[-VMId] <Guid[]>
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
VMName
Invoke-Command
[-ScriptBlock] <ScriptBlock>
-Credential <PSCredential>
-VMName <String[]>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
FilePathVMId
Invoke-Command
[-FilePath] <String>
[-VMId] <Guid[]>
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
FilePathVMName
Invoke-Command
[-FilePath] <String>
-Credential <PSCredential>
-VMName <String[]>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
SSHHost
Invoke-Command
[-ScriptBlock] <ScriptBlock>
-HostName <String[]>
[-Port <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-UserName <String>]
[-KeyFilePath <String>]
[-Subsystem <String>]
[-ConnectingTimeout <Int32>]
[-SSHTransport]
[-Options <Hashtable>]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
ContainerId
Invoke-Command
[-ScriptBlock] <ScriptBlock>
-ContainerId <String[]>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-RunAsAdministrator]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
FilePathContainerId
Invoke-Command
[-FilePath] <String>
-ContainerId <String[]>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-RunAsAdministrator]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
SSHHostHashParam
Invoke-Command
[-ScriptBlock] <ScriptBlock>
-SSHConnection <Hashtable[]>
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
FilePathSSHHost
Invoke-Command
[-FilePath] <String>
-HostName <String[]>
[-AsJob]
[-HideComputerName]
[-UserName <String>]
[-KeyFilePath <String>]
[-Subsystem <String>]
[-ConnectingTimeout <Int32>]
[-SSHTransport]
[-Options <Hashtable>]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
FilePathSSHHostHash
Invoke-Command
[-FilePath] <String>
-SSHConnection <Hashtable[]>
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Описание
Командлет Invoke-Command
выполняет команды на локальном или удаленном компьютере и возвращает все выходные данные из команд, включая ошибки. С помощью одной Invoke-Command
команды можно выполнять команды на нескольких компьютерах.
Чтобы выполнить одну команду на удаленном компьютере, используйте параметр ComputerName . Чтобы выполнить ряд связанных команд, которые совместно используют данные, используйте New-PSSession
командлет для создания PSSession (постоянного подключения) на удаленном компьютере, а затем используйте для выполнения команды в Invoke-Command
. Чтобы выполнить команду в отключенном сеансе, используйте параметр InDisconnectedSession . Чтобы выполнить команду в фоновом задании, используйте параметр AsJob .
Вы также можете использовать Invoke-Command
на локальном компьютере блок скрипта запуска в качестве команды. PowerShell запускает блок скрипта сразу же в дочерней области текущей области.
Прежде чем выполнять Invoke-Command
команды на удаленном компьютере, прочитайте about_Remote.
Начиная с PowerShell 6.0, вы можете использовать Secure Shell (SSH) для установления подключения и вызова команд на удаленных компьютерах. SSH необходимо установить на локальном компьютере, а удаленный компьютер должен быть настроен с конечной точкой PowerShell SSH. Преимущество удаленного сеанса PowerShell на основе SSH заключается в том, что он работает на нескольких платформах (Windows, Linux, macOS). Для сеанса на основе SSH используются параметры HostName или SSHConnection , чтобы указать удаленный компьютер и соответствующие сведения о подключении. Дополнительные сведения о настройке удаленного взаимодействия PowerShell SSH см. в статье о удаленном взаимодействии PowerShell по протоколу SSH.
Некоторые примеры кода используют сложение для уменьшения длины строки. Дополнительные сведения см. в about_Splatting.
Примеры
Пример 1. Запуск скрипта на сервере
В этом примере выполняется Test.ps1
скрипт на компьютере Server01.
Invoke-Command -FilePath C:\scripts\test.ps1 -ComputerName Server01
Параметр FilePath указывает скрипт, расположенный на локальном компьютере. Скрипт выполняется на удаленном компьютере и результаты возвращаются на локальный компьютер.
Пример 2. Выполнение команды на удаленном сервере
В этом примере выполняется Get-Culture
команда на удаленном компьютере Server01.
Invoke-Command -ComputerName Server01 -Credential Domain01\User01 -ScriptBlock {
Get-Culture
}
Параметр ComputerName указывает имя удаленного компьютера. Параметр Credential используется для выполнения команды в контексте безопасности Domain01\User01, пользователя, имеющего разрешение на выполнение команд. Параметр ScriptBlock указывает команду, выполняемую на удаленном компьютере.
В ответ PowerShell запрашивает пароль и метод проверки подлинности для учетной записи User01. Затем она запускает команду на компьютере Server01 и возвращает результат.
Пример 3. Выполнение команды в постоянном подключении
В этом примере выполняется та же Get-Culture
команда в сеансе с помощью постоянного подключения на удаленном компьютере с именем Server02.
$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
Invoke-Command -Session $s -ScriptBlock { Get-Culture }
Командлет New-PSSession
создает сеанс на удаленном компьютере Server02 и сохраняет его в переменной $s
. Как правило, сеанс создается только при выполнении ряда команд на удаленном компьютере.
Командлет Invoke-Command
выполняет Get-Culture
команду на сервере Server02. Параметр сеанса указывает сеанс, сохраненный в переменной $s
.
В ответ PowerShell запускает команду в сеансе на компьютере Server02.
Пример 4. Использование сеанса для выполнения ряда команд, совместно использующих данные
В этом примере сравниваются эффекты использования параметров ComputerName и Invoke-Command
. В нем показано, как использовать сеанс для выполнения ряда команд, которые используют одни и те же данные.
Invoke-Command -ComputerName Server02 -ScriptBlock { $p = Get-Process powershell }
Invoke-Command -ComputerName Server02 -ScriptBlock { $p.VirtualMemorySize }
$s = New-PSSession -ComputerName Server02
Invoke-Command -Session $s -ScriptBlock { $p = Get-Process powershell }
Invoke-Command -Session $s -ScriptBlock { $p.VirtualMemorySize }
17930240
Первые две команды используют для выполнения команд на удаленном компьютере Server02. Первая команда использует Get-Process
командлет, чтобы получить процесс PowerShell на удаленном компьютере и сохранить его в переменной $p
. Вторая команда получает значение свойства VirtualMemorySize процесса PowerShell.
При использовании параметра ComputerName PowerShell создает новый сеанс для выполнения команды.
Сеанс закрывается после завершения команды. Переменная $p
была создана в одном соединении, но она не существует в соединении, созданном для второй команды.
Проблема решена путем создания постоянного сеанса на удаленном компьютере, а затем выполнения обеих команд в одном сеансе.
Командлет New-PSSession
создает постоянный сеанс на компьютере Server02 и сохраняет сеанс в переменной $s
. Строки Invoke-Command
, которые следуют за параметром session , используются для выполнения обеих команд в одном сеансе. Так как обе команды выполняются в одном сеансе, $p
значение остается активным.
Пример 5. Вызов команды с блоком скрипта, хранящимся в переменной
В этом примере показано, как выполнить команду, которая хранится в виде блока скрипта в переменной. При сохранении блока скрипта в переменной можно указать переменную в качестве значения параметра ScriptBlock .
$command = {
Get-WinEvent -LogName PowerShellCore/Operational |
Where-Object -FilterScript { $_.Message -like '*certificate*' }
}
Invoke-Command -ComputerName S1, S2 -ScriptBlock $command
Переменная $command
сохраняет Get-WinEvent
команду, отформатированную как блок скрипта. Выполняет Invoke-Command
команду, хранящуюся на $command
удаленных компьютерах S1 и S2.
Пример 6. Выполнение одной команды на нескольких компьютерах
В этом примере показано, как выполнять Invoke-Command
одну команду на нескольких компьютерах.
$parameters = @{
ComputerName = 'Server01', 'Server02', 'TST-0143', 'localhost'
ConfigurationName = 'MySession.PowerShell'
ScriptBlock = { Get-WinEvent -LogName PowerShellCore/Operational }
}
Invoke-Command @parameters
Параметр ComputerName указывает разделенный запятыми список имен компьютеров. Список компьютеров включает значение localhost, представляющее локальный компьютер. Параметр ConfigurationName указывает альтернативную конфигурацию сеанса. Параметр ScriptBlock запускается Get-WinEvent
для получения журналов событий PowerShellCore или Operations с каждого компьютера.
Пример 7. Получение версии хост-программы на нескольких компьютерах
В этом примере получается версия хост-программы PowerShell, работающей на удаленных компьютерах 200.
$version = Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {
(Get-Host).Version
}
Так как выполняется только одна команда, вам не нужно создавать постоянные подключения к каждому из компьютеров. Вместо этого команда использует параметр ComputerName для указания компьютеров. Чтобы указать компьютеры, он использует Get-Content
командлет для получения содержимого файла Machine.txt, файла имен компьютеров.
Командлет Invoke-Command
выполняет Get-Host
команду на удаленных компьютерах. Он использует нотацию точек для получения свойства Version узла PowerShell.
Эти команды выполняются по одному за раз. По завершении команд выходные данные команд со всех компьютеров сохраняются в переменной $version
. Выходные данные включают имя компьютера, из которого были получены данные.
Пример 8. Запуск фонового задания на нескольких удаленных компьютерах
В этом примере выполняется команда на двух удаленных компьютерах. Команда Invoke-Command
использует параметр AsJob , чтобы команда выполнялось в качестве фонового задания. Команды выполняются на удаленных компьютерах, но задание существует на локальном компьютере. Результаты передаются на локальный компьютер.
$s = New-PSSession -ComputerName Server01, Server02
Invoke-Command -Session $s -ScriptBlock { Get-EventLog System } -AsJob
Id Name State HasMoreData Location Command
--- ---- ----- ----- ----------- ---------------
1 Job1 Running True Server01,Server02 Get-EventLog System
$j = Get-Job
$j | Format-List -Property *
HasMoreData : True
StatusMessage :
Location : Server01,Server02
Command : Get-EventLog System
JobStateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : e124bb59-8cb2-498b-a0d2-2e07d4e030ca
Id : 1
Name : Job1
ChildJobs : {Job2, Job3}
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
StateChanged :
$results = $j | Receive-Job
Командлет New-PSSession
создает сеансы на удаленных компьютерах Server01 и Server02. Командлет выполняет фоновое Invoke-Command
задание в каждом сеансе. Команда использует параметр AsJob для выполнения команды в качестве фонового задания. Эта команда возвращает объект задания, содержащий два дочерних объекта задания, по одному для каждого задания, выполняемого на двух удаленных компьютерах.
Команда Get-Job
сохраняет объект задания в переменной $j
. Затем $j
переменная будет передана Format-List
командлету, чтобы отобразить все свойства объекта задания в списке. Последняя команда получает результаты заданий. Он передает объект задания в $j
Receive-Job
командлет и сохраняет результаты в переменной $results
.
Пример 9. Включение локальных переменных в команду, выполняемой на удаленном компьютере
В этом примере показано, как включить значения локальных переменных в команду, выполняемую на удаленном компьютере. Команда использует Using:
модификатор области для идентификации локальной переменной в удаленной команде. По умолчанию предполагается, что все переменные определяются в удаленном сеансе. Модификатор области Using:
появился в PowerShell 3.0. Дополнительные сведения об модификаторе Using:
области см. в about_Remote_Variables и about_Scopes.
$Log = 'PowerShellCore/Operational'
Invoke-Command -ComputerName Server01 -ScriptBlock {
Get-WinEvent -LogName $Using:Log -MaxEvents 10
}
Переменная $Log
сохраняет имя журнала событий PowerShellCore или Operational. Командлет выполняется Invoke-Command
на сервере Get-WinEvent
Server01, чтобы получить десять последних событий из журнала событий. Значение параметра LogName — это $Log
переменная, префиксная Using:
модификатором области, указывающая, что она была создана в локальном сеансе, а не в удаленном сеансе.
Пример 10. Скрытие имени компьютера
В этом примере показан эффект использования . HideComputerName не изменяет объект, возвращаемый этим командлетом. Он изменяет только дисплей. Командлеты Format по-прежнему можно использовать для отображения свойства PsComputerName любого из затронутых объектов.
Invoke-Command -ComputerName S1, S2 -ScriptBlock { Get-Process powershell }
PSComputerName Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
-------------- ------- ------ ----- ----- ----- ------ -- -----------
S1 575 15 45100 40988 200 4.68 1392 PowerShell
S2 777 14 35100 30988 150 3.68 67 PowerShell
Invoke-Command -ComputerName S1, S2 -HideComputerName -ScriptBlock {
Get-Process powershell
}
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
575 15 45100 40988 200 4.68 1392 PowerShell
777 14 35100 30988 150 3.68 67 PowerShell
Первые две команды, используемые Invoke-Command
для выполнения Get-Process
команды для процесса PowerShell. Выходные данные первой команды включают свойство PsComputerName , содержащее имя компьютера, на котором выполняется команда. Выходные данные второй команды, которая использует HideComputerName, не включает столбец PsComputerName .
Пример 11. Использование ключевого слова param в блоке скрипта
Ключевое param
слово и параметр ArgumentList используются для передачи значений переменных именованным параметрам в блоке скрипта. В этом примере отображаются имена файлов, начинающиеся с буквы a
и имеющие .pdf
расширение.
Дополнительные сведения о ключевом слове param
см. в about_Language_Keywords.
$parameters = @{
ComputerName = 'Server01'
ScriptBlock = {
param ($Param1, $Param2)
Get-ChildItem -Name $Param1 -Include $Param2
}
ArgumentList = 'a*', '*.pdf'
}
Invoke-Command @parameters
aa.pdf
ab.pdf
ac.pdf
az.pdf
Invoke-Command
использует параметр ScriptBlock, определяющий
Get-ChildItem
использует именованные параметры, имя и включение с именами переменных. АргументList передает значения переменным.
Пример 12. Использование автоматической переменной $args в блоке скрипта
Автоматическая $args
переменная и параметр ArgumentList используются для передачи значений массива в позиции параметров в блоке скрипта. В этом примере отображается содержимое .txt
каталога сервера файлов. Параметр Get-ChildItem
Path имеет позицию 0, а параметр filter имеет позицию 1.
Дополнительные сведения об переменной $args
см. в about_Automatic_Variables
$parameters = @{
ComputerName = 'Server01'
ScriptBlock = { Get-ChildItem $args[0] $args[1] }
ArgumentList = 'C:\Test', '*.txt*'
}
Invoke-Command @parameters
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 6/12/2019 15:15 128 alog.txt
-a--- 7/27/2019 15:16 256 blog.txt
-a--- 9/28/2019 17:10 64 zlog.txt
Invoke-Command
использует параметр ScriptBlock и Get-ChildItem
задает $args[0]
значения массива.$args[1]
АргументList передает значения массива в позиции параметров для $args
и Get-ChildItem
.
Пример 13. Запуск скрипта на всех компьютерах, перечисленных в текстовом файле
В этом примере командлет используется Invoke-Command
для запуска Sample.ps1
скрипта на всех компьютерах, перечисленных в Servers.txt
файле. Команда использует параметр FilePath для указания файла скрипта. Эта команда позволяет запускать скрипт на удаленных компьютерах, даже если файл скрипта недоступен для удаленных компьютеров.
$parameters = @{
ComputerName = (Get-Content Servers.txt)
FilePath = 'C:\Scripts\Sample.ps1'
ArgumentList = 'Process', 'Service'
}
Invoke-Command @parameters
При отправке команды содержимое Sample.ps1
файла копируется в блок скрипта, а блок скрипта выполняется на каждом из удаленных компьютеров. Эта процедура эквивалентна использованию параметра ScriptBlock для отправки содержимого скрипта.
Пример 14. Выполнение команды на удаленном компьютере с помощью URI
В этом примере показано, как выполнить команду на удаленном компьютере, определяемом универсальным идентификатором ресурса (URI). В этом примере выполняется Set-Mailbox
команда на удаленном сервере Exchange.
$LiveCred = Get-Credential
$parameters = @{
ConfigurationName = 'Microsoft.Exchange'
ConnectionUri = 'https://ps.exchangelabs.com/PowerShell'
Credential = $LiveCred
Authentication = 'Basic'
ScriptBlock = { Set-Mailbox Dan -DisplayName 'Dan Park' }
}
Invoke-Command @parameters
Первая строка использует Get-Credential
командлет для хранения учетных данных Windows Live ID в переменной $LiveCred
. PowerShell предложит пользователю ввести учетные данные Windows Live ID.
Переменная $parameters
— это хэш-таблица, содержащая параметры, передаваемые командлету Invoke-Command
. Командлет Invoke-Command
выполняет Set-Mailbox
команду с помощью конфигурации сеанса Microsoft.Exchange . Параметр ConnectionURI указывает URL-адрес конечной точки сервера Exchange. Параметр Credential указывает учетные данные, хранящиеся в переменной $LiveCred
. Параметр AuthenticationMechanism указывает использование базовой проверки подлинности. Параметр ScriptBlock задает блок скрипта, содержащий команду.
Пример 15. Использование параметра сеанса
В этом примере показано, как создать и использовать параметр SessionOption .
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$parameters = @{
ComputerName = 'server01'
UseSSL = $true
ScriptBlock = { Get-HotFix }
SessionOption = $so
Credential = 'server01\user01'
}
Invoke-Command @parameters
Командлет New-PSSessionOption
создает объект параметра сеанса, который приводит к тому, что удаленный конец не проверяет центр сертификации, каноническое имя и списки отзыва при оценке входящего подключения HTTPS. Объект SessionOption сохраняется в переменной $so
.
Замечание
Отключение этих проверок удобно для устранения неполадок, но, очевидно, не безопасно.
Командлет Invoke-Command
выполняет Get-HotFix
команду удаленно. Параметр SessionOption присваивается переменной $so
.
Пример 16. Управление перенаправлением URI в удаленной команде
В этом примере показано, как использовать параметры AllowRedirection и SessionOption для управления перенаправлением URI в удаленной команде.
$max = New-PSSessionOption -MaximumRedirection 1
$parameters = @{
ConnectionUri = 'https://ps.exchangelabs.com/PowerShell'
ScriptBlock = { Get-Mailbox dan }
AllowRedirection = $true
SessionOption = $max
}
Invoke-Command @parameters
Командлет New-PSSessionOption
создает объект PSSessionOption , сохраненный в переменной $max
. Команда использует параметр MaximumRedirection для задания свойства MaximumConnectionRedirectionCount объекта PSSessionOption равным 1.
Командлет Invoke-Command
выполняет Get-Mailbox
команду на удаленном сервере Microsoft Exchange Server. Параметр AllowRedirection предоставляет явное разрешение для перенаправления подключения к альтернативной конечной точке. Параметр SessionOption использует объект сеанса, хранящийся в переменной $max
.
В результате, если удаленный компьютер, указанный в ConnectionURI , возвращает сообщение перенаправления, PowerShell перенаправляет подключение, но если новое назначение возвращает другое сообщение перенаправления, значение счетчика перенаправления 1 превышается и Invoke-Command
возвращает ошибку без конца.
Пример 17. Доступ к сетевому ресурсу в удаленном сеансе
В этом примере показано, как получить доступ к сетевой папке из удаленного сеанса. Три компьютера используются для демонстрации примера. Server01 — это локальный компьютер, Server02 — это удаленный компьютер, а Net03 — это сетевой ресурс. Server01 подключается к Server02, а затем Server02 выполняет второй прыжк в Net03 для доступа к сетевой папке. Дополнительные сведения о том, как удаленное взаимодействие PowerShell поддерживает прыжки между компьютерами, см. в статье "Создание второго прыжка в удаленном взаимодействии PowerShell".
Необходимое делегирование поставщика поддержки безопасности учетных данных (CredSSP) включено в параметрах клиента на локальном компьютере и в параметрах службы на удаленном компьютере. Чтобы выполнить команды в этом примере, необходимо быть членом группы "Администраторы " на локальном компьютере и удаленном компьютере.
Enable-WSManCredSSP -Role Client -DelegateComputer Server02
$s = New-PSSession Server02
Invoke-Command -Session $s -ScriptBlock { Enable-WSManCredSSP -Role Server -Force }
$parameters = @{
ComputerName = 'Server02'
ScriptBlock = { Get-Item \\Net03\Scripts\LogFiles.ps1 }
Authentication = 'CredSSP'
Credential = 'Domain01\Admin01'
}
Invoke-Command @parameters
Командлет Enable-WSManCredSSP
включает делегирование CredSSP с локального компьютера Server01 на удаленный компьютер Server02. Параметр Role задает клиент для настройки параметра клиента CredSSP на локальном компьютере.
New-PSSession
создает объект PSSession для Server02 и сохраняет объект в переменной$s
.
Командлет Invoke-Command
использует $s
переменную для подключения к удаленному компьютеру Server02. Параметр ScriptBlock запускает Enable-WSManCredSSP
на удаленном компьютере. Параметр роли задает сервер для настройки параметра сервера CredSSP на удаленном компьютере.
Переменная $parameters
содержит значения параметров для подключения к сетевой общей папке. Командлет Invoke-Command
выполняет Get-Item
команду в сеансе $s
. Эта команда получает скрипт из сетевого \\Net03\Scripts
ресурса. Команда использует параметр authentication со значением CredSSP и параметром Credential со значением Domain01\Admin01.
Пример 18. Запуск скриптов на многих удаленных компьютерах
В этом примере выполняется скрипт на более чем сотнях компьютеров. Чтобы свести к минимуму влияние на локальный компьютер, он подключается к каждому компьютеру, запускает скрипт, а затем отключается от каждого компьютера. Скрипт продолжает выполняться в отключенных сеансах.
$parameters = @{
ComputerName = (Get-Content -Path C:\Test\Servers.txt)
InDisconnectedSession = $true
FilePath = '\\Scripts\Public\ConfigInventory.ps1'
SessionOption = @{
OutputBufferingMode = 'Drop'
IdleTimeout = [timespan]::FromHours(12)
}
}
Invoke-Command @parameters
Команда используется Invoke-Command
для запуска скрипта. Значение параметра ComputerName — это Get-Content
команда, которая получает имена удаленных компьютеров из текстового файла. Параметр InDisconnectedSession отключает сеансы сразу после запуска команды. Значение параметра FilePath — это скрипт, Invoke-Command
который выполняется на каждом компьютере.
Значение SessionOption — это хэш-таблица. Значение OutputBufferingMode имеет значение Drop
, а для значения IdleTimeout задано значение 12 часов.
Чтобы получить результаты команд и сценариев, выполняемых в отключенных сеансах, используйте Receive-PSSession
командлет.
Пример 19. Выполнение команды на удаленном компьютере с помощью SSH
В этом примере показано, как выполнить команду на удаленном компьютере с помощью Secure Shell (SSH). Если SSH настроен на удаленном компьютере для запроса паролей, появится запрос на пароль. В противном случае необходимо использовать проверку подлинности пользователя на основе ключа SSH.
Invoke-Command -HostName UserA@LinuxServer01 -ScriptBlock { Get-MailBox * }
Пример 20. Выполните команду на удаленном компьютере с помощью SSH и укажите ключ проверки подлинности пользователя
В этом примере показано, как выполнить команду на удаленном компьютере с помощью SSH и указать файл ключа для проверки подлинности пользователя. Вам не будет предложено ввести пароль, если проверка подлинности ключа не завершается ошибкой, и удаленный компьютер настроен для предоставления базовой проверки подлинности паролей.
$parameters = @{
HostName = 'UserA@LinuxServer01'
ScriptBlock = { Get-MailBox * }
KeyFilePath = '/UserA/UserAKey_rsa'
}
Invoke-Command
Пример 21. Запуск файла скрипта на нескольких удаленных компьютерах с помощью SSH в качестве задания
В этом примере показано, как запустить файл скрипта на нескольких удаленных компьютерах с помощью SSH и набора параметров SSHConnection . Параметр SSHConnection принимает массив хэш-таблиц, содержащих сведения о подключении для каждого компьютера. В этом примере требуется, чтобы целевые удаленные компьютеры имели SSH для поддержки проверки подлинности пользователей на основе ключей.
$sshConnections = @(
@{
HostName = "WinServer1"
UserName = "Domain\UserA"
KeyFilePath = "C:\Users\UserA\id_rsa"
}
@{
HostName = "UserB@LinuxServer5"
KeyFilePath = "/Users/UserB/id_rsa"
}
)
$results = Invoke-Command -FilePath C:\Scripts\GetInfo.ps1 -SSHConnection $sshConnections
Пример 22. Подключение к удаленному сеансу SSH с помощью параметров SSH
В этом примере показано, как запустить файл скрипта на удаленном компьютере под управлением Linux с помощью параметров SSH. Параметр Options принимает хэш-список значений, передаваемых в качестве параметров базовой ssh
команде, установленной подключением к удаленной системе.
$options = @{
Port=22
User = 'UserB'
Host = 'LinuxServer5'
}
$results = Invoke-Command -FilePath C:\Scripts\CollectEvents.ps1 -KeyFilePath '/Users/UserB/id_rsa' -Options $options
Параметры
-AllowRedirection
Разрешает перенаправление этого подключения к альтернативному универсальному идентификатору ресурса (URI).
При использовании параметра ConnectionURI удаленный целевой объект может вернуть инструкцию для перенаправления в другой универсальный код ресурса (URI). По умолчанию PowerShell не перенаправляет подключения, но этот параметр можно использовать для перенаправления подключения.
Можно также ограничить количество перенаправлений подключения, изменив значение параметра MaximumConnectionRedirectionCount в сеансе. Используйте параметр MaximumRedirection командлета New-PSSessionOption
или задайте свойство MaximumConnectionRedirectionCount переменной настроек $PSSessionOption
. Значение по умолчанию — 5.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-ApplicationName
Определяет сегмент имени приложения в URI соединения. Используйте этот параметр, чтобы указать имя приложения, если параметр ConnectionURI не используется в команде.
Значение по умолчанию — это значение переменной предпочтения $PSSessionApplicationName
на локальном компьютере. Если эта переменная предпочтения не определена, значение по умолчанию — WSMAN. Это значение подходит для большинства использования. Дополнительные сведения см. в разделе about_Preference_Variables.
Служба WinRM использует имя приложения для выбора прослушивателя для обслуживания запроса на подключение. Значение этого параметра должно соответствовать значению свойства URLPrefix прослушивателя на удаленном компьютере.
Свойства параметра
Тип: | String |
Default value: | $PSSessionApplicationName if set on the local computer, otherwise WSMAN |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
-ArgumentList
Предоставляет значения параметров для скриптблока. Параметры в блоке скрипта передаются по позиции из значения массива, предоставленного в ArgumentList. Это называется различанием массива. Дополнительные сведения о поведении ArgumentListсм. в about_Splatting.
Свойства параметра
Тип: | Object[] |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | Аргументы |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-AsJob
Указывает, что этот командлет выполняет команду в качестве фонового задания на удаленном компьютере. Используйте этот параметр для выполнения команд, требующих большого времени для завершения.
При использовании параметра AsJob команда возвращает объект, представляющий задание, а затем отображает командную строку. Вы можете продолжать работать в сеансе, пока задание завершится. Для управления заданием *-Job
используйте командлеты. Чтобы получить результаты задания, используйте командлет Receive-Job
.
Параметр AsJob похож на использование командлета Invoke-Command
для удаленного запуска командлета Start-Job
. Однако при использовании AsJob задание создается на локальном компьютере, даже если задание выполняется на удаленном компьютере. Результаты удаленного задания автоматически возвращаются на локальный компьютер.
Дополнительные сведения о фоновых заданиях PowerShell см. в about_Jobs и about_Remote_Jobs.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
Session
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathRunspace
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHostHashParam
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHostHash
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Authentication
Указывает механизм, используемый для проверки подлинности учетных данных пользователя. Проверка подлинности CredSSP доступна только в Windows Vista, Windows Server 2008 и более поздних версиях операционной системы Windows.
Допустимые значения для этого параметра приведены следующим образом:
- По умолчанию
- Базовый
- Credssp
- дайджест
- Kerberos
- Вести переговоры
- NegotiateWithImplicitCredential
Значение по умолчанию — Default.
Для получения дополнительной информации о значениях этого параметра см. перечисление AuthenticationMechanism.
Осторожность
Проверка подлинности поставщика поддержки безопасности учетных данных (CredSSP), при которой учетные данные пользователя передаются на удалённый компьютер для прохождения проверки подлинности, предназначена для команд, требующих аутентификации на нескольких источниках, таких как доступ к удалённому сетевому ресурсу. Этот механизм повышает риск безопасности удаленной операции. Если удаленный компьютер скомпрометирован, учетные данные, передаваемые ему, можно использовать для управления сетевым сеансом. Дополнительные сведения см. в разделе "Поставщик поддержки безопасности учетных данных".
Свойства параметра
Тип: | AuthenticationMechanism |
Default value: | Default |
Допустимые значения: | Basic, Default, Credssp, Digest, Kerberos, Negotiate, NegotiateWithImplicitCredential |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-CertificateThumbprint
Указывает сертификат цифрового публичного ключа (X509) учетной записи пользователя, которая имеет разрешение на подключение к отключенному сеансу. Введите отпечаток пальца сертификата.
Сертификаты используются в аутентификации, основанной на клиентских сертификатах. Их можно сопоставить только с локальными учетными записями пользователей, и они не работают с учетными записями домена.
Чтобы получить отпечаток сертификата, используйте команду Get-Item
Get-ChildItem
или команду на диске PowerShell Cert.
Свойства параметра
Тип: | String |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-ComputerName
Указывает компьютеры, на которых выполняется команда. По умолчанию используется локальный компьютер.
При использовании параметра ComputerName PowerShell создает временное соединение, которое используется только для выполнения указанной команды и затем закрывается. Если требуется постоянное подключение, используйте параметр сеанса.
Введите имя NETBIOS, IP-адрес или полное доменное имя одного или нескольких компьютеров в списке, разделенном запятыми. Чтобы указать локальный компьютер, введите имя компьютера, localhost или точку (.
).
Чтобы использовать IP-адрес в значении ComputerName, команда должна включать параметр Credential . Компьютер должен быть настроен для транспорта HTTPS или IP-адреса удаленного компьютера должен быть включен в список WinRM TrustedHosts локального компьютера. Инструкции по добавлению имени компьютера в список TrustedHosts см. в разделе "Добавление компьютера в список доверенных узлов".
В Windows Vista и более поздних версиях операционной системы Windows, чтобы включить локальный компьютер в значение ComputerName, необходимо запустить PowerShell с помощью параметра "Запуск от имени администратора ".
Свойства параметра
Тип: | String[] |
Default value: | Local computer |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | CN |
Наборы параметров
ComputerName
Position: | 0 |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | 0 |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-ConfigurationName
Указывает конфигурацию сеанса, используемую для нового psSession.
Введите имя конфигурации или полный URI ресурса для конфигурации сеанса. Если указать только имя конфигурации, предопределен следующий URI схемы: http://schemas.microsoft.com/PowerShell
.
При использовании с SSH этот параметр указывает подсистему, используемую в целевом объекте, как определено в sshd_config
. Значение по умолчанию для SSH — это подсистема powershell
.
Конфигурация сеанса для сеанса расположена на удаленном компьютере. Если указанная конфигурация сеанса не существует на удаленном компьютере, команда завершается ошибкой.
Значение по умолчанию — это значение переменной предпочтения $PSSessionConfigurationName
на локальном компьютере. Если эта переменная предпочтения не задана, по умолчанию используется Microsoft.PowerShell. Дополнительные сведения см. в разделе about_Preference_Variables.
Свойства параметра
Тип: | String |
Default value: | $PSSessionConfigurationName if set on the local computer, otherwise Microsoft.PowerShell |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
VMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
VMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathVMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathVMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
ContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
-ConnectingTimeout
Указывает время в миллисекундах, разрешенное для завершения начального подключения SSH. Если подключение не завершено в течение указанного времени, возвращается ошибка.
Этот параметр появился в PowerShell 7.2
Свойства параметра
Тип: | Int32 |
Default value: | Unlimited |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-ConnectionUri
Указывает универсальный идентификатор ресурса (URI), определяющий конечную точку подключения сеанса. Универсальный код ресурса (URI) должен быть полностью определённым.
Формат этой строки выглядит следующим образом:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
Значение по умолчанию выглядит следующим образом:
http://localhost:5985/WSMAN
Если URI подключения не указан, можно использовать параметры UseSSL и Port для указания значений URI подключения.
Допустимые значения для сегмента транспорта URI: HTTP и HTTPS. Если указать URI подключения с сегментом транспорта, но не указать порт, сеанс создается с портами стандартов: 80 для HTTP и 443 для HTTPS. Чтобы использовать порты по умолчанию для удаленного взаимодействия PowerShell, укажите порт 5985 для HTTP или 5986 для HTTPS.
Если целевой компьютер перенаправляет подключение к другому URI, PowerShell запрещает перенаправление, если в команде не используется параметр AllowRedirection.
Свойства параметра
Тип: | Uri[] |
Default value: | http://localhost:5985/WSMAN |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | УРИ, CU |
Наборы параметров
Uri
Position: | 0 |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | 0 |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-ContainerId
Задает массив идентификаторов контейнеров.
Свойства параметра
Тип: | String[] |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ContainerId
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathContainerId
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
-Credential
Указывает учетную запись пользователя, которая имеет разрешение на выполнение этого действия. По умолчанию используется текущий пользователь.
Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential, созданный командлетом Get-Credential
. Если ввести имя пользователя, вам будет предложено ввести пароль.
Учетные данные хранятся в объекте PSCredential, а пароль хранится в виде SecureString.
Замечание
Дополнительные сведения о защите данных SecureString см. в разделе Как безопасно SecureString?.
Свойства параметра
Тип: | PSCredential |
Default value: | Current user |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
VMId
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
VMName
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathVMId
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathVMName
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
-EnableNetworkAccess
Указывает, что этот командлет добавляет интерактивный маркер безопасности в сеансы обратного цикла. Интерактивный маркер позволяет выполнять команды в сеансе обратного цикла, который получает данные с других компьютеров. Например, можно выполнить команду в сеансе, который копирует XML-файлы с удаленного компьютера на локальный компьютер.
Сеанс обратного цикла — это PSSession, которая возникает и заканчивается на том же компьютере. Чтобы создать сеанс обратного цикла, опустите параметр ComputerName или задайте его значение dot (.
), localhost или имя локального компьютера.
По умолчанию сеансы обратного цикла создаются с помощью сетевого маркера, который может не предоставить достаточно разрешений для проверки подлинности на удаленных компьютерах.
Параметр EnableNetworkAccess действует только в сеансах обратного цикла. Если вы используете EnableNetworkAccess при создании сеанса на удаленном компьютере, команда завершается успешно, но параметр игнорируется.
Вы можете разрешить удаленный доступ в сеансе обратного цикла с помощью значения CredSSP параметра проверки подлинности, который делегирует учетные данные сеанса другим компьютерам.
Чтобы защитить компьютер от вредоносного доступа, отключенные сеансы цикла с интерактивными маркерами, созданными с помощью EnableNetworkAccess, можно повторно подключиться только с компьютера, на котором был создан сеанс. Отключенные сеансы, использующие проверку подлинности CredSSP, можно повторно подключить с других компьютеров. Дополнительные сведения см. в разделе Disconnect-PSSession
.
Этот параметр появился в PowerShell 3.0.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-FilePath
Указывает локальный скрипт, который этот командлет выполняется на одном или нескольких удаленных компьютерах. Введите путь и имя файла скрипта или переведите путь к скрипту Invoke-Command
. Скрипт должен существовать на локальном компьютере или в каталоге, к которому может получить доступ локальный компьютер. Используйте ArgumentList , чтобы указать значения параметров в скрипте.
При использовании этого параметра PowerShell преобразует содержимое указанного файла скрипта в блок скрипта, передает блок скрипта на удаленный компьютер и запускает его на удаленном компьютере.
Свойства параметра
Тип: | String |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | PSPath |
Наборы параметров
FilePathRunspace
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMId
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMName
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathContainerId
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHostHash
Position: | 1 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-HideComputerName
Указывает, что этот командлет пропускает имя компьютера каждого объекта из вывода. По умолчанию имя компьютера, создающего объект, отображается на экране.
Этот параметр влияет только на отображение выходных данных. Он не изменяет объект.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | HCN |
Наборы параметров
Session
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathRunspace
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHostHashParam
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHostHash
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-HostName
Задает массив имен компьютеров для подключения на основе Secure Shell (SSH). Это аналогично параметру ComputerName , за исключением того, что подключение к удаленному компьютеру выполняется с помощью SSH, а не Windows WinRM.
Этот параметр появился в PowerShell 6.0.
Свойства параметра
Тип: | String[] |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
SSHHost
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-InDisconnectedSession
Указывает, что этот командлет выполняет команду или скрипт в отключенном сеансе.
При использовании создается постоянный сеанс на каждом удаленном компьютере, запускает команду, указанную параметром Invoke-Command
или FilePath, а затем отключается от сеанса. Команды продолжают выполняться в отключенных сеансах.
InDisconnectedSession позволяет выполнять команды без поддержания подключения к удаленным сеансам. И, поскольку сеанс отключен до возврата любых результатов, InDisconnectedSession гарантирует, что все результаты команды возвращаются в повторно подключенном сеансе вместо разделения между сеансами.
Нельзя использовать InDisconnectedSession с параметром сеанса или параметром AsJob.
Команды, использующие InDisconnectedSession, возвращают объект PSSession, представляющий отключенный сеанс. Они не возвращают выходные данные команды. Чтобы подключиться к отключенным сеансам, используйте Connect-PSSession
командлеты или Receive-PSSession
командлеты. Чтобы получить результаты команд, которые выполнялись в сеансе, используйте Receive-PSSession
командлет. Чтобы выполнить команды, которые создают выходные данные в отключенном сеансе, задайте для параметра OutputBufferingModeзначение Drop. Если вы планируете подключиться к отключенным сеансам, задайте время ожидания простоя в сеансе, чтобы обеспечить достаточное время для подключения перед удалением сеанса.
Режим буферизации выходных данных и время ожидания простоя можно задать в параметре SessionOption или в переменной $PSSessionOption
предпочтения. Дополнительные сведения о параметрах сеанса см. в about_Preference_Variables New-PSSessionOption
.
Дополнительные сведения о функции разъединённых сеансов см. в разделе about_Remote_Disconnected_Sessions.
Этот параметр появился в PowerShell 3.0.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | Отключен |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-InputObject
Задает входные данные для команды. Введите переменную, содержащую объекты или введите команду или выражение, которое получает объекты.
При использовании параметра InputObject используйте $input
автоматическую переменную в значении параметра ScriptBlock для представления входных объектов.
Свойства параметра
Тип: | PSObject |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
(All)
Position: | Named |
Обязательно: | False |
Значение из конвейера: | True |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-JobName
Указывает понятное имя фонового задания. По умолчанию задания называются Job<n>
порядковый <n>
номер.
Если вы используете параметр JobName в команде, команда выполняется как задание и Invoke-Command
возвращает объект задания, даже если в команду не включен AsJob .
Дополнительные сведения о фоновых заданиях PowerShell см. в about_Jobs.
Свойства параметра
Тип: | String |
Default value: | Job<n> |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
FilePathRunspace
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Session
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHostHashParam
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-KeyFilePath
Указывает путь к файлу ключа, используемый Secure Shell (SSH) для проверки подлинности пользователя на удаленном компьютере.
SSH позволяет выполнять проверку подлинности пользователей с помощью закрытых и открытых ключей в качестве альтернативы базовой проверке подлинности паролей. Если удаленный компьютер настроен для проверки подлинности ключа, этот параметр можно использовать для предоставления ключа, определяющего пользователя.
Этот параметр появился в PowerShell 6.0.
Свойства параметра
Тип: | String |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | IdentityFilePath |
Наборы параметров
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-NoNewScope
Указывает, что этот командлет выполняет указанную команду в текущей области. По умолчанию Invoke-Command
выполняются команды в собственной области.
Этот параметр действителен только в командах, которые выполняются в текущем сеансе, то есть команды, которые опустят параметры ComputerName и Session .
Этот параметр появился в PowerShell 3.0.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
InProcess
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Options
Указывает хэш-список параметров SSH, используемых при подключении к удаленному сеансу на основе SSH. Возможные параметры — это любые значения, поддерживаемые версией команды SSH на основе Unix.
Все значения, явно переданные параметрами, имеют приоритет над значениями, переданными в хэш-таблицы Options . Например, при использовании параметра Port переопределяется любая Port
пара "ключ-значение", переданная в хэш-файл " Параметры ".
Этот параметр был добавлен в PowerShell 7.3.
Свойства параметра
Тип: | Hashtable |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Port
Указывает сетевой порт на удаленном компьютере, используемом для этой команды. Чтобы подключиться к удаленному компьютеру, удаленный компьютер должен прослушивать порт, используемый подключением. Порты по умолчанию : 5985 (порт WinRM для HTTP) и 5986 (порт WinRM для HTTPS).
Перед использованием альтернативного порта настройте прослушиватель WinRM на удаленном компьютере для прослушивания этого порта. Чтобы настроить прослушиватель, введите следующие две команды в командной строке PowerShell:
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>
Не используйте параметр Port , если только не требуется. Порт, заданный в команде, применяется ко всем компьютерам или сеансам, на которых выполняется команда. Альтернативный параметр порта может предотвратить выполнение команды на всех компьютерах.
Свойства параметра
Тип: | Int32 |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-RemoteDebug
Используется для выполнения вызываемой команды в режиме отладки в удаленном сеансе PowerShell.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
Session
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathRunspace
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHostHashParam
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHostHash
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-RunAsAdministrator
Указывает, что этот командлет вызывает команду в качестве администратора.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-ScriptBlock
Указывает команды для выполнения. Заключите команды в фигурные скобки ({ }
) для создания блока скрипта. При удаленном Invoke-Command
выполнении команды все переменные в команде оцениваются на удаленном компьютере.
Замечание
Параметры для блокировки скриптов можно передавать только из ArgumentList по позиции. Параметры переключения нельзя передавать по позиции. Если вам нужен параметр, который ведет себя как тип SwitchParameter, используйте вместо этого логический тип.
Свойства параметра
Тип: | ScriptBlock |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | командование |
Наборы параметров
InProcess
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Session
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ComputerName
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMId
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMName
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHost
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ContainerId
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
SSHHostHashParam
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Session
Задает массив сеансов, в которых этот командлет выполняет команду. Введите переменную, содержащую объекты PSSession или команду, которая создает или получает объекты PSSession, например New-PSSession
Get-PSSession
или команду.
При создании PSSession PowerShell устанавливает постоянное подключение к удаленному компьютеру. Используйте PSSession для выполнения ряда связанных команд, которые совместно используют данные. Чтобы выполнить одну команду или серию несвязанных команд, используйте параметр ComputerName . Дополнительные сведения см. в about_PSSessions.
Свойства параметра
Тип: | |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
Session
Position: | 0 |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathRunspace
Position: | 0 |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-SessionName
Указывает понятное имя для отключенного сеанса. Имя можно использовать для ссылки на сеанс в последующих командах, таких как Get-PSSession
команда. Этот параметр действителен только с параметром InDisconnectedSession .
Этот параметр появился в PowerShell 3.0.
Свойства параметра
Тип: | String[] |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-SessionOption
Задает дополнительные параметры сеанса. Введите объект SessionOption, например создаваемый с помощью командлетаNew-PSSessionOption
, или хэш-таблицу, в которой ключи являются именами параметров сеанса, а значения — значениями параметра сеанса.
Замечание
Если указать хэш-файл для SessionOption, PowerShell преобразует хэш-файл в объект System.Management.Automation.Remoting.PSSessionOption . Значения ключей, указанных в хэш-таблицы, приведение к свойству соответствующего объекта. Это ведет себя по-разному от вызова New-PSSessionOption
. Например, значения System.TimeSpan для свойств тайм-аута, например IdleTimeout, преобразуют целочисленное значение в галочки вместо миллисекунда.
Дополнительные сведения об объекте PSSessionOption и его свойствах см. в разделе PSSessionOption
Значения по умолчанию для параметров определяются значением переменной предпочтения $PSSessionOption
, если она задана. В противном случае значения по умолчанию устанавливаются параметрами, заданными в конфигурации сеанса.
Значения параметра сеанса имеют приоритет над значениями по умолчанию для сеансов, заданных в переменной предпочтения $PSSessionOption
и в конфигурации сеанса. Однако они не имеют приоритета над максимальными значениями, квотами или ограничениями, заданными в конфигурации сеанса.
Описание параметров сеанса, включающих значения по умолчанию, см. New-PSSessionOption
. Сведения о переменной предпочтения $PSSessionOption
см. в about_Preference_Variables. Дополнительные сведения о конфигурациях сеансов см. в about_Session_Configurations.
Свойства параметра
Тип: | PSSessionOption |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-SSHConnection
Этот параметр принимает массив хэш-таблиц, где каждая хэш-таблица содержит один или несколько параметров подключения, необходимых для установления подключения Secure Shell (SSH). Параметр SSHConnection полезен для создания нескольких сеансов, в которых для каждого сеанса требуются разные сведения о подключении.
Хэш-файл содержит следующие элементы:
- ComputerName (или HostName)
- Порт
- Имя пользователя
- KeyFilePath (или IdentityFilePath)
ComputerName (или HostName) — это единственная пара "ключ-значение", которая является обязательной.
Этот параметр появился в PowerShell 6.0.
Свойства параметра
Тип: | |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
SSHHostHashParam
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHostHash
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-SSHTransport
Указывает, что удаленное подключение установлено с помощью Secure Shell (SSH).
По умолчанию PowerShell использует Windows WinRM для подключения к удаленному компьютеру. Этот коммутатор заставляет PowerShell использовать параметр HostName для установления удаленного подключения на основе SSH.
Этот параметр появился в PowerShell 6.0.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Допустимые значения: | true |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-Subsystem
Задает подсистему SSH, используемую для новой подсистемы PSSession.
Это указывает подсистему, используемую в целевом объекте, как определено в sshd_config. Подсистема запускает определенную версию PowerShell с предопределенными параметрами. Если указанная подсистема не существует на удаленном компьютере, команда завершается ошибкой.
Если этот параметр не используется, по умолчанию используется подсистема powershell
.
Свойства параметра
Тип: | String |
Default value: | powershell |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-ThrottleLimit
Указывает максимальное количество одновременных подключений, которые можно установить для выполнения этой команды. Если этот параметр не указан или введите значение 0, используется значение по умолчанию 32.
Ограничение регулирования применяется только к текущей команде, а не к сеансу или к компьютеру.
Свойства параметра
Тип: | Int32 |
Default value: | 32 |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
Session
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathRunspace
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
Uri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathUri
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
VMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathVMName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
ContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathContainerId
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-UserName
Указывает имя пользователя для учетной записи, используемой для выполнения команды на удаленном компьютере. Метод проверки подлинности пользователя зависит от настройки Secure Shell (SSH) на удаленном компьютере.
Если SSH настроен для базовой проверки подлинности паролей, вам будет предложено ввести пароль пользователя.
Если SSH настроен для проверки подлинности пользователя на основе ключей, то путь к файлу ключа можно предоставить с помощью параметра KeyFilePath , и запрос пароля не возникает. Если файл ключа пользователя клиента расположен в известном расположении SSH, параметр KeyFilePath не нужен для проверки подлинности на основе ключей, а проверка подлинности пользователя выполняется автоматически на основе имени пользователя. Дополнительные сведения см. в документации по SSH платформы о проверке подлинности пользователей на основе ключей.
Это не обязательный параметр. Если параметр UserName не указан, для подключения используется текущее имя пользователя, вошедшего в систему.
Этот параметр появился в PowerShell 6.0.
Свойства параметра
Тип: | String |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
SSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathSSHHost
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-UseSSL
Указывает, что этот командлет использует протокол SSL для установления подключения к удаленному компьютеру. По умолчанию SSL не используется.
WS-Management шифрует все содержимое PowerShell, передаваемое по сети. Параметр UseSSL — это дополнительная защита, которая отправляет данные по протоколу HTTPS вместо HTTP.
Если вы используете этот параметр, но SSL недоступен на порту, который используется для команды, команда завершается ошибкой.
Свойства параметра
Тип: | SwitchParameter |
Default value: | False |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
ComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
FilePathComputerName
Position: | Named |
Обязательно: | False |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | False |
Значение из оставшихся аргументов: | False |
-VMId
Задает массив идентификаторов виртуальных машин.
Свойства параметра
Тип: | Guid[] |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Aliases: | VMGuid |
Наборы параметров
VMId
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathVMId
Position: | 0 |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
-VMName
Задает массив имен виртуальных машин.
Свойства параметра
Тип: | String[] |
Default value: | None |
Поддерживаются подстановочные знаки: | False |
DontShow: | False |
Наборы параметров
VMName
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
FilePathVMName
Position: | Named |
Обязательно: | True |
Значение из конвейера: | False |
Значение из конвейера по имени свойства: | True |
Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
ScriptBlock
Вы можете передать команду в блок Invoke-Command
скрипта. Используйте $input
автоматическую переменную для представления входных объектов в команде.
Выходные данные
System.Management.Automation.PSRemotingJob
При использовании параметра AsJob этот командлет возвращает объект задания.
PSSession
При использовании параметра InDisconnectedSession этот командлет возвращает объект PSSession.
Object
По умолчанию этот командлет возвращает выходные данные вызываемой команды, которая является значением параметра ScriptBlock .
Примечания
PowerShell включает следующие псевдонимы для Invoke-Command
:
- Все платформы:
icm
В Windows Vista и более поздних версиях операционной системы Windows, чтобы использовать параметр ComputerName для выполнения команды на локальном компьютере, необходимо запустить PowerShell с помощью Invoke-Command
".
При выполнении команд на нескольких компьютерах PowerShell подключается к компьютерам в том порядке, в котором они отображаются в списке. Однако выходные данные команды отображаются в том порядке, в котором он получил от удаленных компьютеров, которые могут отличаться.
Ошибки, которые приводятся из выполняемой команды Invoke-Command
, включаются в результаты команды.
Ошибки, которые будут завершающимися ошибками в локальной команде, рассматриваются как неисключающие ошибки в удаленной команде. Эта стратегия гарантирует, что завершающие ошибки на одном компьютере не закрывают команду на всех компьютерах, на которых она выполняется. Эта практика используется даже при выполнении удаленной команды на одном компьютере.
Если удаленный компьютер не находится в домене, которому доверяет локальный компьютер, компьютер может не пройти проверку подлинности учетных данных пользователя. Чтобы добавить удаленный компьютер в список доверенных узлов в WS-Management, используйте следующую команду в поставщике WSMan
, где <Remote-Computer-Name>
имя удаленного компьютера:
Set-Item -Path WSMan:\Localhost\Client\TrustedHosts -Value \<Remote-Computer-Name\>
При отключении PSSession с помощью параметра InDisconnectedSession состояние сеанса отключено, а доступность — None. Значение свойства состояния является относительным для текущего сеанса. Значение "Отключено " означает, что PSSession не подключен к текущему сеансу. Однако это не означает, что PSSession отключен от всех сеансов. Он может быть подключен к другому сеансу. Чтобы определить, можно ли подключиться или повторно подключиться к сеансу, используйте свойство доступности.
Значение доступности
Параметры HostName и SSHConnection были включены начиная с PowerShell 6.0. Они были добавлены для предоставления удаленного взаимодействия PowerShell на основе Secure Shell (SSH). PowerShell и SSH поддерживаются на нескольких платформах (Windows, Linux, macOS) и удаленном взаимодействии PowerShell на этих платформах, где установлены и настроены SSH PowerShell. Это отдельно от предыдущего удаленного взаимодействия Windows, основанного на WinRM, и многие из конкретных функций и ограничений WinRM не применяются. Например, квоты на основе WinRM, параметры сеанса, конфигурация пользовательской конечной точки и функции отключения и повторного подключения в настоящее время не поддерживаются. Дополнительные сведения о настройке удаленного взаимодействия PowerShell SSH см. в статье о удаленном взаимодействии PowerShell по протоколу SSH.
Исполняемый ssh
файл получает данные конфигурации из следующих источников в следующем порядке:
- Параметры командной строки
- файл конфигурации пользователя (~/.ssh/config)
- Файл конфигурации на уровне системы (/etc/ssh/ssh_config)
Следующие параметры командлета сопоставляются с ssh
параметрами и параметрами:
Параметр командлета | Параметр ssh | эквивалентный параметр ssh -o |
---|---|---|
-KeyFilePath |
-i <KeyFilePath> |
-o IdentityFile=<KeyFilePath> |
-UserName |
-l <UserName> |
-o User=<UserName> |
-Port |
-p <Port> |
-o Port=<Port> |
-ComputerName -Subsystem |
-s <ComputerName> <Subsystem> |
-o Host=<ComputerName> |
Все значения, явно переданные параметрами, имеют приоритет над значениями, переданными в хэш-таблицы Options . Дополнительные сведения о файлах см. в ssh_config
разделе ssh_config(5).