使用 Powershell 从 Servicenow 票中下载附件 excel 文件
Use Powershell to download attached excel file from Servicenow ticket
我目前正在开发一个 powershell 脚本,它应该能够从现在的服务票中下载附加的 excel 文件,在我解释更多之前,请参阅下面的自动化基本流程。
- 用户将被要求输入票号。
- 然后系统会找到那个incident ticket来准确获取需要的excel文件(我在网上看到需要用sys_id)。
- 然后它将被下载到用户机器上的特定路径。例如:"C:\downloads\Demo\".
在这一切之后,我在网上找到了一个示例脚本,我正在尝试对其进行配置以满足我的需要;但是,我不确定从哪里获取该示例脚本的值。您可以查看脚本下方的项目符号以了解我想到的问题。
$IncidentNumber = Read-Host -Prompt 'Enter Incident Request #'
#$admin = "admin"
#$password = "admin" | ConvertTo-SecureString -AsPlainText -Force
#$Credential = New-Object pscredential -ArgumentList ($admin,$password)
$Uri = "https://dev42835.service-now.com/api/now/table/incident?sysparm_query=number=$($IncidentNumber)&sysparm_fields=sys_id&sysparm_limit=1"
$IncidentResult = Invoke-RestMethod -Uri $Uri #-Method Get -Credential $Credential
if($IncidentResult.result.sys_id -ne $null) {
$IncidentAttachments = Invoke-RestMethod -Uri "https://dev42835.service-now.com/api/now/attachment?sysparm_query=table_sys_id=$($IncidentResult.result.sys_id)" #-Method Get -Credential $Credential
$IncidentAttachments.result | Select file_name , download_link
}
else{
"Incident Not Found!"
}
- 我真的需要 运行 脚本的凭据吗?如果是,有没有办法
删除凭据的需要?
- 我在哪里可以获得分配给 $URI 变量的 URL?
我是 Powershell 自动化的新手,所以如果您能推荐更好的方法,我将不胜感激。
是的,您需要凭据。
您的 URI 是您的 servicenow 实例的 URL。更改 dev42835 部分以匹配。如果您不确定您的实例,请联系 servicenow 支持。
https://dev42835.service-now.com
如果您使用 REST API 浏览器,您可以查看 API 端点和版本,这将有助于形成您的请求。您需要具有 rest_api_explorer 角色才能访问 REST API Explorer。如果您没有此角色,请联系您的服务管理员请求它。
是的,您需要凭据,但不要像那样对它们进行硬编码。相反,您可以使用内置方法 Get-Credential
来安全地收集您的用户名和密码。每次 运行 时,用户都必须输入自己的 ServiceNow 凭据。
我的版本只有一件事需要配置,即特定于您的租户的 $SubDomain
变量。
$SubDomain = "YourServiceNowSubdomaingoeshere" # Configure this per tenant
$Credential = Get-Credential
If(!$Credential){
# User Cancelled
exit 1
}
$IncidentNumber = Read-Host -Prompt 'Enter Incident Request #'
$Uri = "https://$SubDomain.service-now.com/api/now/table/incident?sysparm_query=number=$($IncidentNumber)&sysparm_fields=sys_id&sysparm_limit=1"
$IncidentResult = Invoke-RestMethod -Uri $Uri -Method Get -Credential $Credential
if($IncidentResult.result.sys_id -ne $null) {
$IncidentAttachments = Invoke-RestMethod -Uri "https://$SubDomain.service-now.com/api/now/attachment?sysparm_query=table_sys_id=$($IncidentResult.result.sys_id)" -Method Get -Credential $Credential
$IncidentAttachments.result | Select file_name , download_link
}
else{
"Incident Not Found!"
}
我目前正在开发一个 powershell 脚本,它应该能够从现在的服务票中下载附加的 excel 文件,在我解释更多之前,请参阅下面的自动化基本流程。
- 用户将被要求输入票号。
- 然后系统会找到那个incident ticket来准确获取需要的excel文件(我在网上看到需要用sys_id)。
- 然后它将被下载到用户机器上的特定路径。例如:"C:\downloads\Demo\".
在这一切之后,我在网上找到了一个示例脚本,我正在尝试对其进行配置以满足我的需要;但是,我不确定从哪里获取该示例脚本的值。您可以查看脚本下方的项目符号以了解我想到的问题。
$IncidentNumber = Read-Host -Prompt 'Enter Incident Request #'
#$admin = "admin"
#$password = "admin" | ConvertTo-SecureString -AsPlainText -Force
#$Credential = New-Object pscredential -ArgumentList ($admin,$password)
$Uri = "https://dev42835.service-now.com/api/now/table/incident?sysparm_query=number=$($IncidentNumber)&sysparm_fields=sys_id&sysparm_limit=1"
$IncidentResult = Invoke-RestMethod -Uri $Uri #-Method Get -Credential $Credential
if($IncidentResult.result.sys_id -ne $null) {
$IncidentAttachments = Invoke-RestMethod -Uri "https://dev42835.service-now.com/api/now/attachment?sysparm_query=table_sys_id=$($IncidentResult.result.sys_id)" #-Method Get -Credential $Credential
$IncidentAttachments.result | Select file_name , download_link
}
else{
"Incident Not Found!"
}
- 我真的需要 运行 脚本的凭据吗?如果是,有没有办法 删除凭据的需要?
- 我在哪里可以获得分配给 $URI 变量的 URL?
我是 Powershell 自动化的新手,所以如果您能推荐更好的方法,我将不胜感激。
是的,您需要凭据。
您的 URI 是您的 servicenow 实例的 URL。更改 dev42835 部分以匹配。如果您不确定您的实例,请联系 servicenow 支持。 https://dev42835.service-now.com
如果您使用 REST API 浏览器,您可以查看 API 端点和版本,这将有助于形成您的请求。您需要具有 rest_api_explorer 角色才能访问 REST API Explorer。如果您没有此角色,请联系您的服务管理员请求它。
是的,您需要凭据,但不要像那样对它们进行硬编码。相反,您可以使用内置方法 Get-Credential
来安全地收集您的用户名和密码。每次 运行 时,用户都必须输入自己的 ServiceNow 凭据。
我的版本只有一件事需要配置,即特定于您的租户的 $SubDomain
变量。
$SubDomain = "YourServiceNowSubdomaingoeshere" # Configure this per tenant
$Credential = Get-Credential
If(!$Credential){
# User Cancelled
exit 1
}
$IncidentNumber = Read-Host -Prompt 'Enter Incident Request #'
$Uri = "https://$SubDomain.service-now.com/api/now/table/incident?sysparm_query=number=$($IncidentNumber)&sysparm_fields=sys_id&sysparm_limit=1"
$IncidentResult = Invoke-RestMethod -Uri $Uri -Method Get -Credential $Credential
if($IncidentResult.result.sys_id -ne $null) {
$IncidentAttachments = Invoke-RestMethod -Uri "https://$SubDomain.service-now.com/api/now/attachment?sysparm_query=table_sys_id=$($IncidentResult.result.sys_id)" -Method Get -Credential $Credential
$IncidentAttachments.result | Select file_name , download_link
}
else{
"Incident Not Found!"
}