스크립트 상단의 변수는 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 프로세스가 시스템에서 시작하는 것을 알았어 야하지만 메모장은하지 않았다. 내가 도대체 뭘 잘못하고있는 겁니까?
입력 해 주셔서 대단히 감사합니다. 그 컴퓨터 라인을 추가하면 실제로 프로세스가 원격으로 실행되지만 화면에는 아무 것도 나타나지 않고 트리거 한 설정 파일의 설치 활동이 거의 없습니다. 아이디어? –
powershell 명령이 자신의 세션에서 실행된다는 것을 잊지 마십시오. 따라서 로그온 한 사용자는 다른 세션이므로 수행중인 작업을 볼 수 없습니다. 모든 프로세스에서 작업 관리자를 보면 메모장이 실행 중임을 알 수 있습니다. 로그인 한 사용자가 볼 수있는 원격 컴퓨터에서 메모장을 열려면 예약 된 작업을 수행하는 것이 좋습니다. – kfordham281