2016-10-31 2 views
1

스크립트 상단의 변수는 New-PSDrive에 대한 몇 가지 명령/변수와 연결 및 설치를 정의합니다. 그런 다음 텍스트 파일을 열고 정보를 추출하는 함수가 만들어집니다. 이 부분은 2 개의 다른 스크립트에서 사용하기 때문에이 부분이 작동한다는 것을 알고 있습니다. 마지막으로, 스크립트는 첫 번째 변수에서 명령을 실행합니다.Invoke-Command를 사용하여 원격으로 프로그램 설치

스크립트는 성공적으로 실행 중이지만 원격 컴퓨터를 검사하면 아무 일도 없었 음을 알 수 있습니다. 이 활동 중 하나를 수행하는

이전에, 원격 컴퓨터는 그에 대해 실행하는 스크립트가 있습니다

  • 이 PSRemoting은 (방화벽 규칙을 설정하고 WinRM을 시작) 할 수 있습니다, 그리고
  • 는 실행 정책을 무시합니다.

이러한 단계가 완료되면 아래 스크립트가 실행되어 소프트웨어가 설치됩니다.

$eAudIT2014V2Install = { 
    $eAudIT2014V2password = ConvertTo-SecureString "PasswordHere" -AsPlainText -Force 
    $eAudIT2014V2cred = New-Object System.Management.Automation.PSCredential('domain\user', $eAudIT2014V2password) 
    $eAudIT2014V2drive = New-PSDrive -Name eAudIT2014V2 -PSProvider FileSystem -Root "\\Server\Share" -Credential $eAudIT2014V2cred 
    $eAudIT2014V2job = Start-Job {"eAudIT2014V2:\Setup.cmd"} 
    Wait-Job $eAudIT2014V2job 
    Receive-Job $eAudIT2014V2job 
} 

Function Get-OpenFile($initialDirectory) { 
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | 
    Out-Null 

    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog 
    $OpenFileDialog.InitialDirectory = $initialDirectory 
    $OpenFileDialog.ShowDialog() 
    $OpenFileDialog.Filename 
    $OpenFileDialog.ShowHelp = $true 
} 

$InputFile = Get-OpenFile 
if ($InputFile -eq "Cancel") { 
    Write-Host "Canceled By User" 
    exit 
} else { 
    $Computers = @(Get-Content -Path $InputFile) 
} 

foreach ($computer in $computers) { 
    Write-Host "Installing eAudIT 2014V2 on Selected Computers" 
    Invoke-Command $eAudIT2014V2Install 
} 

내가 notepad.exe를 같은 기본 뭔가를 실행하려면이 스크립트를 말할 경우 DLLHOST 프로세스가 시스템에서 시작하는 것을 알았어 야하지만 메모장은하지 않았다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

3

답변은 여기에서 매우 간단합니다. Invoke-Command cmdlet에 코드를 실행할 컴퓨터를 알리지 않으면 모든 스크립트가 작동하지 않습니다. 루프를 반복하고 로컬 시스템에서 해당 명령을 여러 번 호출하는 것입니다. 코드를 실행하는 기계를 지정하기 위해 초를 마지막 행으로 변경해야합니다.

Invoke-Command $eAudIT2014V2Install -ComputerName $computer 
+0

입력 해 주셔서 대단히 감사합니다. 그 컴퓨터 라인을 추가하면 실제로 프로세스가 원격으로 실행되지만 화면에는 아무 것도 나타나지 않고 트리거 한 설정 파일의 설치 활동이 거의 없습니다. 아이디어? –

+0

powershell 명령이 자신의 세션에서 실행된다는 것을 잊지 마십시오. 따라서 로그온 한 사용자는 다른 세션이므로 수행중인 작업을 볼 수 없습니다. 모든 프로세스에서 작업 관리자를 보면 메모장이 실행 중임을 알 수 있습니다. 로그인 한 사용자가 볼 수있는 원격 컴퓨터에서 메모장을 열려면 예약 된 작업을 수행하는 것이 좋습니다. – kfordham281

관련 문제