Virtualization, Cloud, Infrastructure and all that stuff in-between
My ramblings on the stuff that holds it all together
Category Archives: Uncategorized
No recent password sync error shown in Office365 portal but Directory synchronization is ok
I ran into this, my dirsync was running ok (new objects copied out from on-prem AD to AAD ok) but password changes on-prem were not going out.
Weird, wasn’t related to this post as no recent password change of the admin account used in the lab.
I can highly recommend using the built-in PowerShell diagnostics tool on your AAD Sync server – just run it by using Invoke-ADSyncDiagnostics in a PowerShell session and follow the prompts.. in my case, it discovered the the password hash sync service wasn’t running, script restarted it.
Not sure if this was some hiccup due to me recently enabling password write-back and some MFA config. but it fixed it for me.
POSH1Liner: Find files modified in the last n days and export as a formatted table with full path
Adjust the minus ( AddDays(-8) value to how many days back you want to check and run, it will output a list of files (with full path) that have a modified date later than the number you specified, handy for sorting out complex data merge issues.
$lastdate = get-date.AddDays(-8) ‘set the minus number to how many days you want to go back
Get-ChildItem -Recurse -File | Where-Object { $_.LastWriteTime -ge $lastdate } | format-table -autosize -property FullName
How to find which port a device MAC address is plugged into on a Cisco switch
I have to do this every so-often to reverse engineer the cabling in my lab (which isn’t easily accessible, well.. without some walking and moving things), and by the time I have to do it, I’ve invariably forgotten the command fro the last time and waste time googling the many variants to do so, so – parking it here for reference!
show mac address-table | include
note: MAC needs to be in aaaa.bbbb format (don’t ask me why, you can also search for partial MACs, e.g the last 2 digits)
show mac address-table | include e50d
Will give you an output like..
100 0418.d6ac.e50d DYNAMIC Fa0/44
Troubleshoot IaaS performance problems in Azure
Given in the public cloud you’ve not got much visibility of what’s going on under the hood in your IaaS VMs this is a handy tool from MSFT – instructions and downloads here
Or you can install it from the Azure portal by following these steps (You’ll need the name and key for one of your storage accounts.
If you install it via the portal you don’t have to login to the VM to enable it.
POSH1Liner:Configure all hosts in a cluster
ok, a little more than a 1-liner; but a shell loop that you can use to do *something* to all hosts in a given cluster (in this case the cluster is called L2-C2; 2nd level of virtualization, e.g. not physical which is L1, 2nd cluster if you’re interested in my naming convention)
in this case it’s adding an iSCSI software adapter and pointing it at some targets – pause is optional (assumes you’re already connected to a vCenter via connect-vihost)
# Generic shell
$cluster = get-cluster L2-C2 | get-vmhost
foreach ($hypervisor in $cluster) {
write-host Doing config for $hypervisor
#Do stuff here for each host in the cluster $hypervisor is the hostname variable
Get-VMHostStorage -VMHost $hypervisor | Set-VMHostStorage -SoftwareIScsiEnabled $True
get-vmhost -name $hypervisor | Get-VMHostHba -Type iScsi | Where {$_.Model -eq “iSCSI Software Adapter”}
Get-VMHost -name $hypervisor | Get-VMHostHba -Type iScsi | New-IScsiHbaTarget -Address “172.16.20.20”
Get-VMHost -name $hypervisor | Get-VMHostHba -Type iScsi | New-IScsiHbaTarget -Address “172.16.20.21”
get-vmhost -name $hypervisor | get-VMhostStorage -refresh -RescanAllHba -RescanVmfs
write-host “————————————————————————————-”
pause #wait for keypress
POSH1Liner: Set NTP server on all hosts attached to a vCenter
Connect-VIServer L2-mgt-vcsa01.theborg.int
Get-VMHost | Add-VMHostNtpServer -ntpserver “pool.ntp.org”
Get-VMHost | Get-VMHostFirewallException | where {$_.Name -eq “NTP client”} | Set-VMHostFirewallException -Enabled:$true
Get-VMHost | Get-VmHostService | Where-Object {$_.key -eq “ntpd”} | Start-VMHostService
Get-VMhost | Get-VmHostService | Where-Object {$_.key -eq “ntpd”} | Set-VMHostService -policy “automatic”
Original script from this blog post Modified to add -ntpserver parameter and public NTP server name incase you don’t have your own
POSH1Liner:Deploy VM from template
Populate variables
$targetdisk = Get-Datastore -name vd03*
$target = get-vmhost -name l1-mgt-slotXX.theborg.int
#Deploy VM from template
new-vm -name L2-C2-NXX -Template TPL_vESXI -vmhost $target -Datastore $targetdisk -runasync
#rinse & repeat
Posh1Liner – Add ESX Host to vCenter
#Connect to vCenter server
$vc = connect-viserver -name l2-mgt-vcsa01.theborg.int
Add-VMHost -server $vc -name L2-C1-N4.theborg.int -location theBORG -user root -Password YourPassword -force -RunAsync
#then add to cluster L2-C1
Move-VMHost L2-C1-N1.theborg.int -destination L2-C1
#Add a bunch of hosts to vCenter 1 liner
for($i=99; $i -le 102; $i++) {$runline= “L2-C2-N” + $i +”.theborg.int” ; Add-VMHost -server $vc -name $runline -location theBORG -user root -Password VMware1! -force -RunAsync}
#put hosts following a naming pattern into maintenance mode
get-vmhost -name L2-c2* | set-vmhost -state maintenance
#move ESX host called L2-C2-N$i to L2-C2 cluster
for($i=2; $i -le 8; $i++) {$runline= “l2-c2-n” + $i +”.theborg.int” ; move-VMHost $runline -server $vc -destination L2-C2}
Clicking Configure to bind with a Google Android for Work account in Azure InTune doesn’t do anything
I hit this and scratched my head for ages. I was using a Mac (so I’ve not tried this in IE or Edge, where I would expect it to work).
if i hit the configure button under “device enrolment” / “Android for Work enrolment” it does nothing in Chrome or Safari (my 2 normal browsers)
spent ages disabling plugins, Private mode etc. however, weirdly – it worked 1st time in FireFox…
So if you hit the same issue and have found this via Google – try that.
online UI and docs are moving quickly for InTune as it’s absorbed into Azure.
weird.
Password sync Warning: no recent synchronization on Office365
If you manage an Office365 tenant like I do for my lab, and are security minded you may decide to change the password of the account you configured AAD Connect to use to talk to your on-prem Active Directory. For example if maybe you were lazy and used the default domain administrator account in your lab…. tut, tut :)) you need to update AAD Connect to reflect the new password otherwise you’ll get “Password sync Warning: no recent synchronization” on your admin page and no password changes will sync to Office365.
*I* thought you did this by running the Azure AD Connect tool and re-entering the password there, refreshing the directory. nope and other error logging is a bit sparse, other than the warning in the o365 tenant admin portal.
Password sync Warning: no recent synchronization on Office365
There are some excellent PowerShell utils for debugging this stuff in Updated link (2020) this post
in my case I got an error back like the following;
AAD Tenant - MyTenant.onmicrosoft.com
Password hash synchronization cloud configuration is enabled
AD Connector – MyDomain.tld
Password hash synchronization is enabled
No password hash synchronization heartbeat is detected
Connectivity:
=============
Directory Partition – MyDomain.tld
Password synchronization agent had a problem to resolve a domain controller in the domain “MyDomain.tld” at: 07/
11/2017 16:38:19 UTC
Please make sure AD Connector account username and password are correct
Only Use Preferred Domain Controllers: False
Checking connectivity to the domain…
Domain “MyDomain.tld” is reachable
Would you like to diagnose single object issues? [y/n]: n
For more help:
+ Please see – https://go.microsoft.com/fwlink/?linkid=847231 or
+ Open a service request through Azure Portal or Office 365 Admin Portal.
Which led me to think maybe AAD Connect was still using the old password.
To actually change the password and configure more details there is another utility outside of the Azure Connect wizard called “Synchronization service” which resides under “Azure AD Connect” on your start menu, run this. select the connectors to MyDomain.tld hit properties/Connect to AD Forest and update the password for the account you use to connect to on-prem AD.
You can also use this utility to configure a preferred domain controller if you don’t want it to follow the normal DC discovery process (useful if you have a segregated environment)
Blogged for when I have to do this again and invariably forget how..