MessageBox 函数将字符串添加到 Return 值
MessageBox Function Prepending String to Return Value
我有以下函数,它检索当前用户的 SID,将其显示在 MessageBox
中,然后 returns SID 值:
function Get-UserSid {
$objUser = New-Object System.Security.Principal.NTAccount($username)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
MsgBox $strSID.Value
$strSID.Value
}
起初这似乎工作正常,但如果我从其他地方调用此函数,例如:
function SecondFunction {
$usersid = Get-UserSid
MsgBox $usersid
}
SID 突然在其前面添加了 "OK":
有谁知道为什么会这样?我假设它与 MessageBox
中的 "OK" 按钮被复制到 return 值有关 - 但为什么要这样做?
MsgBox 函数:
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
function MsgBox {
param (
[string]$message
)
[System.Windows.Forms.MessageBox]::Show($message)
}
您的 MsgBox 函数正在将 [System.Windows.Forms.MessageBox]::Show($message)
命令的结果放入管道。
您可以将其分配给变量并忽略它
function Get-UserSid {
$objUser = New-Object System.Security.Principal.NTAccount($username)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
#Ignore this...
$ignore = MsgBox $strSID.Value
#return the SID
$strSID.Value
}
或通过管道传送到 Out-Null
function Get-UserSid {
$objUser = New-Object System.Security.Principal.NTAccount($username)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
#Ignore this...
MsgBox $strSID.Value | Out-Null
#return the SID
$strSID.Value
}
我有以下函数,它检索当前用户的 SID,将其显示在 MessageBox
中,然后 returns SID 值:
function Get-UserSid {
$objUser = New-Object System.Security.Principal.NTAccount($username)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
MsgBox $strSID.Value
$strSID.Value
}
起初这似乎工作正常,但如果我从其他地方调用此函数,例如:
function SecondFunction {
$usersid = Get-UserSid
MsgBox $usersid
}
SID 突然在其前面添加了 "OK":
有谁知道为什么会这样?我假设它与 MessageBox
中的 "OK" 按钮被复制到 return 值有关 - 但为什么要这样做?
MsgBox 函数:
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
function MsgBox {
param (
[string]$message
)
[System.Windows.Forms.MessageBox]::Show($message)
}
您的 MsgBox 函数正在将 [System.Windows.Forms.MessageBox]::Show($message)
命令的结果放入管道。
您可以将其分配给变量并忽略它
function Get-UserSid {
$objUser = New-Object System.Security.Principal.NTAccount($username)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
#Ignore this...
$ignore = MsgBox $strSID.Value
#return the SID
$strSID.Value
}
或通过管道传送到 Out-Null
function Get-UserSid {
$objUser = New-Object System.Security.Principal.NTAccount($username)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
#Ignore this...
MsgBox $strSID.Value | Out-Null
#return the SID
$strSID.Value
}