Bem, vejo que você comentou a linha que tenta fazer a aritmética real. Seu código como está agora diz "if partition starting offset = 65536 then partition is aligned"
.
Não é assim que funciona. As partições têm todos os tipos de compensações iniciais. A classe WMI retorna 2 partições no meu laptop agora, nenhuma das quais tem um deslocamento inicial de 65536.
Em segundo lugar, mesmo se você não comentou a linha acima dela, aquela em que ela divide o deslocamento inicial por 65536 e compara o restante com o tipo de dados Decimal ... não é assim que funciona. Não use o tipo decimal.
PS C:\> 1 -Is [Decimal]
False
PS C:\> 1.23 -Is [Decimal]
False
Ambos avaliam como falso. Isso não vai dizer se a divisão resultou em um remanescente ou não.
Dê um giro:
Foreach($_ In Get-WMIObject Win32_DiskPartition | Select Name, BlockSize, NumberofBlocks, StartingOffset, @{n='Alignment';e={$_.StartingOffset/$_.BlockSize}}) { $_ }
Name : Disk #0, Partition #0
BlockSize : 512
NumberofBlocks : 614400
StartingOffset : 1048576
Alignment : 2048
Name : Disk #0, Partition #1
BlockSize : 512
NumberofBlocks : 487778304
StartingOffset : 315621376
Alignment : 616448
Se Alignment
for um número inteiro, você é bom. Se é um decimal, o alinhamento está errado.
Aqui está um bom artigo sobre alinhamento de partições:
A propósito, isso não é algo com o qual você normalmente precisa se preocupar em VMs do Windows 2008+. O Windows pode manipular seu próprio alinhamento de partição. Windows 2003 e abaixo, talvez.