gpt4 book ai didi

powershell - 如果我使用-computerName,powershell invoke-command将不起作用

转载 作者:行者123 更新时间:2023-12-03 01:20:34 26 4
gpt4 key购买 nike

我想在当前用户的本地或远程计算机中执行以下代码。

$BackUpSqlAgentAndRemoveOldbackup = {
param([string]$AppServer,[string]$SqlInstance,[string]$BackupShare,[string]$alias)

[Environment]::UserName #I got same user name in all cases.

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | Out-Null

$server = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $SqlInstance

$backupName = 'SqlAgentJob_' + $SqlInstance + '_' + (Get-Date –format ‘yyyyMMdd_HHmm’) + '_' + $alias + '.sql'
$backupPath = join-path $BackupShare $backupName

$oldBackups = Get-ChildItem $backupShare | where { ( $_.name -like 'SqlAgentJob_*.sql' ) }
$server.JobServer.Jobs.Script() | Out-File -filepath $backupPath
foreach ( $item in $oldBackups ) { remove-item $item.fullName }
}

@argList是
@('hafcapp-1', 'hafcsql-1', '\\Host5FileSrv\Backup\test','auto')

我注意到

这一项,效果很好(没有-comupterName和-session)
Invoke-Command -ScriptBlock $BackUpSqlAgentAndRemoveOldbackup -argumentList $argList

这一次,它抛出执行(我也尝试过“-session”,得到相同的结果)
Invoke-Command -computerName localhost -ScriptBlock $BackUpSqlAgentAndRemoveOldbackup -argumentList $argList

异常如下所示,似乎无法访问该文件夹。
Cannot find path '\\Host5FileSrv\Backup\test' because it does not exist.
+ CategoryInfo : ObjectNotFound: (\\Host5FileSrv\Backup\test:String) [Get-ChildItem], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

You cannot call a method on a null-valued expression.
+ CategoryInfo : InvalidOperation: (Script:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Cannot bind argument to parameter 'Path' because it is null.
+ CategoryInfo : InvalidData: (:) [Remove-Item], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.RemoveItemCommand

有谁知道我要添加computerName或 session 该怎么办?
(注意:[Environment]::UserName返回相同的用户)

最佳答案

您遇到了双跳问题。您的凭据可以传输到下一台计算机(第一跳),但不能再传输(第二跳)。这意味着您不能使用在远程计算机(localhost)上执行Invoke-Command的计算机的凭据连接到文件共享(\ Host5FileSrv \ Backup)。即使您将localhost用作计算机名,它仍在远程处理。解决方案可以是CredSSP。有关更多信息,请参见herehere

关于powershell - 如果我使用-computerName,powershell invoke-command将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718335/

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