2017-09-29 4 views
0

私はリモートマシン上の特定のPowerShellモジュールを使用していくつかのことをする小さなPowerShellスクリプトを作成しようとしています。このモジュールを使用するには、PowerShell Version> =を使用する必要があります。特定のPowershellバージョンを使用したリモートターゲットでのInvoke-Commandは可能ですか?

私は、リモートマシン上でスクリプトを実行するためにInvoke-Commandを使用してみましたが、私は、リモートターゲット上で利用可能な最新のPowerShellのバージョンを使用する方法を見つけ出すことはできません。

$SessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck 
$Session = New-PSSession -ComputerName "TARGETHOST" -Authentication Negotiate -SessionOption $SessionOption 
Invoke-Command -Session $Session -ScriptBlock { 
    (Get-Host).Version 
} 

を使用バージョン1になります。

$SessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck 
$Session = New-PSSession -ComputerName "TARGETHOST" -Authentication Negotiate -SessionOption $SessionOption 
Invoke-Command -Session $Session -ScriptBlock{ 
    C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe -Command { 
     (Get-Host).Version 
    } 
} 

しかし、私はリモートセッション内で別のPSセッションを生み出していますので、私は、これは素晴らしい解決策だとは思わない:いくつかの工夫の後、私は私がやりたい方法を見つけました。今私は、同じことを達成するためのより良い方法があるのだろうかと思っています。

答えて

0

PowerShellを作成したときの元の考えは、バージョンがスクリプト拡張によって区別されるということでした。

という考えは今だけ.ps1ファイル(とない.ps2.ps3など)を持って、下位互換性を維持するために、混乱を避けるために実装されていませんでした。

後方互換性が維持されたように、彼らはどちらかの周りのPowerShellの古いバージョンを保持する必要はありませんでした、ので、PowerShellはC:\Windows\System32\WindowsPowerShell\v1.0ディレクトリにインストール...元v1.0のの上と同じディレクトリを維持v2の名。

そのディレクトリからPS v1を実行しているとは思いますが、実際には最新のPowershellバージョンを実行しています。あなたはその場所からたpowershell.exeを実行し、私の場合は$PSVersionTable

でバージョンを確認することでこれを確認することができます

PS C:\> $PSVersionTable 

Name       Value 
----       ----- 
PSVersion      5.1.15063.608 
PSEdition      Desktop 
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0...} 
BuildVersion     10.0.15063.608 
CLRVersion      4.0.30319.42000 
WSManStackVersion    3.0 
PSRemotingProtocolVersion  2.3 
SerializationVersion   1.1.0.1 
+0

あなたの答えと解説のためのありがとうございました。 問題は、2番目の方法を使用すると、私が使用しているモジュールが動作することだけです。それ以外の場合は、次のエラーが発生します。 'このコマンドレットには、PowerShellバージョン3.0以降が必要です。 + CategoryInfo:InvalidOperation:(:) [Write-Error]、WriteErrorException + FullyQualifiedErrorId:Microsoft.PowerShell.Commands.WriteErrorException、Invoke-SCXDiscovery + PSComputerName:TARGETHOST' – Manuel

関連する問題