Skip to content

Instantly share code, notes, and snippets.

Daniel Streefkerk dstreefkerk

Block or report user

Report or block dstreefkerk

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@dstreefkerk
dstreefkerk / CSVGridView.bat
Created Nov 8, 2019
Batch file that enables a CSV to be dragged/dropped and then opened in a PowerShell GridView. Requires the PowerShell ISE to be instaled.
View CSVGridView.bat
@echo off
IF "%~1"=="" GOTO NOFILE
set CSVPATH=%~1
ECHO Loading CSV %CSVPATH%
powershell.exe -NoProfile -NoExit -NoLogo -Command "if ((Test-Path $env:CSVPATH -PathType Leaf) -and ($env:CSVPATH -like '*.csv')) {Import-Csv -Path $env:CSVPATH | Out-GridView -Wait -Title $env:CSVPATH};exit"
GOTO END
:NOFILE
@dstreefkerk
dstreefkerk / dfstargets.ps1
Last active Nov 7, 2019
Get a list of active DFS folder targets under a specific DFS root
View dfstargets.ps1
Get-DfsnFolder -Path \\internal.contoso.com\dfsroot\* | Get-DfsnFolderTarget | ? {$_.State -eq "Online"} | Group-Object -Property Path | ForEach-Object {$_.group[0]}
@dstreefkerk
dstreefkerk / Get-AussieGovDomains.ps1
Created Jul 9, 2019
Retrieve a list of Australian government (.gov.au) domains from the CKAN Data API at https://data.gov.au/
View Get-AussieGovDomains.ps1
<#
.DESCRIPTION
Retrieve a list of Australian government (.gov.au) domains from the CKAN Data API at https://data.gov.au/
#>
# https://data.gov.au/dataset/ds-dga-4d5301b2-bc64-4774-b437-56a408836e57/details
$dataUri = 'https://data.gov.au/data/api/3/action/datastore_search?resource_id=507f8129-b84c-4215-ae7d-5aca364e4a0e&limit=2000'
# Basic function to strip the URL down to the bare FQDN
View Invoke-QuerySpfViaCloudflareDoh.ps1
# Retrieve SPF records for a domain via Cloudflare DoH
$domain = 'example.com'
$result = Invoke-RestMethod -Uri "https://cloudflare-dns.com/dns-query?name=$domain&type=TXT" -Headers @{'accept'='application/dns-json'}
if ($result -ne $null) {
if ($result.answer -ne $null) {
$result.answer | Select-Object -ExpandProperty data | Where-Object {$_ -like '*v=spf1*'}
}
}
@dstreefkerk
dstreefkerk / Invoke-SpeechPrank.ps1
Last active May 15, 2019
Some PowerShell pranking fun. Combine with PSRemoting to confuse your co-workers. I've not used this since 2014, so I don't know if it still works.
View Invoke-SpeechPrank.ps1
Add-Type -TypeDefinition @'
using System.Runtime.InteropServices;
[Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IAudioEndpointVolume {
// f(), g(), ... are unused COM method slots. Define these if you care
int f(); int g(); int h(); int i();
int SetMasterVolumeLevelScalar(float fLevel, System.Guid pguidEventContext);
int j();
int GetMasterVolumeLevelScalar(out float pfLevel);
@dstreefkerk
dstreefkerk / Invoke-RegexReplaceTest.ps1
Created Apr 27, 2019
Some simple character replacement via Regex in PowerShell
View Invoke-RegexReplaceTest.ps1
# Regex Examples with -Replace
$testString = "ABCabc 123456_!#$%"
Write-Host "Remove all numbers in a string" -ForegroundColor Yellow
"Before: $testString"
"After: $($testString -replace '\d')"
""
Write-Host "Remove everything but numbers from a string" -ForegroundColor Yellow
"Before: $testString"
@dstreefkerk
dstreefkerk / New-ContosoUser.ps1
Created Apr 27, 2019
Generate a new AD User based upon a few specific requirements
View New-ContosoUser.ps1
# Requirements
#
# 1. Inputs - First Name, Last Name
#
# 2. SamAccountName and CN must be in firstname.lastname format
# 3. UPN must be in firstname.lastname@contoso.com format
# 4. If a user already exists with the same UPN or SamAccountName, add a number to the end or increment the existing number
function New-ContosoUser ([string]$FirstName,[string]$LastName) {
$maxUsersPerName = 100
@dstreefkerk
dstreefkerk / Get-GpoPerYear.ps1
Created Apr 1, 2019
Get a count of GPOs created per year
View Get-GpoPerYear.ps1
Import-Module GroupPolicy
$gpos = Get-GPO -All | Select-Object DisplayName,Description,CreationTime,DomainName
$gpos | Select-Object *,@{n='Year';e={$_.CreationTime | Get-Date -Format 'yyyy'}} | Group-Object -Property Year | Select-Object -Property @{n='Year';e={$_.Name}},@{n='Quantity';e={$_.Count}} | Format-Table -AutoSize
@dstreefkerk
dstreefkerk / dns_client_log.ps1
Created Mar 21, 2019 — forked from randomvariable/dns_client_log.ps1
DNS Client Logging on Windows
View dns_client_log.ps1
function Start-DNSClientLog {
$DnsOpLog = Get-WinEvent -ListLog Microsoft-Windows-DNS-Client/Operational
$DnsOpLog.IsEnabled = $true
$DnsOpLog.SaveChanges()
}
function Get-DNSClientQueries {
foreach($event in (get-winevent Microsoft-Windows-DNS-Client/Operational | % { [xml]$_.ToXml() })) {
$Query = ($event.Event.EventData.Data | Where-Object { $_.Name -eq "QueryName" }).'#text'
@dstreefkerk
dstreefkerk / Invoke-Focus.ps1
Created Mar 20, 2019
Quick little script that's kinda like a browser's "Close other tabs" function, but for Windows apps
View Invoke-Focus.ps1
# Quick little script that's kinda like a browser's "Close other tabs" function, but for Windows apps
# Drop a reference to this script into your PowerShell profile as follows:
# New-Alias -Name IFM -Value "C:\Scripts\Invoke-Focus.ps1" -Force
#
# USE AT YOUR OWN RISK
#
# Daniel Streefkerk, 2019
#
# If you want it to terminate apps without cleanly closing them, uncomment the last line
You can’t perform that action at this time.