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 v2가 C:\Windows\System32\WindowsPowerShell\v1.0 디렉토리에 설치되었습니다. 원래 v1.0의 맨 위에 있고 동일한 디렉토리 이름.

그래서 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

감사의를 답변 및 설명. 문제는 두 번째 방법을 사용하면 내가 사용하고있는 모듈이 작동한다는 것입니다. 그렇지 않으면 다음 오류가 발생합니다.'이 cmdlet에는 PowerShell 버전 3.0 이상이 필요합니다. + CategoryInfo : InvalidOperation : (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException, 호출 SCXDiscovery + PSComputerName : TARGETHOST' – Manuel