You can create an announcement list in a communication site using the PnP provisioning template.

Below is the xml template to create an announcement list named Announcements. You can substitute the name with the name of the announcement list you want to create.

<?xml version="1.0"?>
<pnp:Provisioning xmlns:pnp="http://schemas.dev.office.com/PnP/2020/02/ProvisioningSchema">
  <pnp:Preferences Generator="OfficeDevPnP.Core, Version=3.22.2006.2, Culture=neutral, PublicKeyToken=5e633289e95c321a" />
  <pnp:Templates ID="CONTAINER-TEMPLATE-664DBBCA69FF41438343B6AFF760D76E">
    <pnp:ProvisioningTemplate ID="TEMPLATE-664DBBCA69FF41438343B6AFF760D76E" Version="1" BaseSiteTemplate="STS#0" Scope="RootSite">
      <pnp:Lists>
        <pnp:ListInstance Title="Announcements" Description="" DocumentTemplate="" TemplateType="104" Url="Lists/Announcement" MinorVersionLimit="0" MaxVersionLimit="0" DraftVersionVisibility="0" TemplateFeatureID="00bfea71-d1ce-42de-9c63-a44004ce0104" EnableFolderCreation="false" DefaultDisplayFormUrl="{site}/Lists/Announcement/DispForm.aspx" DefaultEditFormUrl="{site}/Lists/Announcement/EditForm.aspx" DefaultNewFormUrl="{site}/Lists/Announcement/NewForm.aspx" ImageUrl="/_layouts/15/images/itann.png?rev=47" IrmExpire="false" IrmReject="false" IsApplicationList="false" ValidationFormula="" ValidationMessage="">
          <pnp:ContentTypeBindings>
            <pnp:ContentTypeBinding ContentTypeID="0x0104" Default="true" />
            <pnp:ContentTypeBinding ContentTypeID="0x0120" />
          </pnp:ContentTypeBindings>
          <pnp:Views>
            <View Name="{9FCC0530-3399-4828-BC1E-AD73E5FDD983}" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" Type="HTML" DisplayName="All items" Url="{site}/Lists/Announcement/AllItems.aspx" Level="1" BaseViewID="1" ContentTypeID="0x" ImageUrl="/_layouts/15/images/announce.png?rev=47">
              <Query>
                <OrderBy>
                  <FieldRef Name="Modified" Ascending="FALSE" />
                </OrderBy>
              </Query>
              <ViewFields>
                <FieldRef Name="LinkTitle" />
                <FieldRef Name="Modified" />
              </ViewFields>
              <RowLimit Paged="TRUE">30</RowLimit>
              <JSLink>clienttemplates.js</JSLink>
            </View>
          </pnp:Views>
          <pnp:FieldRefs>
            <pnp:FieldRef ID="7662cd2c-f069-4dba-9e35-082cf976e170" Name="Body" DisplayName="Body" />
            <pnp:FieldRef ID="6a09e75b-8d17-4698-94a8-371eda1af1ac" Name="Expires" DisplayName="Expires" />
          </pnp:FieldRefs>
          <pnp:Webhooks>
            <pnp:Webhook ServerNotificationUrl="https://westeurope0.pushnp.svc.ms/notifications?token=a6f76807-8efa-47cb-8912-2cbcb147f80d" ExpiresInDays="1" />
          </pnp:Webhooks>
        </pnp:ListInstance>
      </pnp:Lists>
    </pnp:ProvisioningTemplate>
  </pnp:Templates>
</pnp:Provisioning>

Save the template somewhere and run the following PowerShell script.

# using username & password
$userName = "yourusername"
$passWord = "yourpassword"
$encPassWord = Convertto-Securestring -String $passWord -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $userName, $encPassWord
Connect-PnPOnline -Url "https://tenant.sharepoint.com/sites/yoursite" -Credentials $cred
 
# When multifactor auth is in place
Connect-PnPOnline -Url "https://tenant.sharepoint.com/sites/yoursite" -UseWebLogin
 
Apply-PnPProvisioningTemplate -Path "template.xml"