Skip to content

Instantly share code, notes, and snippets.

View SQLtattoo's full-sized avatar

Vassilis Ioannidis - MTT [MSFT] SQLtattoo

View GitHub Profile
@SQLtattoo
SQLtattoo / nuke-a-module.ps1
Last active April 28, 2020 14:09
Remove all versions of a PowerShell module
# Make sure you understand that by running code it REMOVES ALL
# the versions of the specific module in this example of the
# module Az. No error handling.
# TAKE EXTRA CAUTION IF RUNNING ON PRODUCTION ENVIRONMENT!
$versions = Get-InstalledModule Az.* | Select-Object -Property Name,Version
$countmods = Get-InstalledModule Az.* | Measure-Object
Write-Host "Modules found: " $versions
@SQLtattoo
SQLtattoo / get-vm-status-from-all-rgs.ps1
Created April 29, 2020 10:48
Get all VM status from all Resource Groups
function Get-AzureVMStatus
{
$RGs = Get-AzResourceGroup
foreach($RG in $RGs)
{
$VMs = Get-AzVM -ResourceGroupName $RG.ResourceGroupName
foreach($VM in $VMs)
{
$VMDetail = Get-AzVM -ResourceGroupName $RG.ResourceGroupName -Name $VM.Name -Status
$RGN = $VMDetail.ResourceGroupName
@SQLtattoo
SQLtattoo / get-NIC-private-ips.ps1
Created April 30, 2020 06:59
Get the private IPs of all network interfaces in an Azure resource group
Get-AzNetworkInterface -ResourceGroupName your-resoure-group-name-here `
| ForEach { `
$Interface = $_.Name; $IPs = $_ `
| Get-AzNetworkInterfaceIpConfig `
| Select PrivateIPAddress; Write-Host $Interface $IPs.PrivateIPAddress `
}
@SQLtattoo
SQLtattoo / Start-Stop-Restart-NAV-NST-instances.ps1
Last active May 5, 2020 14:39
Manage NAV Application Server instances service state
function StartStopNSTs($action)
{
Import-Module "${env:ProgramFiles(x86)}\Microsoft Dynamics NAV\100\RoleTailored Client\Microsoft.Dynamics.Nav.Model.Tools.psd1" -WarningAction SilentlyContinue | out-null
Import-Module "$env:ProgramFiles\Microsoft Dynamics NAV\100\Service\NavAdminTool.ps1" -WarningAction SilentlyContinue | Out-Null
Import-Module "${env:ProgramFiles(x86)}\Microsoft Dynamics NAV\100\RoleTailored Client\Microsoft.Dynamics.Nav.Apps.Tools.psd1" -WarningAction SilentlyContinue | Out-Null
$NSTs = Get-NAVServerInstance | Where-Object -Property 'State' -eq 'Running'
@SQLtattoo
SQLtattoo / assign application security group to vms.ps1
Last active June 15, 2020 12:07
Assign Application Security Group to Azure VMs
# The "asg-appservers" Application Security Group must exist
#Get all the VMs that their name start with APPSRV-
$VMs = Get-AzVM | where Name -Like "APPSRV-*"
foreach ($VM in $VMs) {
$nic = Get-AzNetworkInterface -ResourceId $VM.NetworkProfile.NetworkInterfaces.id
$Asg = Get-AzApplicationSecurityGroup -Name "asg-appservers"
Write-Host Adding ASG: $Asg.Name to $VM.Name
$nic.IpConfigurations[0].ApplicationSecurityGroups = $Asg
@SQLtattoo
SQLtattoo / assign network security group to vms.ps1
Created May 6, 2020 09:17
Assign Network Security Group to Azure VMs
# The "nsg-nointernet" Network Security Group must exist
$VMs = Get-AzVM | where Name -Like "APPSRV-*"
foreach ($VM in $VMs) {
$nic = Get-AzNetworkInterface -ResourceId $VM.NetworkProfile.NetworkInterfaces.id
$Nsg = Get-AzNetworkSecurityGroup -Name "nsg-nointernet"
Write-Output "Adding NSG: $Nsg to $VM"
$nic.NetworkSecurityGroup = $Nsg
$nic | Set-AzNetworkInterface
@SQLtattoo
SQLtattoo / Disable-Multiple-WSvcs.ps1
Last active May 8, 2020 14:53
Disabling multiple Windows services
# this populates a variable with all Windows Services starting with 'Microsoft Dynamics'
$svcs = Get-Service | where DisplayName -Like "Microsoft Dynamics*"
foreach($svc in $svcs)
{
Write-Host "Disabling service $($svc.Name)"
Set-Service -ServiceName $svc.Name -StartupType Disabled
}
# !!! Make sure you don't delete unintentionally disks you might need
# Set deleteUnattachedDisks=1 if you want to delete unattached Managed Disks
# Set deleteUnattachedDisks=0 if you want to see the Id of the unattached Managed Disks
$deleteUnattachedDisks=0
$managedDisks = Get-AzDisk
$k=0
$l=0
foreach ($md in $managedDisks) {
# ManagedBy property stores the Id of the VM to which Managed Disk is attached to
# If ManagedBy property is $null then it means that the Managed Disk is not attached to a VM
@SQLtattoo
SQLtattoo / get-nics-nsg-asgs.ps1
Created June 12, 2020 10:09
Get a list of Network Interface Cards attached on NSGs and ASGs
Get-AzNetworkInterface | Select Name, ResourceGroupName,`
@{Name="NSG";Expression = {$_.NetworkSecurityGroup.Id.tostring().substring($_.NetworkSecurityGroup.Id.tostring().lastindexof('/')+1)}},`
@{Name="ASG";Expression={$_.IpConfigurations.ApplicationSecurityGroups.Id.tostring().substring($_.IpConfigurations.ApplicationSecurityGroups.Id.tostring().lastindexof('/')+1)}}
# optional if you want to add the below line for exporting to file
# | Export-Csv "nsg and asg info.csv" -Delimiter ","
@SQLtattoo
SQLtattoo / add-azure-load-balancer-rule.ps1
Last active June 26, 2020 06:26
Add a TCP rule to an existing Azure Load Balancer
#Make sure we are on the correct Azure Subscription
Get-AzContext
$lbName = "your-lb-name-here"
$rgName = "your-resource-group-name"
$probName = "the-lb-probe-name"
$bepName = "backend-pool" ### the backend pool that has the VMs
$port = 10000 ### the port to load balance on the backend pool servers
$ruleName = "rule-name" ###the name of the new rule