У меня есть проект по подключению к удаленному серверу Windows и запуску скрипта Powershell.
Можно ли выполнить какую-либо команду на удаленной машине, чтобы узнать, настроена ли она с PowerShell по умолчанию, чтобы я мог запустить свой скрипт напрямую с помощью PowerShell, а не CDOS?
Эту команду можно выполнить как в PowerShell, так и в CDOS.
решение1
Ваш вопрос указывает на то, что вы совсем новичок в PowerShell или, как минимум, в PSRemoting. Поэтому, пожалуйста, потратьте время на то, чтобы быстро освоить тему, используя YouTube, MSDN Channel9 и сайты MS Learning, выполняя поиск по запросам Beginning/Intermediate/Advanced PowerShell и, в частности, PowerShell Remoting и PowerShell с использованием SSH.
Если вы не получаете сообщение об ошибке при попытке использовать любую команду PowewrShell на удаленном хосте, то она включена. То, что она включена, не всегда означает, что она вам доступна. Многие команды PSRemoting требуют использования учетной записи, которая находится в локальной группе администраторов целевого хоста.
Проверка того, включен ли PSRemoting на локальном или удаленном объекте, — обычное дело, для таких проверок существуют командлеты...
Примеры):
Get-Command -Name '*pssession*' | Format-Table -AutoSize
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Connect-PSSession 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Disable-PSSessionConfiguration 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Disconnect-PSSession 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Enable-PSSessionConfiguration 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Enter-AzureRmWebAppContainerPSSession 5.2.0 AzureRM.Websites
Cmdlet Enter-PSSession 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Exit-PSSession 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Export-PSSession 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-PSSession 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Get-PSSessionCapability 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Get-PSSessionConfiguration 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Import-PSSession 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet New-AzureRmWebAppContainerPSSession 5.2.0 AzureRM.Websites
Cmdlet New-PSSession 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet New-PSSessionConfigurationFile 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet New-PSSessionOption 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Receive-PSSession 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Register-PSSessionConfiguration 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Remove-PSSession 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Set-PSSessionConfiguration 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Test-PSSessionConfigurationFile 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Unregister-PSSessionConfiguration 3.0.0.0 Microsoft.PowerShell.Core
Get-PSSessionConfiguration
# get function / cmdlet details
Get-Command -Name Get-PSSessionConfiguration -Syntax
# Results
Get-PSSessionConfiguration [[-Name] <string[]>] [-Force] [<CommonParameters>]
(Get-Command -Name Get-PSSessionConfiguration).Parameters.Keys
# Results
Name
Force
Verbose
Debug
ErrorAction
WarningAction
InformationAction
ErrorVariable
WarningVariable
InformationVariable
OutVariable
OutBuffer
PipelineVariable
Get-help -Name Get-PSSessionConfiguration -Full
Get-help -Name Get-PSSessionConfiguration -Online
Get-help -Name Get-PSSessionConfiguration -Examples
# Results
Get-PSSessionConfiguration
Get-PSSessionConfiguration -Name Microsoft*
Get-PSSessionConfiguration -Name Full | Format-List -Property *
(Get-PSSessionConfiguration Microsoft.PowerShell.Workflow).PSObject.Properties | Select-Object Name,Value | Sort-Object Name
dir wsman:\localhost\plugin
Connect-WSMan -ComputerName Server01
dir WSMan:\Server01\Plugin
dir WSMan:\Server01\Plugin\*\Resources\Resource*\Capability | where {$_.Value -eq "Shell"} | foreach {($_.PSPath.split("\"))[3] }
Enable-WSManCredSSP -Delegate Server02
Connect-WSMan Server02
Set-Item WSMan:\Server02*\Service\Auth\CredSSP -Value $true
Invoke-Command -ScriptBlock {Get-PSSessionConfiguration} -ComputerName Server02 -Authentication CredSSP -Credential Domain01\Admin01
(Get-PSSessionConfiguration -Name CustomShell).resourceURI
... и хорошо документированы на TechNet, MS docs, сайте, файлах справки PowerShell и многих блогах и сайтах вопросов и ответов по всему Интернету. Нужно просто выполнить простой поиск, чтобы найти эти элементы и примеры.
Поиск «проверить, включен ли psremoting на удаленном хосте» Примеры результатов:
Как определить, включено ли удаленное взаимодействие PowerShell