当前位置: 首页 > 知识库问答 >
问题:

Powershell脚本上的获取凭据有问题

汪翰墨
2023-03-14

我已经创建了下面的Powershell脚本,但在查询这些远程虚拟机时收到“拒绝访问/RPC服务器不可用”错误。我无法启动WMI,并希望添加一些代码来提示我的Windows Credenaitls,因为这可以远程工作,而不是通过Powershell,作为一种解决方法。

这可能是一个港口的问题吗?WMI服务会被停止吗?会不会阻止我用我的凭据唱这首歌?

由于此脚本将由同事使用,我只想添加一个没有默认用户名/密码的提示,但在添加$Cred=Get Credentials时,我收到了错误;

表达式或语句中的意外标记“)”。CategoryInfo:ParserError:(:)[],ParentContainerErrorRecordException FullyQualifiedErrorId:MissingExpressionAfterToken

我的代码如下-我还需要帮助添加部件-凭证$Cred(如果正确);

Param(
$Cred = Get-Credentials,
  [string]$path = "C:\LON3 Web Server Report - $(get-date -f dd_MM_yyyy).html",
  [array]$servers = @("Svr1","Svr2","Svr3")
)

Function Get-UpTime 
{ Param ([string[]]$servers) 
  Foreach ($s in $servers)  
   {  
    $os = Get-WmiObject -class win32_OperatingSystem -cn $s
     New-Object psobject -Property @{  
       Uptime = ((get-date) - $os.converttodatetime($os.lastbootuptime)).Days 
       Server=$s  
         }
        }     
       } 

Function Get-DiskSpace 
{ 
 Param ([string[]]$servers) 
  Foreach ($s in $servers)  
   {  
     Get-WmiObject -Class win32_volume -cn $s |
       Select-Object @{LABEL='Server';EXPRESSION={$s}}, 
         driveletter, label,
         @{LABEL=" Total (GB)"; Expression = {" {0:N2} " -f ($_.capacity / 1GB)}}, 
         @{LABEL=" Free Space (GB) ";EXPRESSION={" {0:N2} " -f ($_.freespace/1GB)}},
         @{LABEL=" Percent Free (%) ";Expression = { "{0:N2} " -f (($_.FreeSpace / $_.Capacity)*100) }},
         @{LABEL=" Percent Usage (%) ";Expression = {" {0:N2} " -f ((($_.Capacity - $_.freespace)/$_.Capacity)*100) }}           
    }
}

Function Get-MemoryUsage 
{ 
 Param ([string[]]$servers) 
  Foreach ($s in $servers)  
   {  
     Get-WmiObject -Class win32_OperatingSystem -cn $s |
       Select-Object @{LABEL='Server';EXPRESSION={$s}}, 
         @{LABEL=" Total Physical Memory (MB) "; Expression = {" {0:N0} " -f (($_.totalvisiblememorysize / 1024))}},
         @{LABEL=" Free Physical Memory (MB) "; Expression = {" {0:N0} " -f (($_.freephysicalmemory / 1024))}},
         @{LABEL=" Total Virtual Memory (MB) "; Expression = {" {0:N0} " -f (($_.totalvirtualmemorysize / 1024))}}, 
         @{LABEL=" Free Virtual Memory (MB) "; Expression = {" {0:N0} " -f (($_.freevirtualmemory / 1024))}}     
    }
}

$upTime = Get-UpTime -servers $servers |  
ConvertTo-Html -As Table -Fragment -PreContent " 
  Created on: $(get-date)
  <h2>Server Uptime</h2> " | Out-String 

$disk = Get-DiskSpace -servers $servers |  
ConvertTo-Html -As Table -Fragment -PreContent " 
  <h2>Disk</h2> "| Out-String

$memory = Get-MemoryUsage -servers $servers |  
ConvertTo-Html -As Table -Fragment -PreContent " 
  <h2>Memory Usage</h2> "| Out-String    

$head = @'
<style media='screen'>
body {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
}

table{
border-collapse: collapse;
border: none;
font: 10pt Verdana, Geneva, Arial, Helvetica, sans-serif;
color: black;
margin-bottom: 10px;
}

table td{
font-size: 12px;
padding-left: 0px;
padding-right: 20px;
text-align: left;
}

table th {
font-size: 12px;
font-weight: bold;
padding-left: 0px;
padding-right: 20px;
text-align: left;
}

h2{ clear: both; font-size: 130%;color:#354B5E; }

h3{
clear: both;
font-size: 75%;
margin-left: 20px;
margin-top: 30px;
color:#475F77;
}

p{ margin-left: 20px; font-size: 12px; }

table.list{ float: left; }

table.list td:nth-child(1){
font-weight: bold;
border-right: 1px grey solid;
text-align: right;
}

table.list td:nth-child(2){ padding-left: 7px; }
table tr:nth-child(even) td:nth-child(even){ background: #BBBBBB; }
table tr:nth-child(odd) td:nth-child(odd){ background: #F2F2F2; }
table tr:nth-child(even) td:nth-child(odd){ background: #DDDDDD; }
table tr:nth-child(odd) td:nth-child(even){ background: #E5E5E5; }
div.column { width: 320px; float: left; }
div.first{ padding-right: 20px; border-right: 1px grey solid; }
div.second{ margin-left: 30px; }
table{ margin-left: 20px; }
–>
</style>
<style media='print'>

</style>
'@

ConvertTo-Html -Head $head -PreContent "<h1>Daily Status Report - LON3 Web Servers</h1>" -PostContent $upTime, $disk, $memory >> $path  
Invoke-Item $path

共有1个答案

闽承望
2023-03-14

不带S的凭证,括号内的函数。

Param(
$Cred = $(Get-Credential),
  [string]$path = "C:\LON3 Web Server Report - $(get-date -f dd_MM_yyyy).html",
  [array]$servers = @("Svr1","Svr2","Svr3")
)

顺便说一下,稍微关注脚本约定,您的参数声明将看起来:

[CmdLetBinding()]
Param ( [Parameter(Mandatory=$false,Position=0)][pscredential]$credential = $(Get-Credential),
        [Parameter(Mandatory=$false,Position=1)][string]$path = "C:\LON3 Web Server Report - $(get-date -f dd_MM_yyyy).html", 
        [Parameter(Mandatory=$false,Position=2)][array]$servers = @("Svr1","Svr2","Svr3") 
 类似资料:
  • 本文向大家介绍PowerShell中获取当前运行脚本路径的方法,包括了PowerShell中获取当前运行脚本路径的方法的使用技巧和注意事项,需要的朋友参考一下 在运行脚本的时候,有时候需要通过脚本文件所在位置的相对路径来做一些事,比如执行另一个脚本。以前在CMD时代,可以通过%~dp0来获取脚本所在的文件夹,那在PowerShell中要怎么做呢? 很简单,通过内置的$MyInvocation变量:

  • 我尝试了许多不同的方法,试图使用HttpURLConnection将数据从我的Android应用程序上传到我的服务器上的PHP脚本,但在服务器上由PHP创建的文件中没有显示任何内容。我成功地使用了HTTPClient,但是我必须切换到使用HttpURLConnection。该应用程序在运行时不会崩溃。我确信我忽略了一些简单的东西。我的PHP脚本运行良好,甚至返回了预期的响应,但是我还没有发现我的A

  • 我试图创建一个chatbot,它向spring-boot应用程序发出get请求,而spring boot应用程序向Dialogflow V2发出API调用。我试图通过GRPC访问Dialogflow V2 API。我已经创建了一个服务帐户和导出服务帐户密钥文件,并将其添加到spring-boot应用程序中。 当我试图从spring-boot应用程序向dialogflow发送请求时,我出现了以下错误

  • 问题内容: 我正在尝试从Jenkins运行PowerShell脚本,但是它似乎完全忽略了执行策略!通过直接执行powershell.exe或使用PowerShell插件来实现 附加信息: Jenkins作为Windows服务运行(使用本地系统帐户,非交互式)。连接到该服务器并检查执行策略确实是: 但是,在运行Jenkins构建时,情况并非如此。这是在构建步骤中执行的输出: 我还尝试从构建步骤明确设

  • 问题内容: 在CSS中,任何图像路径都相对于CSS文件位置。 f.ex如果我放入CSS文件并使用类似 浏览器将查找有意义的图像。 是否可以在javascript中做同样的事情? F.ex如果我包括以下代码并将其放在其中: 找不到图片,因为浏览器使用HTML文件作为起点,而不是脚本位置。我希望能够像CSS一样使用脚本位置作为起点。 这可能吗? 问题答案: 按照上面的方法在DOM中搜索您自己的标记是可

  • 问题内容: 我正在尝试编写脚本来获取服务器上的所有IP地址。该脚本应可在所有主要发行版上使用。这是我所拥有的: 导致: 我如何首先删除前缀?第二,如何排除? 问题答案: 不需要。这是一种使用方法: 仅列出地址: 列出设备和地址: