Tôi đang viết một số quyền năng để nói chuyện với API AWS, trong một mô-đun duy nhất. Tôi đã viết một hàm, Get-CloudFormation
, trả về trạng thái của CloudFormation. Tôi đã viết một hàm khác, Delete-CloudFormation
, sau khi kích hoạt yêu cầu xóa API CF, cố gắng để bắt đầu công việc thăm dò ý kiến của CloudFormation bằng cách sử dụng Get-CloudFormation
của tôi.Làm cách nào để gọi Start-Job phụ thuộc vào chức năng trong cùng một mô-đun PowerShell như chức năng gọi là Start-Job?
Tôi gọi Export-ModuleMember
trên Get-CloudFormation
(nhưng không phải Delete-CloudFormation
; đó là chức năng riêng tư). Get-CloudFormation
được xác định trước đó trong tệp mô-đun hơn Delete-CloudFormation
.
Start-Job
cuộc gọi của tôi (bên Delete-CloudFormation
) trông giống như:
$job = Start-Job -Name "CloudFormationWaitForDeleteSuccess" -ScriptBlock {
$status = ""
$time = 0
while($status -ne "DELETE_COMPLETE") {
Write-Verbose ("Checking CloudFormation status")
$stack = Get-CloudFormation -accessKey $accessKey -secretKey $secretKey -stackName $stackName
$status = $stack.Status
Start-Sleep -seconds 10
$time += 10
}
Write-Host "CloudFormation delete-complete after $time seconds $stackName"
}
Khi Delete-CloudFormation
chạy, tôi nhận được một ngoại lệ:
The term 'Get-CloudFormation' is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the
name, or if a path was included, verify that the path is correct and try again.
+ CategoryInfo : ObjectNotFound: (Get-CloudFormation:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Tại sao? Và làm thế nào để sửa nó?
Tôi đã tìm thấy 7152090 mà tôi nghĩ là tương tự, nhưng gọi số Start-Job
với số -InitializationScript { Get-CloudFormation }
cho cùng một lỗi.
Nếu tôi gọi Start-Job với -InitializationScript { Import-Module ".\awsutils.psm1" }
thì .
là thư mục tài liệu của tiểu sử của tôi. Ngay cả khi tôi liên kết biến số với Get-Location
bên ngoài Start-Job
và gọi nó là -InitializationScript { Import-Module "$location\awsutils.psm1" }
.
Tôi đoán nếu OP muốn năng động hơn, tập lệnh chính có thể sao chép mô-đun vào thư mục mô-đun C: \ Windows ... \ Powershell để có thể sử dụng Import-Module mà không có đường dẫn đầy đủ. Nó có thể được gỡ bỏ sau ... hehe –
chắc chắn .. đó là một ý tưởng! :) –