Hoppa till innehåll

  • Logga in via Facebook Logga in via Twitter Logga in via Windows Live Log In with LinkedIn Log In with Google      Logga in   
  • Registrera dig nu!

Powershell, powerpoint, slideshow

powershell

Den här tråden har blivit arkiverad. Det betyder att du inte kan skriva något inlägg i tråden.
2 svar i denna tråden

#1 MarcusW

MarcusW

  • 929 inlägg

Skriven 10 July 2012 - 09:13

Tjenare, har påbörjat ett lite script för att starta en powerpoint presentation. och när det sker förändringar så skall den byta presentationen (har fått en del hjälp av Wall). Det jag nu vill få till i detta är att den loopar, samt sätter en time på 10 sekunder för varje slide. Någon som har lite feedback? Bifogar scriptet. Detta för att senare kunna lägga ett script på en filserver, som exempelvis receptionisten kan uppdatera, och detta skjuts ut på en tv eller projektor för att exempelvis vissa koncerninformation.

$checkFile = "c:\test.pptx"
$showFile = "c:\slideshow.pps"
$checkedFileInfo = "c:\filechange.txt"
$checkedFileTime = ((Get-Item $checkFile).LastWriteTime)
$checkedFileTime = Get-Date $checkedFileTime -Format "yyyy-MM-dd HH:mm:ss"
if (!(Test-Path $checkedFileInfo)) {
  $checkedFileTime | Out-File $checkedFileInfo
}
if (Test-Path $checkedFileInfo) {
  $changedInfo = Get-Content $checkedFileInfo
  foreach ($item in $changedInfo) {
  if ($item -eq $checkedFileTime) {
    Write-Host "Ingen ändring"
  }
  else {
    Write-Host "Ändrad"
    $checkedFileTime = ((Get-Item $checkFile).LastWriteTime)
    $checkedFileTime = Get-Date $checkedFileTime -Format "yyyy-MM-dd HH:mm:ss"
  
    $checkedFileTime | Out-File $checkedFileInfo  
  
    # Stoppar PowerPoint
    Stop-Process -processname "POWERPNT"
  
    Sleep 1
  
    # Tar bort filen som visas
    Remove-Item $showFile
  
    # Döper om filen som sparas ner på sharet till filen som visas
  
    Copy-Item $checkFile $showFile

    # Startar PowerPoint igen med filen som visas
    Start-Process $showFile
  }
  }
}

#2 GiZmO

GiZmO

  • 3344 inlägg

Skriven 10 July 2012 - 13:01

Om du bara startar powerpointfilen så har du ju inte längre något "grepp" om den. Om du istället startar powerpoint som objekt och laddar in filen så kan du härja på med alla möjliga parametrar, exempel


Set-Variable ppShowTypeKiosk -option Constant -value 3
Set-Variable ppSlideShowAdvanceTime -option Constant -value 5
$checkFile = "c:\test.pptx"
$showFile = "c:\slideshow.pps"
$checkedFileInfo = "c:\filechange.txt"
$checkedFileTime = ((Get-Item $checkFile).LastWriteTime)
$checkedFileTime = Get-Date $checkedFileTime -Format "yyyy-MM-dd HH:mm:ss"
if (!(Test-Path $checkedFileInfo)) {
  $checkedFileTime | Out-File $checkedFileInfo
}
if (Test-Path $checkedFileInfo) {
	$changedInfo = Get-Content $checkedFileInfo
	foreach ($item in $changedInfo) {
		if ($item -eq $checkedFileTime) {
			Write-Host "Ingen ändring"
		} else {
			Write-Host "Ändrad"
			$checkedFileTime = ((Get-Item $checkFile).LastWriteTime)
			$checkedFileTime = Get-Date $checkedFileTime -Format "yyyy-MM-dd HH:mm:ss"
			$checkedFileTime | Out-File $checkedFileInfo  
  
			# Stoppar PowerPoint
			Stop-Process -processname "POWERPNT"
			Sleep 1
			# Tar bort filen som visas
			Remove-Item $showFile
  
			# Döper om filen som sparas ner på sharet till filen som visas
  
			Copy-Item $checkFile $showFile
			# Startar PowerPoint igen med filen som visas
			Add-type -AssemblyName office
			$Application = New-Object -ComObject powerpoint.application
			$Application.visible = [Microsoft.Office.Core.MsoTriState]::msoTrue
			$SlideType = "microsoft.office.interop.powerpoint.ppSlideLayout" -as [type]
			$Presentation = $Application.Presentations.open($showFile)
			foreach($Slide in $Presentation.Slides) {
				$Slide.SlideShowTransition.AdvanceTime = $ppSlideShowAdvanceTime
				$Slide.SlideShowTransition.AdvanceOnTime = [Microsoft.Office.Core.MsoTriState]::msoTrue
				$Slide.SlideShowTransition.Advanceonclick = [Microsoft.Office.Core.MsoTriState]::msoFalse
			}
		$Presentation.SlideShowSettings.ShowType = $ppShowTypeKiosk
		$Presentation.SlideShowSettings.run()
		}
	}
}

Jag har bara testat lite så jag lämnar inga som hellst garantier för att det funkar om det nu ens skulle råka visa sig fungera.

Det finns en hel del info om inställningar för slideshow här:
http://msdn.microsof...y/ff744592.aspx

#3 MarcusW

MarcusW

  • 929 inlägg

Skriven 10 July 2012 - 17:13

Tackar och bockar. Skall testa. Hittade dock en smidig open source mjukvara för administration av presentationer med massa olika skärmar och central styrning. Så skall utvärdera denna också.