我很努力使今天能夠使用這個簡單的(?)函數。運行Powershell腳本,使用-list(參數)替代憑證
我有一個PowerShell腳本從基於txt的文件讀取計算機名稱。通過下面的一行從PowerShell會話中運行時,它工作正常:
./"Server Health Check.ps1" -List One-off.txt
正如你所看到的,它有一個長文件名,所以它包裹着行情。
但是,我正在構建一個PowerShell GUI窗體,其中包含一個用於調用腳本的文本文件的選項。訣竅是,腳本需要與替代管理員帳戶運行,我不清楚如何使這項工作。
對於另一個腳本我沒有使用我知道我可以使用下面的行,這使用舊的DOS「runas」,但是,它不能與-list功能一起使用。
invoke-command -scriptblock {runas.exe /user:domain\$Env:Username"admin" "powershell.exe -file \"\\Server\c$\LONG FOLDER\Server Health Check.PS1""}
因此,概括地說,如何讓一個腳本與讀取命令行參數( - 列出)備用憑據啓動?我也熱衷於保存我的目錄結構,其中包括帶空格的文件夾。該腳本的標題是:「服務器健康check.ps1」
我想的最後一件事是在下列
$ScriptPath = "C:\SCRIPTS FOLDER\Server Health Check.ps1"
$ArgList = "-List C:\SCRIPTS FOLDER\One-off.txt"
Invoke-Command -filepath $ScriptPath -Credential DragonBallDomain\$Env:UserName"Admin" -ArgumentList $ArgList
結果是以下消息:
Invoke-Command : Parameter set cannot be resolved using the specified named parameters.
我幾乎可以肯定,這可以通過invoke-command或start-process來實現,這只是獲得正確格式的問題?我可能在啓動過程或調用命令的嘗試中丟失了/或「或」。
任何幫助表示讚賞!
更新4月30日:
我已經嘗試了一些更使這項工作,我很接近,但仍然不能令人信服。
$LongScriptPath = resolve-path Script.ps1
$LongFolderPath = \\UNC\PATH TO FOLDER\WITH LONG NAME\
start-process -filepath powershell.exe -argumentlist " -file``"$($FilePath.path)`"" -cred DOMAIN\USERID -WorkingDirectory "$LongFolderPath"
添加-credential是導致錯誤的原因,該錯誤指出-file參數無效。我確信有一種方法可以做到這一點。