【问题标题】:How to run powershell script using default credential from sql job agent如何使用来自 sql 作业代理的默认凭据运行 powershell 脚本
【发布时间】:2016-03-09 04:01:27
【问题描述】:

我正在从共享点下载文件。 我已经在 SQL 作业代理中安排了作业 当我使用以下代码时它工作正常

 $UserName = "xxxx"

$PswdPath = "D:\securestring.txt"
$SecurePassword = cat $PswdPath| convertto-securestring
$fileName = [System.IO.Path]::GetFileName($FileUrl)
$DownloadPath = "D:\Excel\"
$downloadFilePath = [System.IO.Path]::Combine($DownloadPath,$fileName)

$client = New-Object System.Net.WebClient 
$client.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
$client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f")
$client.DownloadFile($FileUrl, $downloadFilePath)
$client.Dispose()

但我面临的问题是,每当我更新密码时,我也需要更新安全字符串

所以我想使用默认凭据

所以我使用了以下脚本

$webclient = New-Object System.Net.WebClient

$webclient.UseDefaultCredentials = $true
$webclient.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f")
$webclient.DownloadFile($FileUrl, $DownloadPath)

但由于以下错误而失败

Exception calling "DownloadFile" with "2" argument(s): "The remote server returned an error: (401) Unauthorized."

浏览了不同的博客,所有博客都提出了我所遵循的相同方法 有这方面的帮助吗?

【问题讨论】:

  • 从什么看到你的第二个解决方案是好的,但你确定运行 sql 作业的帐户是否需要所有权限?.i联系你的 dba 并查看 sql server 上的哪个帐户运行 sql 作业更改它或给它良好的权限来访问您的网络客户端。 Agent Job 是一个服务帐户,它在 sql server 中没有太多权限
  • 我们运行该作业的帐户也没有对 webclient 的管理员访问权限。我们现在提供的用户名(第一种方法),我们用来运行 sql 作业的帐户
  • 你能在“servivce”下检查你有一个叫做“Agent SQL Server”的东西并检查运行它的会话吗?检查此帐户的域权限是管理员帐户吗?是否允许执行脚本写入磁盘(因为您似乎下载了一些东西?)尝试使用代理帐户从 sql server 启动您的 powershell 以检查是否发生相同的错误。

标签: powershell sharepoint sharepoint-2010 powershell-2.0 sql-job


【解决方案1】:

据我了解,默认凭据用户的帐户和密码将启动 sql 代理进程,并且由于它与 SharePoint 在线帐户不匹配,因此它将失败。如果您创建一个在更改密码后更新所有安全字符串的 powershell 会更容易。

【讨论】:

  • 我们不需要密码依赖脚本。如果你明白我的意思
猜你喜欢
  • 2017-06-05
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
相关资源
最近更新 更多