次のサンプル スクリプトをカスタマイズおよび使用して、デスクトップ プールにないマシンを接続サーバの LDAP データベースから削除できます。

これは PowerShell スクリプトであり、インストールのために PowerCLI は必要ありません。スクリプトを実行するには、View 接続サーバに管理者としてログインして、スクリプトと入力ファイルを作成し、PowerShell ウィンドウからスクリプトを実行します。入力ファイルに記述されているマシンがデスクトップ プールにある場合、このスクリプトはメッセージを表示し、LDAP データベースからマシンを削除しません。

注: : スクリプトの実行によって生じた変更を元に戻すことが求められることがあるため、スクリプトを実行する前に、接続サーバの仮想マシンのスナップショットを取得します。

改ページせずにスクリプトの内容をコピーして貼り付けるには、このトピックの HTML 版を使用します。HTML 版は https://www.vmware.com/support/pubs/view_pubs.html にある Horizon 7 のドキュメントのページから入手できます。

スクリプト入力

入力ファイルのタイプは、csv であり、削除するマシンの名前が含まれます。次の例は、入力ファイルに含まれる可能性がある情報を示しています。

MachineName
linux-001
linux-002
linux-003

サンプル スクリプトでは、入力ファイルの名前が DeleteMachineItems.csv であり、このファイルがスクリプトと同じフォルダに配置されていることを前提としています。

スクリプトのコンテンツ

<#
bulk Delete registered machine items from broker LDAP database.
#>

$csvFile = '.\DeleteMachineItems.csv'

#check if file exists
if (!(Test-Path $csvFile))
{
	write-host  -ForeGroundColor Red "CSV File $CSVFile not found"
	exit
}

function IsNameInCsv($name)
{
    $csvData = Import-CSV $csvFile;
    foreach ($line in $csvData)
    {
        if($line.MachineName -eq $name)
        {
            Write-Host "$name exists in csv"
            return $true;
        }
    }
    Write-Host "$name does not exists in csv"
    return $false;
}

$obj = [adsi]'LDAP://localhost:389/OU=Servers,DC=vdi,DC=vmware,DC=int';
foreach ($child in $obj.psbase.Children)
{
  $machineName = $child.get("pae-DisplayName"); 
  if(IsNameInCsv($machineName))
  {
      $machineAttributes = $child  | get-member;
      $machineAttributes = $machineAttributes -join ' ';
      if ($machineAttributes -like "*pae-MemberDNOf*")
      {
          $desktopPool = $child.get("pae-MemberDNOf");
          Write-Host "Skip $machineName, which is included by desktop pool $desktopPool";
      }
      else
      {
          Write-Host "Delete $machineName, which is in csv file and not included by any desktop pool";
          $child.distinguishedName;
          $child.DeleteObject(0);
      }  
      
  }
  else
  {
      Write-Host "Skip $machineName, which is not in csv file";  
  }
  Write-Host '--------------------------------------';
}