원격 및 로컬 호스트에서 실행할 수 있어야하는이 스크립트가 있습니다. -ComputerName을 '.'이있는 매개 변수로 허용합니다. (localhost)를 기본값으로 사용합니다.ComputerName이 localhost 또는 '.'인 경우 powershell 스크립트를 로컬 스크립트로 실행하십시오.
현재 새 원격 세션의 유효성 검사 방법을 테스트하고이를위한 작은 cmdlet을 작성했습니다. 문제는이 스크립트를 '.' 또는 localhost를 스크립트가 내 컴퓨터에서 새 원격 세션에 연결하려고 시도하는 ComputerName으로 설정합니다. PSRemoting이 활성화되어 있지 않아도 작동하지 않습니다.
이 내 테스트 스크립트입니다
Function Test-PsRemoting {
[CmdletBinding()]
param(
$ComputerName = ".",
$Credentials
)
$ErrorActionPreference = "Stop"
Test-Connection -ComputerName $ComputerName -Count 1 |
Format-List -Property PSComputerName,Address,IPV4Address,IPV6Address
Test-WSMan $ComputerName
$session = New-PSSession -ComputerName $ComputerName -Credential $Credentials
Invoke-Command -ComputerName $computername { 1 }
}
명령은 Test-가 WSMan은 New-PSSession을하고 내가
인가 원격 연결을 원하는 가정으로-명령 호출 실패의 모든 $ ComputerName이 '.'이면 Powershell이 로컬 세션에서 명령을 실행할 수 있습니다. 또는 localhost 또는 if/else 절에서 직접 처리해야합니까?
이 스크립트는 로컬 및 원격 시스템에서 모두 실행하기위한 것입니다 내가 로컬
팁을 주셔서 감사합니다. 아직 Powershell 학습자이며 ScriptBlock로 생각하지 않았습니다. –
Test-WsMan cmdlet에서 자격 증명을 사용하지 않았습니다. 그게 의도적 인거야? 이 경우 여전히 유효한 결과를 반환합니까? –
나는 그의 질문에 대답하기 위해 그의 대본을 수정했다. 나는 그것을 실행하지 않았고'Test-WSMan'이 그 일을하기 위해 자격 증명을 요구하는지 모른다. 그것은 별개의 "문제"입니다. :-) –