gpt4 book ai didi

powershell - 导入 PSSession 在脚本中失败,在 shell 中工作

转载 作者:行者123 更新时间:2023-12-04 21:08:04 24 4
gpt4 key购买 nike

我是 Powershell 脚本的新手,我正在处理用户管理 Powershell 脚本,但我遇到了一个奇怪的错误。

以下代码在我从 shell 运行时有效,但在从脚本运行时无效:

$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://servername/Powershell/ -Authentication Kerberos -Credential $UserCredential -AllowRedirection
Import-PSSession $Session

当我在带有 Param() 的脚本中运行它时在第一行阻止,它失败并出现以下错误:
Import-PSSession: Cannot bind argument to parameter 'Path' becuase it is an empty string.

我可以得到 Import-PSSession如果我删除我的 Param() 就可以工作块,但我不知道如何为我的脚本接受命令行参数。我怎样才能保留 Param()阻止(或更一般地说,接受命令行参数)并且仍然能够导入 PS session ?

我在尝试连接到 2010 Exchange 服务器的 Windows 2008 R2 服务器上使用 Powershell v2。

更新:

我有一个名为 ManageUser.ps1 的脚本我从 Powershell 提示符运行,例如
.\ManageUser.ps1 -disableUser -username someuser

脚本是这样开始的:
Param(
[switch]$disableUser,
[string]$username
)
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://servername/Powershell/ -Authentication Kerberos -Credential $UserCredential -AllowRedirection
Import-PSSession $Session
#more stuff past here...

它在 Import-PSSession 上失败了命令。但是,如果我删除整个 Param(...) , session 导入工作。我希望这足以让你理解它!

最佳答案

您的脚本可以单独运行,也可以从另一个脚本中调用:

& 'C:\Scripts\ManageUser.ps1' -disableUser -username "foo"
Get-Mailbox -resultsize 5 | ConvertTo-Csv -NoTypeInformation | Out-File C:\Scripts\mytest.csv

由于没有 -allowclobber,后续运行将收到导入错误/警告。正如@SamuelWarren 所提到的...

在您的情况下(至少在很久以前最初编写问题时)该错误是由于您在此处未提及的另一个变量造成的。您可能在第一次运行后修复了该问题,然后后续测试显示 AllowClobber 错误。

同样值得注意(对于将来遇到此问题的任何人)到 检查您正在调用的文件的路径 .仅仅因为您尝试使用相对路径 .\myfile.ps1并不意味着 PowerShell 当前正在寻找正确的目录。

检查: $psscriptroot
Split-Path -Path $($global:MyInvocation.MyCommand.Path)

关于powershell - 导入 PSSession 在脚本中失败,在 shell 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40940819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com