Ich habe ein Projekt, um eine Verbindung zu einem Remote-Windows-Server herzustellen und ein Powershell-Skript auszuführen.
Gibt es einen Befehl, den ich auf dem Remotecomputer ausführen kann, um herauszufinden, ob dieser standardmäßig mit PowerShell konfiguriert wurde, sodass ich mein Skript direkt mit PowerShell statt mit CDOS ausführen kann?
Dieser Befehl kann entweder in PowerShell oder CDOS ausgeführt werden.
Antwort1
Ihre Frage deutet darauf hin, dass Sie mit PowerShell oder zumindest mit PSRemoting noch nicht vertraut sind. Nehmen Sie sich also bitte die Zeit, sich mithilfe von YouTube, MSDN Channel9 und den MS Learning-Sites in das Thema einzuarbeiten. Suchen Sie nach PowerShell für Anfänger/Fortgeschrittene und speziell nach PowerShell-Remoting und PowerShell mit SSH.
Wenn Sie beim Versuch, einen PowerShell-Befehl auf dem Remote-Host zu verwenden, keine Fehlermeldung erhalten, ist es aktiviert. Nur weil es aktiviert ist, heißt das nicht immer, dass es für Sie verfügbar ist. Für viele PSRemoting-Befehle müssen Sie ein Konto verwenden, das zur lokalen Administratorgruppe des Zielhosts gehört.
Ob PSRemoting auf einem lokalen oder Remoteziel aktiviert ist, lässt sich ganz einfach überprüfen. Für solche Überprüfungen gibt es Cmdlets ...
Beispiele:
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
... und gut dokumentiert auf TechNet, den MS-Dokumenten, der Site, den PowerShell-Hilfedateien und vielen Blogs und Q&A-Sites im gesamten Web. Man muss nur eine einfache Suche durchführen, um diese Elemente und Beispiele zu finden.
Suche nach „Überprüfen, ob Psremoting auf einem Remotehost aktiviert ist“. Beispieltreffer:
So erkennen Sie, ob Powershell-Remoting aktiviert ist
Aktivieren Sie PowerShell Remoting und prüfen Sie, ob es aktiviert ist.