windows - 远程运行ps命令
问题描述
我写了一个脚本,它就像一个 gpo 编辑器,它可以获取一些 GPO 和 OU 并根据用户的意愿链接它们或取消链接它们。现在这个脚本在域控制器机器上运行时确实可以工作,但我需要它在域上的 Windows 10 机器工作站上运行。所以我需要在向用户显示 GUI 时进行调整,所有代码都必须调用 dc 上的命令。我不知道是什么问题,但是当我手动输入命令时,它可以工作,并且当它作为脚本运行时,我会遇到错误:例如,这是一个链接按钮的功能。(我有一个带有 2 个列表框的 gui。一个显示 GPO,一个显示 OU(ou 显示为 CanonicalName 而不是 Distinguishedname,因此 $SWITCH 变量来回显示,因此用户将以更友好的方式看到它)
function LinkFn {
$ResultsTextBox.clear()
#This $SWITCH is used to Translate the user selection from the OU listbox from canonical back to distinguishedname
$SWITCH = Get-ADOrganizationalUnit -filter * -Property CanonicalName | Where-Object {$_.CanonicalName -eq $listBox2.SelectedItem}
ForEach ($line in $listBox1.selecteditems){
try {
Invoke-Command -ComputerName "$DCNAME" -ScriptBlock {New-GPlink -name $line -target $SWITCH -ErrorAction STOP | Out-null}
$ResultsTextBox.AppendText("`n GPO: $line HAVE BEEN LINKED Successfully.`n")
}
catch{
$ResultsTextBox.AppendText("`n$line ALREADY LINKED! TO THIS OU `n")
}}}
有人可以帮忙吗?
从我所看到的,我认为代码行有问题:
$SWITCH = Invoke-Command -ComputerName "$DCNAME" -ScriptBlock {Get-ADOrganizationalUnit -filter * -Property CanonicalName | Where-Object {$_.CanonicalName -eq $listBox2.SelectedItem}}
$switch 是空的(它在 dc 上运行良好),知道为什么吗?
解决方案
像下面这样写你的 try catch 块。您必须使用$using:variable
在脚本块之外声明的变量。
try {
Invoke-Command -ComputerName "$DCNAME" -ScriptBlock {New-GPlink -name $using:line -target $using:SWITCH -ErrorAction STOP | Out-null}
$ResultsTextBox.AppendText("`n GPO: $line HAVE BEEN LINKED Successfully.`n")
}
catch{
$ResultsTextBox.AppendText("`n$line ALREADY LINKED! TO THIS OU `n")
}
此外,如果用户无权连接/远程连接到 DC,这将不起作用。运行该脚本的用户将需要对 DC 的管理员级别访问权限或使用实际具有访问权限的帐户的凭据。
推荐阅读
- c# - 远程服务器返回错误 (404) 未找到。在 system.net.httpwebrequest.getresponse()
- symfony - Symfony + Forms,by_reference = true 和 CollectionType 字段中的 allow_add
- mysql - MySQL Workbench 中的 For 循环
- python - 通过 buildozer 将 py 文件编译为 apk 时出现问题
- django - 通过 Django 发送电子邮件时出现 SSL 错误
- python - 将字节转换为二进制字符串的简单方法是什么?
- c# - 如果 C# 项目具有 .Netframework 依赖项,是否可以将其构建为 .Netcore 应用程序
- android - Android Studio 3.5.2 离线设置错误:app@debug/compileClasspath
- php - DD 在嵌套的 foreach 循环中不起作用
- apache-camel - 如何在 Camel 中处理多个 CXF 端点?