用户数据 Powershell 脚本未填充变量

用户数据 Powershell 脚本未填充变量

我编写了一个 Powershell 脚本来初始化、格式化、为连接到 Windows 2019 EC2 实例的多个 EBS 卷分配驱动器号等。

<powershell>

New-Item C:\windows_initialization.log -type file -force
    $log = "C:\windows_initialization.log"


Add-Content $log "Downloading aws cli"
Write-Output "Installing AWS Command Line Interface tools"
msiexec.exe /i "https://awscli.amazonaws.com/AWSCLIV2.msi"
Start-Sleep -s 60
$env:Path +=";C:\Program Files\Amazon\awscliv2"


$profile_drive = aws ec2 describe-volumes --filters Name=attachment.device,Values="xvdf" Name=attachment.instance-id,Values=$(Invoke-WebRequest -Uri "http://169.254.169.254/latest/meta-data/instance-id" -usebasicparsing) --output text --query 'Volumes[*].[VolumeId]'
Start-Sleep -s 5
Get-Disk | where SerialNumber -match "$profile_drive".Trim("vol-") | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -DriveLetter D -UseMaximumSize | Format-Volume -Filesystem NTFS -Confirm:$false
Set-Volume -DriveLetter D -NewFileSystemLabel "Profiles"

$data_drive = aws ec2 describe-volumes --filters Name=attachment.device,Values="xvdg" Name=attachment.instance-id,Values=$(Invoke-WebRequest -Uri "http://169.254.169.254/latest/meta-data/instance-id" -usebasicparsing) --output text --query 'Volumes[*].[VolumeId]'
Start-Sleep -s 5
Get-Disk | where SerialNumber -match "$data_drive".Trim("vol-") | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -DriveLetter E -UseMaximumSize | Format-Volume -Filesystem NTFS -Confirm:$false
Set-Volume -DriveLetter E -NewFileSystemLabel "Data"

</powershell>
<persist>true</persist>

我以为它工作正常,直到我使用 SSM 连接到我的实例。由于变量未填充,驱动器初始化不起作用。我显然错过了一些东西,但我一时想不出是什么,需要帮助。

当连接到实例时,我可以$profile_drive手动运行该命令,它会创建一个变量并用所需的volume_id填充它。

有任何想法吗?

答案1

我实际上重新审视了这一点,并使用了 Powershell 命令 New-Variable -Name profile_drive -Value (aws ec2 describe-volumes --filters Name=attachment.device,Values="xvdf" Name=attachment.instance-id,Values=$(Invoke-WebRequest -Uri "http://169.254.169.254/latest/meta-data/instance-id" -usebasicparsing) --output text --query 'Volumes[*].[VolumeId]')

相关内容