簡體   English   中英

Powershell v4腳本無法作為exe觸發(通過PS2EXE)以重置會話

[英]Powershell v4 script doesn't fire as exe (via PS2EXE) to reset sessions

我正在嘗試編寫一個簡單的腳本,以允許工作人員在不是本地管理員的計算機上重置Citrix會話。 以下內容非常適合作為.ps1。 但是當使用PS2EXE轉換為.exe並運行時,它不會重置會話。

使用.exe的想法是,我可以模糊運行命令所需的服務帳戶的密碼(這是Citrix服務器上的本地管理員)。 是的,我知道這種風險,可以從.exe中輕松提取.ps1。 我敢肯定我們可以在GP中做到這一點,但我想使用這種方法。

那么,為什么下面的內容不能以.exe運行時重置會話? (我曾嘗試對服務器和會話的值進行硬編碼,所以我認為這可能是憑據問題,而不是變量或ScriptBlock問題。)

$strScriptUser = "DOMAIN/svcacct"
$strPass = "password"
$PSS = ConvertTo-SecureString $strPass -AsPlainText -Force
$cred = new-object system.management.automation.PSCredential
$strScriptUser,$PSS
$server = Read-Host 'Which Citrix server?'
$sid = Read-Host 'What session number to reset? (be very careful!)'
Start-Job -ScriptBlock {
reset session $using:sid /server $using:server > /temp2/result.txt
} -Credential $cred 

多虧了對原始問題的評論,我才能夠開始工作。 我認為問題在於它在重置還有時間完成之前就過早退出了。 使用Start-JobWait-Job似乎可以解決這個問題。

這是最終的工作版本。 我添加了一個會話列表和一些導航。我敢肯定還有更優雅的方法,但這對我來說是可行的。 讓我知道是否有任何罪過太大以致無法忽視。

$strPass = "password"
$PSS = ConvertTo-SecureString $strPass -AsPlainText -Force
$credential = new-object -typename System.Management.Automation.PSCredential `
-argumentlist "domain\svcacct",$PSS
$sid=0
Write-Host "***Session Destroyer(!) v1***"
while ($sid -eq "0" -Or $sid -eq "n" -Or $sid -eq "N") {
$server = Read-Host 'Which Citrix server? (or q to quit)'
if ($server -eq "q" -Or $server -eq "Q") {exit}
query session /server $server
$sid = Read-Host 'What session number to reset? Be very careful! `
(or q quits, n for new server)'
if ($sid -eq "q" -Or $sid -eq "Q") {exit}
 }
    $job = Start-Job -credential $credential –scriptblock {
    reset session $using:sid /server $using:server
 }
Wait-Job $job
Write-Host "Done. Check below to make sure."
query session /server $server
pause

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM