与'有问题;获取凭证';关于Powershell脚本

与'有问题;获取凭证';关于Powershell脚本,powershell,cmdlets,Powershell,Cmdlets,我已创建以下Powershell脚本,但在查询这些远程VM时收到“拒绝访问/RPC服务器不可用”错误。我无法启动WMI,希望添加一些代码来提示输入我的Windows Credenaitls,因为这可以远程工作,而不是通过Powershell,作为一种解决方法 这可能是端口的问题吗?如果WMI服务被停止,是否会阻止我使用凭据唱这首歌 由于此脚本将由同事使用,我只想添加一个没有默认用户名/密码的提示,但在添加$Cred=Get Credentials时,我收到了错误 表达式或语句中出现意外标记“)”

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

这可能是端口的问题吗?如果WMI服务被停止,是否会阻止我使用凭据唱这首歌

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

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

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

Param(
$Cred=获取凭据,
[string]$path=“C:\LON3 Web服务器报告-$(获取日期-f dd_MM_yyyy).html”,
[阵列]$servers=@(“Svr1”、“Svr2”、“Svr3”)
)
函数获取正常运行时间
{Param([string[]]$servers)
Foreach($s,单位为$server)
{  
$os=获取WMIOObject-类win32_操作系统-cn$s
新对象psobject-属性@{
正常运行时间=((获取日期)-$os.converttodatetime($os.lastbootuptime))。天
服务器=$s
}
}     
} 
函数获取磁盘空间
{ 
Param([string[]]$servers)
Foreach($s,单位为$server)
{  
获取WmiObject-类win32_卷-cn$s|
选择对象@{LABEL='Server';表达式={$s},
字母、标签、,
@{LABEL=“Total(GB)”;表达式={{0:N2}”-f($\容量/1GB)},
@{LABEL=“空闲空间(GB)”;表达式={{0:N2}”-f($\ freespace/1GB)},
@{LABEL=“自由百分比(%)”;表达式={{0:N2})-f($\.FreeSpace/$\.Capacity)*100)},
@{LABEL=“使用率百分比(%)”;表达式={{0:N2})-f(($.Capacity-$.freespace)/$.Capacity)*100)}
}
}
函数Get MemoryUsage
{ 
Param([string[]]$servers)
Foreach($s,单位为$server)
{  
获取WmiObject-类win32_OperatingSystem-cn$s|
选择对象@{LABEL='Server';表达式={$s},
@{LABEL=“总物理内存(MB)”;表达式={{0:N0}”-f($\ totalvisiblememorysize/1024))},
@{LABEL=“空闲物理内存(MB)”;表达式={{0:N0})-f(($.freephycalmemory/1024))},
@{LABEL=“总虚拟内存(MB)”;表达式={{0:N0}”-f($\ totalvirtualmemorysize/1024))},
@{LABEL=“空闲虚拟内存(MB)”;表达式={{0:N0}”-f($\ freevirtualmemory/1024))}
}
}
$upTime=获取正常运行时间-服务器$servers |
转换为Html-作为表-片段-预内容“
创建日期:$(获取日期)
服务器正常运行时间“|输出字符串
$disk=获取磁盘空间-服务器$servers |
转换为Html-作为表-片段-预内容“
磁盘“|输出字符串
$memory=Get MemoryUsage-servers$servers |
转换为Html-作为表-片段-预内容“
内存使用“|输出字符串
$head=@'
身体{
字体系列:Verdana、Geneva、Arial、Helvetica、sans serif;
}
桌子{
边界塌陷:塌陷;
边界:无;
字体:10号Verdana,日内瓦,Arial,Helvetica,无衬线;
颜色:黑色;
边缘底部:10px;
}
表td{
字体大小:12px;
左侧填充:0px;
右边填充:20px;
文本对齐:左对齐;
}
表th{
字体大小:12px;
字体大小:粗体;
左侧填充:0px;
右边填充:20px;
文本对齐:左对齐;
}
h2{清除:两个;字体大小:130%;颜色:354B5E;}
h3{
明确:两者皆有;
字体大小:75%;
左边距:20px;
边缘顶部:30px;
颜色:#475F77;
}
p{左边距:20px;字体大小:12px;}
表.列表{float:left;}
表4.1 td:n个孩子(1){
字体大小:粗体;
右边框:1px灰色实体;
文本对齐:右对齐;
}
table.list td:n子(2){左填充:7px;}
表tr:n个孩子(偶数)td:n个孩子(偶数){背景:#bbbbbbbb;}
表tr:n个孩子(奇数)td:n个孩子(奇数){背景:#f2f2;}
表tr:n个孩子(偶数)td:n个孩子(奇数){背景:#dddddddd;}
表tr:n个孩子(奇数)td:n个孩子(偶数){背景:#e5;}
div.column{width:320px;float:left;}
div.first{右填充:20px;右边框:1px灰色实心;}
第二节{左边距:30px;}
表{左边距:20px;}
–>
'@
转换为Html-Head$Head-PreContent“每日状态报告-LON3 Web服务器”-后内容$upTime、$disk、$memory>>$path
调用项$path

不带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") 

不带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") 

谢谢@freakydinde凭证框现在按预期显示。由于这些服务器是远程托管的,所以有人建议我需要使用“New PSSession”和Invoke命令来执行此操作。这对我来说是全新的,但我会看一看。若要使用远程会话,必须在目标上启用winRM,否则您可以使用powershell命令:Enable psremoting我现在来看看并尝试一下!谢谢@freakydinde凭证框现在按预期显示。由于这些服务器是远程托管的,所以有人建议我需要使用“New PSSession”和Invoke命令来执行此操作。这对我来说是全新的,但我会看一看。若要使用远程会话,必须在目标上启用winRM,否则您可以使用powershell命令:Enable psremoting我现在来看看并尝试一下!