我想運行下面的命令來查找用戶的用戶會話 ID 并列印它,命令如下:
$uid = Get-RDUserSession | Where-Object -filter {$_.UserName -eq 'pedro.vieira'} | select -ExpandProperty UnifiedSessionID; $uid
如果我以管理員身份打開 powershell,完全按預期運行,但如果我在沒有管理員權限的情況下打開 powershell,我會收到一條錯誤訊息,提示我應該處于提升模式,這是預料之中的。
但是,出于特定的動機,我確實希望這種情況發生,所以我嘗試使用相同的命令,但在其前面加上前綴Start-Process -Wait -PassThru -Verb RunAs powershell,如下所示:
Start-Process -Wait -PassThru -Verb RunAs powershell "$uid = Get-RDUserSession | Where-Object -filter {$_.UserName -eq 'pedro.vieira'} | select -ExpandProperty UnifiedSessionID; $uid; Start-Sleep -Seconds 5"
但是我收到一條錯誤訊息:
=: The term '=' is not recognized as the name of a cmdlet, function, script file, or operable program
我試過在變數賦值之前轉義美元符號,但后來我收到一條錯誤訊息,指出現在該\字符是無法識別的字符。
當我嘗試一個沒有變數的更簡單的命令時,就像下面的命令一樣完美地作業:
Start-Process -Wait -PassThru -Verb RunAs powershell "Get-RDUserSession"
我究竟做錯了什么?
uj5u.com熱心網友回復:
您可以使用Write-Outputwith-OutVariable將用戶名獲取到字串變數。嘗試類似的東西:
Start-Process -Wait -PassThru -Verb RunAs powershell 'Write-Output pedro.vieira -OutVariable user; $uid = Get-RDUserSession | Where-Object -filter {$_.UserName -eq $user} | select -ExpandProperty UnifiedSessionID; $uid; Start-Sleep -Seconds 5'"
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/536255.html
