Tags

Howto (51) Free Software (35) Powershell (33) Windows Server (23) AD (16) Hyper-V (16) Exchange (13) Office (13) Group Policy (10) Windows Server 2012 (9) Scripts (7) Symantec BE (5) Windows 8 (5) Cisco (4) TMG (4) Terminal Server (4) Cluster (3) HP (3) RDS (3) UAG (3) Citrix (2) DC (2) DNS (2) IE10 (2) OpenID (2) PKI (2) SCVMM (2) Windows Live (2) iLO (2) Backup (1) DPM (1) Fileserver (1) IE (1) SQL; DPM (1) Security (1) Sharepoint (1) Switch (1) VMWare (1) Veeam (1)

maandag 28 oktober 2013

SCVMM 2012 Error 12711

Na het afbreken van een backup in DPM ging een VM onderuit, deze VM startte daarna niet meer op, zie onderstaande foutmelding:
 
Error (12711)
VMM cannot complete the WMI operation on the server (hv01.domain.local) because of an error: [MSCluster_Resource.Name="SCVMM Naam-VM"]
The requested operation can not be completed because a resource has locked status.
 
The requested operation can not be completed because a resource has locked status (0x1748)
 
Recommended Action
Resolve the issue and then try the operation again.
 
 
 
Oplossing:
 
 
Get-ClusterResource -Cluster clusternaam | where {$_.Name -like 'SCVMM *' -and $_.ResourceType -like '*Configuration'} | Update-ClusterVirtualMachineConfiguration
 
 
Daarna de VM een refresh gegeven in SCVMM en gestart.
 
 

Powershell XML input

 
 
Lees de xml in en plaats het in een variabele:
 
$xml = [xml](Get-Content .\r_and_j.xml)
$xml.PLAY
$xml.PLAY.ACT
 
 
 
$xml.PLAY.ACT.SCENE.SPEECH | group speaker | sort count
 
 
 

Powershell cmdlet function Begin-Process-End

BEGIN: Setting up code necessary to do your processing (pre-processing)
PROCESS: Does the processing
END: Cleaning up code (post-processing)
 
De code in PROCESS wordt altijd minimaal 1x uitgevoerd, dus plaats hier altijd je code in ook al gebruik je de pipeline input niet. Mocht je later toch pipeline input wensen dan staat de code iig op de juiste plaats.
 
Voorbeeld:
Het kan voorkomen dat je eerst een verbinding moet maken met een SQL database alvorens je de input gaat processen.
Nadat alles geprocessed is kan er opgeruimd worden.
 
 
Voorbeeld 1:
 
 
 
Voorbeeld 2:
 
 
Zie ook:
 
 
 

Achterhalen of een bestand is gedownload of zelf is gemaakt

Als je een bestand met Internet Explorer download, slaat deze zone informatie op  in een ADS (Alternate Data Stream).
 
Voorheen kon je ADS alleen bekijken met speciale tooltjes, vanaf Windows 8 / 2012 is dat ook mogelijk met Powershell.
 
Hieronder zie je dat in de map c:\test een viertal bestanden staan, twee daarvan zijn gedownload en twee ervan zijn zelf gemaakt. Met dit of get-item kun je niet zien welke gedownload zijn en welke niet. Dat komt omdat deze informatie in een ADS zit opgeslagen.
 
Je kunt met het volgende commando achterhalen welke bestanden gedownload zijn:
 
Get-Item -Path * -Stream *  | where {$_.Stream -eq "Zone.Identifier"} | ft filename,stream,length -a
 
Je kunt daarna achterhalen met welk ZoneId het bestand is gedownload:
 
Get-Content -Path .\download1.zip -Stream Zone.Identifier
 
Hieronder kun je zien dat ZoneId =3 betekent dat het bestand van Internet afkomstig is:
 
Value Setting
------------------------------
0     My Computer
1     Local Intranet Zone
2     Trusted sites Zone
3     Internet Zone
4     Restricted Sites Zone
 
Het is overigens mogelijk om bestanden in een ADS te zetten van een ander bestand.
Hieronder zie je dat ik het programma notepad.exe in de ADS van bestand lokaalgemaakt1.txt plaats:
 
 
Met powershell kun je de stream bekijken:
 
Get-Item -Path * -Stream *  | ft filename,stream,length -a
 
 
Waarbij het vroeger mogelijk was om met commando “start bestandsnaam:adsbestand” het programma te openen is dat in Windows 8 iig niet meer mogelijk:
 
 
Je kunt de ADS weghalen door onderstaande commando’s uit te voeren:
 
C:\Test>type lokaalgemaakt1.txt > lokaalgemaakt1.bak
C:\Test>del lokaalgemaakt1.txt
C:\Test>ren lokaalgemaakt1.bak lokaalgemaakt1.txt
 
Als je daarna weer in PS naar de streams bekijkt zie je dat deze verdwenen is:
 
Get-Item -Path * -Stream *  | ft filename,stream,length -a
 

maandag 21 oktober 2013

Powershell snapshot van processen / services op server en deze vergelijken met de huidige processen

Het kan handig zijn om een overzicht te hebben van de processen op je servers en deze zo nu en dan te vergelijken met de huidige draaiende processen.
Dit om afwijkingen (bijvoorbeeld Malware) te kunnen constateren.
 
Maak een baseline / snapshot / referenceobject van de draaiende processen:
 
Get-Process | Export-Clixml -Path .\ro-processes.xml
 
Vergelijk deze vervolgens met de huidig draaiende processen:
 
Compare-Object -ReferenceObject (Import-Clixml .\ro-processes.xml) -DifferenceObject (Get-Process) -Property name
 
 
 
De SideIndicator geeft met het pijltje aan of er een  process is bijgekomen of afgegaan.
 
Je kunt dit natuurlijk ook doen met services en dit schedulen zodat eventuele wijzigingen per mail oid binnen komen.
 

Check Powershell Version

Je kunt op een paar manieren erachter komen welke Powershell versie je hebt draaien.
 
Via Registry:
 
HKLM\SOFTWARE\Microsoft\Powershell\3\PowershellEngine
 
Via Powershell:
 
Get-Host
 
Of nog beter gebruik de built-in variable:
 
$PSVersionTable
 
 

Remote Powershell informatie

Remote Powershell kun je gebruiken door op de target-computer het commando: “Enable-PSRemoting –Force” te gebruiken.
Hiermee wordt WinRM geconfigureerd en er worden tevens firewall uitzonderingen gemaakt.
 
De listeners van WinRM staan standaard open op alle interfaces/ip adressen en luisteren naar 5985 (http) en 5986 (https).
 
Zie ook:
 
 
Voer: “winrm help config” uit om meer informatie betreft het configureren van WinRM.
 
Hierin staat oa:
 
Voorbeeld: een bepaalde listener uitschakelen
  winrm set winrm/config/listener?Address=IP:1.2.3.4+Transport=HTTP @{Enabled="false"}
 
en ook (geruststellend) :
 
Opmerking: bij HTTP-verkeer zijn standaard alleen berichten toegestaan die zijn versleuteld met de SSP Negotiate of Kerberos
 
Door onderstaande commando's uit te voeren kun je ervoor zorgen dat Powershell Remoting de poorten 80 (HTTP) en 443 (HTTPS) gebruikt:
 
Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value true
Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpsListener -Value true
 
Je kunt powershell zo instellen dat deze een andere gewenste poort gebruikt:
 
Set-Item wsman:\localhost\listener\listener*\port –value <Port>
 
In de code moet je dan opgeven dat je over de ingestelde poort wilt verbinden:
 
New-PSSession –ComputerName <Netbios> -Port <Port>
Enter-PSSession –ComputerName <Netbios> -Port <Port>
Invoke-Command –ComputerName <Netbios> -Port <Port>
 
 
TrustedHosts toevoegen aan WinRM omdat de computer niet lid is van het(zelfde) domein:
 
 
Voer onderstaand commando uit:
 
winrm s winrm/config/client '@{TrustedHosts="RemoteComputer"}'
 
 
 
Wil je dat Powershell alleen over HTTPS communiceert, dan vindt je hier meer informatie:
 
Configuring WINRM for HTTPS: http://support.microsoft.com/kb/2019527
 
Handig is het natuurlijk wel als je centraal kunt regelen dat je naar alle servers een Remote Powershell sessie kunt opstarten: Hier een blog over hoe je Remote PS enabled via een GPO:
 
 
 

Powershell Remarks Get-Help cannot find the Help files for this cmdlet on this computer

Als eerste moet je vanaf de plek waar je met Powershell aan de gang gaat eerst even de help updaten met de laatste versie:
(de helpfiles nemen redelijk wat ruimte in beslag, voer deze actie daarom niet uit op servers waar je de help niet nodig hebt)

PS C:\>Update-Help -Force
 
Nadat de help was bijgewerkt wilde ik de detailed help bekijken van de get-service cmdlet:
 
 
Het viel mij op dat er bij de parameters geen uitleg wordt gegeven betreft de parameter in kwestie.
 
Onderin bij Remarks staat dan ook de regel:
 
“Get-Help cannot find the Help files for this cmdlet on this computer. It is displaying only partial help.”
 
Het blijkt dat de oorzaak mijn nederlands talige Windows 8 computer is.
 
Door de –UICulture en-US mee te geven krijg ik wel alle detailed help te zien:
 
PS C:\> Update-Help -Module * -UICulture en-US –Force
 
 

Beheer Windows 2003 server met Powershell

Je kunt op een Windows 2003 server powershell v2 installeren, dmv de volgende download:
 
Windows Management Framework Core package (Windows PowerShell 2.0 and WinRM 2.0):
 
 
De services: Windows Management Instrumentation en Windows Remote Management moeten gestart zijn:
 
 
Vervolgens moet je remote sessions toestaan door in Powershell het commando: “Enable-PSRemoting” uit te voeren:
 
 
Nu kun je vanaf een andere computer een remote sessie opstarten met de Windows 2003 server:
 
Vanaf een andere computer kun je het Powershell commando: Enter-psSession MachineName uitvoeren.
 
Alle commando’s die je nu uitvoert zullen uitgevoerd worden op de Windows 2003 server waar je verbinding mee hebt gemaakt.
 
Om de sessie af te sluiten: Exit-psSession
 
 
 
 
Het is niet mogelijk om op een Windows 2003 Domain Controller, Active Directory met powershell te beheren.
Wel is het mogelijk om deze Active Directory te beheren met een Windows 7 (of Windows 2008 R2 Server) systeem.
 
Daarvoor moet je op de Windows 2003 Domain Controller de “Active Directory Management Gateway Service” installeren, deze is te downloaden: http://www.microsoft.com/en-us/download/details.aspx?id=2852
 
Deze download heeft een drietal prerequisites:
 
1. .NET Framework 3.5 SP1 moet geinstalleerd zijn
2. A hotfix rollup package for Active Directory Web Service is available for the .NET Framework 3.5 SP1: http://support.microsoft.com/kb/969166
3. Windows 7 clients cannot locate the Active Directory Management Gateway service that is installed on Windows Server 2003-based domain controllers: http://support.microsoft.com/kb/969429
 
 
 
 
 

Zoek een bestand met een bepaalde tekst mbv Powershell

Je kunt met Powershell een bestand zoeken welke een bepaald stuk tekst bevat:
 
get-childitem c:\users\ -filter *.txt -recurse | select-string -list -pattern "iets van tekst" | foreach {$_.Path}

maandag 14 oktober 2013

Outlook melding: "Deze bewerking is geannuleerd vanwege systeembeperkingen" bij aanklikken van een link

In Outlook 2010 kreeg ik de elke keer bij het aanklikken van een link, de melding:  “Deze bewerking is geannuleerd vanwege systeembeperkingen”.
 
Zie:
 
 
Tevens gaf Internet Explorer bij het opstarten de melding of deze als standaard ingesteld moest worden.
 
Het instellen van IE als standaardbrowser in IE zelf loste het probleem niet op.
 
 
Ook het uitvoeren van de fix op onderstaand blog, loste het probleem niet op:
 
 
De oplossing was eigenlijk nog eenvoudiger.
In het configuratiescherm onder standaardprogramma’s bij “Programmatoegang en standaardprogramma’s instellen” moet je Internet Explorer als standaardwebbrowser instellen:
 
 
 

DNS registration and Netbios Disablen on Windows Core

 
 
 
 
 
 
 
wmic nicconfig get caption,index,TcpipNetbiosoptions
 
wmic nicconfig where index=28 call SetTcpipNetbios 2
 
 
 
 
 

Manage Failover Cluster when cluster has been build with SCVMM

Je kunt het cluster beheren door de “Remote Server Administration Tools” te installeren:
 
 
 
 
 
 

Convert jpg / png to ico with paint

Je kunt met MS Paint jpg, png of andere bestandsformaten omzetten naar ico formaat.
 
Resize het betreffende plaatje in paint naar 16 x 16 pixels en sla deze op als 24-bit bmp bestand.
 
Deze bmp kun je vervolgens hernoemen naar ico.