簡體   English   中英

在 EC2 上的 Windows Server 2022 上使用 Powershell >= 7.0 運行 UserData

[英]Running UserData with Powershell >= 7.0 on Windows Server 2022 on EC2

默認情況下,UserData 將在啟動的 AWS EC2 實例上的 Windows Server 2022 AMI 上使用 Powershell V5.1 運行。 但是,我想使用一些僅在 Powershell 版本 7 及更高版本中受支持的 cmdlet。

使用 UserData 啟動實例時,我如何才能最好地使用 Powershell 7+ 運行腳本?

我目前有一個安裝 powershell 7 的腳本,但從那時起我不確定如何使用 v7 來運行我擁有的命令 rest。

Invoke-WebRequest -Uri https://github.com/PowerShell/PowerShell/releases/download/v7.3.1/PowerShell-7.3.1-win-x64.msi -OutFile PowerShell.msi
Start-Process msiexec.exe -ArgumentList '/i PowerShell.msi /quiet' -Wait

我正在使用 WINDOWS_SERVER_2022_ENGLISH_FULL_BASE AMI。

我試過使用類似Invoke-Expression東西,也試過讓腳本用一些條件遞歸地調用自己,例如

# First Run with ps 5.1
if ($PSVersionTable.PSVersion -lt [Version]"7.0") {
    Invoke-WebRequest -Uri https://github.com/PowerShell/PowerShell/releases/download/v7.3.1/PowerShell-7.3.1-win-x64.msi -OutFile PowerShell.msi
    Start-Process msiexec.exe -ArgumentList '/i PowerShell.msi /quiet' -Wait
    cd "C:\Program Files\PowerShell\7"
    # Run this same script with ps7
    ./pwsh $PSCommandPath
    exit
}

# 
if ($PSVersionTable.PSVersion -gt [Version]"7.0") {
    # Do the things I need to do with ps7...
}

我的兩次嘗試都默默地失敗了,並且使用 ec2 userdata 很難獲得有關原因的信息。

最終奏效的方法是使用 2 個不同的腳本。 第一個腳本安裝 PS7,然后從 S3 下載第二個腳本並使用 PS7 執行。

使用 PS5 執行的用戶數據:

#init.ps1
<powershell>
Invoke-WebRequest -Uri https://github.com/PowerShell/PowerShell/releases/download/v7.3.1/PowerShell-7.3.1-win-x64.msi -OutFile PowerShell.msi
Start-Process msiexec.exe -ArgumentList '/i PowerShell.msi /quiet' -Wait
cd "C:\Program Files\PowerShell\7"
mkdir (Split-Path -Path 'C:/temp/setupGateway.ps1' ) -ea 0
Read-S3Object -BucketName 'my-bucket' -key 'setupGateway.ps1' -file 'C:/temp/setupGateway.ps1' -ErrorAction Stop
& "C:\Program Files\PowerShell\7\pwsh" "C:\temp\setupGateway.ps1"
</powershell>
<persist>true</persist>

PS7腳本,單獨執行:

# setup.ps1
Write-Output $PSVersionTable
Write-Output "Hello from PS7"

要使這項工作正常進行,只需確保將setup.ps1腳本復制到 S3 位置。 這可以通過多種不同的方式實現,具體取決於您設置的 rest。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM