【问题标题】:running remotely ps commands远程运行ps命令
【发布时间】:2020-09-03 20:13:30
【问题描述】:

我写了一个脚本,它就像一个 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 上运行良好),知道为什么吗?

【问题讨论】:

    标签: windows powershell server invoke


    【解决方案1】:

    如下所示编写您的 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 的管理员级别访问权限或使用实际具有访问权限的帐户的凭据。

    【讨论】:

    • 嗨,谢谢,但我认为这行有问题:``` $SWITCH = Invoke-Command -ComputerName "$DCNAME" -ScriptBlock {Get-ADOrganizationalUnit -filter * -Property CanonicalName | Where-Object {$_.CanonicalName -eq $listBox2.SelectedItem}}``` $switch 为空
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2018-03-03
    • 2012-05-23
    • 2016-11-09
    • 2021-10-08
    • 2014-10-07
    • 2017-01-12
    相关资源
    最近更新 更多