如何让Invoke-Sqlcmd传入简单安全字符串密码时返回Msg 40632异常?
问题现象
当使用Invoke-Sqlcmd时,若-Query参数中包含通过Read-Host -AsSecureString获取的复杂度不足的密码,操作会失败但不会返回异常;而若-Query参数中包含通过不带-AsSecureString的Read-Host获取的复杂度不足的密码,则会正常返回如下异常:
Password validation failed. The password does not meet policy requirements because it is not complex enough.
Msg 40632, Level 16, State 1, Procedure , Line 1.
正常返回异常的代码示例
输入密码01234567时会返回Msg 40632异常,输入012345A!则执行成功:
$local:password = Read-Host ("Enter the new password for {0} on {1}" -f $local:login, $local:serverDomain) $local:updatePasswordQuery = ("ALTER LOGIN {0} WITH PASSWORD = '{1}'" -f $local:login, $local:password) Invoke-Sqlcmd ` -ServerInstance ("{0}.database.windows.net" -f $local:server.name) ` -Database "master" ` -AccessToken $local:access_token ` -ErrorAction Stop ` -Query "$local:updatePasswordQuery"
静默失败的代码示例
输入密码01234567时操作静默失败,输入012345A!则执行成功:
$local:securePassword = Read-Host ("Enter the new password for {0} on {1}" -f $local:login, $local:serverDomain) ` -AsSecureString $local:updatePasswordQuery = ("ALTER LOGIN {0} WITH PASSWORD = '{1}'" -f $local:login, $local:securePassword) Invoke-Sqlcmd ` -ServerInstance ("{0}.database.windows.net" -f $local:server.name) ` -Database "master" ` -AccessToken $local:access_token ` -ErrorAction Stop ` -Query "$local:updatePasswordQuery"
疑问
如何让Invoke-Sqlcmd在传入复杂度不足的安全字符串密码时返回异常?或是因安全字符串特性无法实现?
环境信息
> $PSVersionTable Name Value ---- ----- PSVersion 7.3.0 PSEdition Core GitCommitId 7.3.0 OS Microsoft Windows 10.0.22000 Platform Win32NT PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…} PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 WSManStackVersion 3.0 Imported Modules: Az.Accounts 2.10.3 SqlServer 21.1.18256
内容的提问来源于stack exchange,提问作者Frank van Eykelen
相关产品推荐
相关产品推荐

