Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[SharePoint] Auto check-in powershell script

Pagina: 1
Acties:

  • Jerry1987
  • Registratie: Maart 2010
  • Laatst online: 03-02-2022
Hallo, Sinds kort hebben wij op kantoor een koppeling gemaakt tussen CRM on-premise en SharePoint online. Nu hebben wij voor elke klant in CRM een apparte subsite gemaakt binnen een specifieke sitecollectie. Binnen deze sitecollectie hebben wij subsites aangemaakt dmv een voorgedfinieerde template welke met een workflow wordt afgetrapt waarin is opnomen dat files in en uit gecheckt moeten worden.

Nu ben ik bezig wil ik een script maken welke alle items in checkt om 23.59. (voor het geval dat mijn lieve collega's vergeten hun files in te checken)

Het onderstaande heb ik geprobeerd maar ik loop vast op een aantal lijnen.

$userName = "crmadmin@mijn domijn.nl"
$password = "mijn password"
$siteCollectionUrl = "https://tenant-admin.sharepoint.com"
$siteAdminUrl = "https://tenant.sharepoint.com/sites/crmklantdocumentatie"
$securePassword = ConvertTo-SecureString $password –AsPlainText –force
$O365Credential = New-Object System.Management.Automation.PsCredential($username, $securePassword)
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
Connect-SPOService –url $siteCollectionUrl –Credential $O365Credential

Function CheckinALLdocs([system.object]$folder)
{
$folder | foreach {

$file = $_.files #| where {$_.files -ne $null}

$file | where {$_.checkoutstatus -ne "None"} | foreach {
Write-Host “$($_.Name) is Checked out To: $($_.CheckedOutBy)”
$_.CheckIn(“Checked In By Administrator”)
Write-Host “$($_.Name) Checked In” -ForeGroundColor Green
}

If ($_.folders -ne $null) { Checkindocs $_.folders }
If ($_.subfolders -ne $null) { Checkindocs $_.subfolders }
}
}

$spsite = get-spsite "https://tenant.sharepoint.com/sites/crmklantdocumentatie"
checkinALLdocs $spsite.allwebs

alleen werkt mijn script helaas niet kan iemand mij hierbij helpen? Het gaat om omgeveer 1500 subsites.

  • Meekoh
  • Registratie: April 2005
  • Laatst online: 17-11 22:19
Wat werkt er precies niet dan?

Computer says no


  • Jerry1987
  • Registratie: Maart 2010
  • Laatst online: 03-02-2022
Ik krijg de onderstaande melding.

get-spsite : The term 'get-spsite' is not recognized as the name of a cmdlet, function, script
file, or operable program. Check the spelling of the name, or if a path was included, verify th
at the path is correct and try again.
At C:\Users\j.meyer\SharePoint\xxxxx - Documenten\Scripts\PS\Powershell script check in f
iles.ps1:27 char:11
+ $spsite = get-spsite "https://tenant.sharepoint.com/sites/crmklantdocumentat ...
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (get-spsite:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

is Checked out To:
You cannot call a method on a null-valued expression.
At C:\Users\j.meyer\SharePoint\xxxx - Documenten\Scripts\PS\Powershell script check in f
iles.ps1:18 char:2
+ $_.CheckIn(“Checked In By Administrator”)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Checked In

  • Meekoh
  • Registratie: April 2005
  • Laatst online: 17-11 22:19
Misschien Get-SPOSite gebruiken ipv Get-SPSite?
Get-SPSite is voor on-prem sharepoint.
https://technet.microsoft.com/en-us/library/fp161380.aspx

Computer says no


  • Jerry1987
  • Registratie: Maart 2010
  • Laatst online: 03-02-2022
Bedankt, die had ik er inmiddels ookal zelf uitgehaald het tweede stuk is eigenlijk meer waar ik op vast loop.

is Checked out To:
You cannot call a method on a null-valued expression.
At C:\Users\j.meyer\SharePoint\xxxx - Documenten\Scripts\PS\Powershell script check in f
iles.ps1:18 char:2
+ $_.CheckIn(“Checked In By Administrator”)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull


Regel 18 char 2 is naar mijn idee deze regel.

$_.CheckIn(“Checked In By Administrator”)

van dit stuk

{
$folder | foreach {

$file = $_.files #| where {$_.files -ne $null}

$file | where {$_.checkoutstatus -ne "None"} | foreach {
Write-Host “$($_.Name) is Checked out To: $($_.CheckedOutBy)”
$_.CheckIn(“Checked In By Administrator”)
Write-Host “$($_.Name) Checked In” -ForeGroundColor Green
}

If ($_.folders -ne $null) { Checkindocs $_.folders }
If ($_.subfolders -ne $null) { Checkindocs $_.subfolders }
}
}

  • Edd
  • Registratie: Januari 2001
  • Nu online

Edd

Probeer even als je de ForEach vervangt met een ForEach-Object of dat werkt.

ForEach is bedoeld voor gebruik met een collectie. De ForEach-Object voor in een pipeline.

-


  • Jerry1987
  • Registratie: Maart 2010
  • Laatst online: 03-02-2022
Geprobeerd hetzelfde resultaat :(

  • Meekoh
  • Registratie: April 2005
  • Laatst online: 17-11 22:19
Niet echt een sharepoint guru, maar je geeft een SPSite mee aan een functie die door folders moet loopen. Allwebs bevat denk ik geen mappen?
klopt dat wel?

[ Voor 12% gewijzigd door Meekoh op 29-06-2015 15:17 ]

Computer says no


  • Jerry1987
  • Registratie: Maart 2010
  • Laatst online: 03-02-2022
De $SPOsite is puur om mee te geven waar hij moet kijken in welke site collectie de get-sposite haalt de sitecollectie op zodat naar mijn idee checkinALLdocs $sposite.allwebs door alle subsites een kan gaan.

Als ik het mis heb hoor ik het graag. Powershell is niet mijn sterkste vak maar ik wil het wel heel graag leren :)

  • Meekoh
  • Registratie: April 2005
  • Laatst online: 17-11 22:19
Ik zou zeggen probeer het zelf eerst eens te ontleden.
Output eens naar een textfile of zo wat er nu precies in $folder of $file zit.

Computer says no


  • SirDarkAngel
  • Registratie: April 2005
  • Laatst online: 27-11 12:13
Edd schreef op maandag 29 juni 2015 @ 15:07:
Probeer even als je de ForEach vervangt met een ForEach-Object of dat werkt.

ForEach is bedoeld voor gebruik met een collectie. De ForEach-Object voor in een pipeline.
Is toch gewoon een alias, of doel je op iets anders?

code:
1
2
3
4
5
get-command foreach

CommandType     Name                            Definition
-----------     ----                            ----------
Alias           foreach                         ForEach-Object


Maar zoals hierboven staat inderdaad. Wat staat er in $folder en in $file? Lijkt erop dat 1 van deze 2 $null is.

[ Voor 7% gewijzigd door SirDarkAngel op 29-06-2015 16:05 ]

Wilde altijd al iets over computers weten


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

offtopic:
Het is beter leesbaar als je code in [ code ] ... [ / code ] tags zet. Je zou je posts daarop kunnen aanpassen :Y) Heb ik voor je gedaan vanwege de – ipv. - :P

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Edd
  • Registratie: Januari 2001
  • Nu online

Edd

SirDarkAngel schreef op maandag 29 juni 2015 @ 15:43:
[...]


Is toch gewoon een alias, of doel je op iets anders?
Excuus, je hebt gelijk. Dat was mijn eerste gedachtekronkel hierbij.
-----------------------------------------------------------------------

Ik denk dat dit niet gaat werken met deze PowerShell Add-In.
Wat ik zo lees (ben er even tussenuit geweest) zijn deze bedoeld voor het beheren van tenant/site-collections en niet de inhoud van je sites. Wat je eigenlijk wil doen.

Om dat vanuit een PowerShell script te doen kun je van het Client Side Object Model (CSOM in het kort) gebruiken. Dit is/zijn .NET Componenten die je kunt gebruiken.

Om het leven iets makkelijker te maken is dit misschien iets? https://sharepointpowershell.codeplex.com/

-


  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 09-11 16:24

dj_vibri

int(e^x) = f(u)^n

Onder welke account draait je code?
Probeer eens elevated te runnen, ik vermoed dat het probleem ligt dat de file uitgechecked is door je collega en alleen system account (dacht ik) kan deze gaan overrulen om in te checken.

*Ik vrees dan wel dat je de versie van hen kwijt bent, zou dit eens moeten opzoeken*

Toevoeging:

Probeer dit eens via de UI zelf.
http://www.mssharepointtips.com/tip.asp?id=928&page=1


Never mind, had de fout verkeerd gelezen |:(

[ Voor 20% gewijzigd door dj_vibri op 01-07-2015 13:59 ]

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


  • T0ny
  • Registratie: September 2012
  • Laatst online: 05-08 17:40
Sharepoint Online is niet gelijk aan de "gewone" Sharepoint, veel van de Powershell commandlets werken daar anders of zijn simpelweg niet aanwezig.
Check dus eerst even handmatig 1 object of de array om te checken of al je properties wel bevatten wat je verwacht.

  • Jerry1987
  • Registratie: Maart 2010
  • Laatst online: 03-02-2022
Tot zover bedankt iedereen voor jullie reacties. Ik ga deze week met CSOM aan de slag om te kijken of ik daar mijn doel mee kan bereiken.

Mochten jullie verder nog tips of trucks hebben dan hoor ik deze graag

  • Jerry1987
  • Registratie: Maart 2010
  • Laatst online: 03-02-2022
Inmiddels is het issue opgelost. Helaas was het niet mogelijk om alle items in te checken. Maar we hebben wel dmv Powershell en CSOM alle subsites kunnen wijzigen waardoor er geen in en uitchecken meer op de site is.
Pagina: 1