iT邦幫忙

0

Powershell 脚本中使用 asnp

我有一个 powershell,用于获取远程 Citrix Virtual Desktop Delivery Controller 服务器上面的一些信息;

要使用的 Citrix 的 powershell 模块,所以要加载 asnp citrix*

我如果把脚本拆分开来,一条一条地去运行,是可以正常运行的,但如果放在脚本里面运行就会报错,错误信息:

asnp : No snap-ins have been registered for Windows PowerShell version 1.

这是我的脚本:

$UserCredential = Get-Credential
$session = New-PSSession -ComputerName <Remote Server Address> -Credential $UserCredential
Enter-PSSession $session

asnp citrix*
Get-BrokerMachine | select HostedMachineName,RegistrationState,SessionState


Exit-PSSession
Remove-PSSession $session
看更多先前的討論...收起先前的討論...
zero iT邦新手 1 級 ‧ 2020-06-01 18:39:26 檢舉
腳本哪一行報錯?
as900 iT邦新手 1 級 ‧ 2020-06-02 08:41:26 檢舉
"asnp citrix*" 报错了

具体错误内容:
asnp : No snap-ins have been registered for Windows PowerShell version 1.
At C:\Users\Administrator\Desktop\Powershell\xd.ps1:5 char:1
+ asnp citrix*
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (citrix*:String) [Add-PSSnapin], PSArgumentException
+ FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand
zero iT邦新手 1 級 ‧ 2020-06-03 20:31:16 檢舉
你知道你第一行其實就出錯了嗎?

Get-Credential 是用來輸入帳戶跟密碼用的

你用腳本跑 Get-Credential 沒有給他資料它要怎麼幫你

把資料存到$UserCredential的變數去

少了帳戶資料,你要怎麼用New-PSSession 去建立Powershell的Session功能
zero iT邦新手 1 級 ‧ 2020-06-03 20:33:33 檢舉
除非你的腳本運作方式,是自己開一個終端畫面去跑腳本

不然第一行就執行失敗了,什麼資料都沒有
zero iT邦新手 1 級 ‧ 2020-06-03 20:45:01 檢舉
然後用腳本跑別用 Enter-PSSession連進去對遠端下指令,

連進去你的終端狀態就變了,後面的指令都不會執行了,

你能看到asnp的錯誤碼就代表你根本沒有建立Session成功

所以後面的asnp的指令才會執行

建立Session成功之後要用Invoke-Command去執行你的程式碼
as900 iT邦新手 1 級 ‧ 2020-06-05 07:54:05 檢舉
我试试,谢谢你!
我现在只是测试,是通过交互式的方式输入用户密码。
我脚本就是在 powershell ISE 中出的错。

尚未有邦友回答

立即登入回答