何が起こっているのかわかりません...
このVerifyEmailSettings
関数では、これ$AdminEmailAddress
は、使用しているpsコマンドに渡すことができる多くのパラメーターの1つです。
パラメータ名と値を以下のような他の関数に渡せるようにしたい。しかし、これを渡すと、奇妙な結果が得られます。結果からわかるよう$SettingName
に、VerifyEmailSettings
関数内で出力しようとすると、AdminEmailAddress [email protected] Verified, Same
必要なものではなくエコーAdminEmailAddress Verified, Same
が発生します... 「[email protected]が何らかの形でそこに混在$SetName
していSetEmailSettings
ます。関数内でも同じことが起こります。
前もって感謝します!!
Write-Host "Starting Script"
#Assigning Variables
$AdminEmailAddress = "[email protected]"
$SmtpServer = "exchange.local"
$FromEmailAddress = "[email protected]"
If (GetInstallStatus){
Write-Host "FSRM Installed, Skipping Install"
Write-Host "Checking Email Settings"
VerifyEmailSettings([string]"AdminEmailAddress",[string]$AdminEmailAddress)
} else {
Write-Host "FSRM Not Installed, Installing"
Install-WindowsFeature –Name FS-Resource-Manager –IncludeManagementTools
If (GetInstallStatus){
Write-Host "FSRM Installed"
} else {
Write-Host "FSRM Error on Install, Halting"
#halt here
}
}
function GetInstallStatus {
$status = (Get-WindowsFeature -Name FS-Resource-Manager | ft Installed -autosize -hidetableheaders | out-string).trim();
return $status
}
function VerifyEmailSettings([string]$SettingName, [string]$SettingData) {
$Verify = (Get-FsrmSetting | Select-Object $SettingName | FT -autosize -hidetableheaders | Out-String).Trim()
If ($Verify -eq $SettingData) {
Write-Host $SettingName "Verified, Same"
SetEmailSettings([string]$SettingName, [string]$SettingData)
} Else {
Write-Host $SettingName "Wrong, Updating"
SetEmailSettings([string]$SettingName, [string]$SettingData)
}
}
function SetEmailSettings([string]$SetName, [string]$SetData) {
$SetName
#Set-FsrmSetting $SetName $SetData
}
これが私が得る結果です:
Starting Script
FSRM Installed, Skipping Install
Checking Email Settings
AdminEmailAddress [email protected] Verified, Same
AdminEmailAddress [email protected]
VerifyEmailSettings([string]"AdminEmailAddress",[string]$AdminEmailAddress)
ここで実際に行っているのは、最初の引数として両方の値を含み、2番目の引数には何も含まない配列を渡すことです。これは次のように書く必要があります。
VerifyEmailSettings "AdminEmailAddress" $AdminEmailAddress
または
VerifyEmailSettings -SettingName "AdminEmailAddress" -SettingData $AdminEmailAddress
(文字列をとしてキャストする必要はありません[string]
)
あなたがやったことは、あなたがいるという事実によって、より一般的な作られたPowerShellで一般的なエラー、あるん.NETはオブジェクトのメソッドを呼び出すときに使用する括弧やカンマを。PowerShellを何年も使用した後でも、これを時々行っています。
Set-StrictMode -Version 2.0
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加